溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

DVWA系列之10 命令執(zhí)行漏洞的挖掘與防御

發(fā)布時(shí)間:2020-07-18 19:01:40 來源:網(wǎng)絡(luò) 閱讀:2190 作者:yttitan 欄目:安全技術(shù)

通用的命令執(zhí)行漏洞防御方法通常是使用兩個(gè)函數(shù):EscapeShellCmd和EscapeShellArg,下面分別來分析這兩個(gè)函數(shù)。

EscapeShellCmd()函數(shù)可以把一個(gè)字符串中所有可能瞞過Shell而去執(zhí)行另外一個(gè)命令的字符轉(zhuǎn)義,比如管道符(|)、分號(;)、重定向(>)、從文件讀入(<)等。

下面我們來測試一下這個(gè)函數(shù)是否管用,以low級別的命令執(zhí)行漏洞為例,對應(yīng)的網(wǎng)頁文件為D:\AppServ\www\dvwa\vulnerabilities\exec\source\low.php,對文件進(jìn)行如下圖所示的修改,在ping命令之前加上EscapeShellCmd函數(shù)進(jìn)行過濾。

DVWA系列之10 命令執(zhí)行漏洞的挖掘與防御

將修改保存之后,轉(zhuǎn)換到low級別測試,發(fā)現(xiàn)我們之前的那些命令都不管用了。

接下來再分析一下EscapeShellArg()函數(shù),這個(gè)函數(shù)是專門用來處理命令的參數(shù)的,它在給定的字符串兩邊加上單引號,并把字符串中的單引號轉(zhuǎn)義,這樣這個(gè)字符串就可以安全地作為命令的參數(shù)。

我們同樣對網(wǎng)頁進(jìn)行修改,注意,EscapeShellArg()函數(shù)是專門對命令參數(shù)進(jìn)行處理的。

DVWA系列之10 命令執(zhí)行漏洞的挖掘與防御

保存修改之后,返回去進(jìn)行測試,發(fā)現(xiàn)之前的命令同樣也不管用了。

事實(shí)證明,這兩個(gè)函數(shù)還是很管用的。綜合比較一下,EscapeShellCmd函數(shù)是基于黑名單的,而黑名單都不是完全可靠的,***總有方法繞過,所以從這個(gè)意義上來說EscapeShellArg相對要更安全一些。

下面再分析一下如何挖掘命令執(zhí)行漏洞,方法其實(shí)很簡單,就是從代碼中查找那些可以執(zhí)行系統(tǒng)命令的函數(shù)。如果這些函數(shù)中所執(zhí)行的命令參數(shù)是由用戶輸入的,而且沒有經(jīng)過任何的過濾,那么便有可能存在漏洞。

PHP中可以調(diào)用系統(tǒng)命令的函數(shù)主要包括:

exec system popen passthru proc_open shell_exec

在進(jìn)行代碼搜索時(shí),仍然可以借助于之前介紹過的閃電文件搜索軟件。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI