您好,登錄后才能下訂單哦!
下面我們開始分析DVWA中的Command Execution命令執行漏洞。
首先仍是將DVWA Security設置為Low,選擇Command Execution,這里在文本框中輸入一個IP,點擊Submmit提交便可以執行ping命令。
點擊“View Source”查看網頁源碼。
可以看到,這里的數據是以post方式提交過來的,然后被賦值給了變量$target。
接下來有一個if語句,判斷條件是“stristr(php_uname('s'), 'Windows NT')”,這是用來判斷當前的系統是否是Windows,因為Windows和Linux下的ping命令執行參數是不同的。
再下面是將函數“shell_exec( 'ping ' . $target )”的值賦值給變量$cmd,并輸出$cmd的值,其實也就是在執行“shell_exec( 'ping ' . $target )”函數,因而shell_exec()函數就是這里的核心了。
shell_exec()函數的作用就是可以在PHP中去執行操作系統命令,因而如果不對用戶輸入的命令進行過濾,那么理論上就可以執行任意系統命令,也就相當于直接獲得了系統級的Shell,因而命令包含漏洞的威力相比SQL注入要大多了。
比如我們在文本框中輸入“127.0.0.1 | net user”,實際上就是通過管道符“|”去執行了“net user”命令。明白了原理之后,那么我們完全可以繼續執行“127.0.0.1 | net user test 123 /add”、“127.0.0.1 | net localgroup administrators test /add”命令,從而拿下整個服務器。
在DOS下允許同時執行多條命令的符號主要有以下幾個:
“|”:前面命令輸出結果作為后面命令的輸入內容;
“||”:前面命令執行失敗的時候才執行后面的命令;
“&”:前面命令執行后接著執行后面的命令;
“&&”:前面命令執行成功了才執行后面的命令。
如果是Linux系統,還可以使用分號(;),也可以同時執行多條命令。
另外還可以使用重定向(>)在服務器中生成文件,或是使用(<)從事先準備好的文件讀入命令等。
最后,大家可以分別用上面這些符號,自己來構造語句去執行相應的命令。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。