web滲透——命令行注入

今天小編給大家演示一下DVWA——Command Injection(命令行注入)。

首先,我們聽說最多的肯定是SQL注入,其實注入的方法還有很多,比如說:xml、soap、郵件頭、crlf、代碼執行。

為什麼會出現這種漏洞了?

因為這些系統並沒有設計很好的過濾過程,所以產生漏洞,導致數據洩露。

接下來是實驗教程:

web滲透——命令行注入

首先我們這裡是LOW級別,我們查看頁面的源代碼:

{$cmd}"; } ?>

這段代碼主要功能是通過PING命令,PING用戶輸入的IP地址。

我給大家解釋一段這個代碼:

第一行:通過isset函數判斷是否為POST提供的值

第二行:通過POST提供的值發送給target變量(但是這裡沒有任何過濾)

接下來是if語句

If判斷系統是否為Windows,如果是CMD賦值為ping target,如果不是CMD賦值為ping -c 4 target

最後使用shell_exec執行cmd。

我們用&&執行

192.168.220.133&&net user(先執行ping 192.168.220.133 後執行net user)

Net user:賬戶名 查看賬戶屬性

web滲透——命令行注入

我們可以看到賬戶名為administrator,說明用&&可以執行命令

接下來我們把DVWA級別設為high(高)

web滲透——命令行注入

在查看一下源代碼:

web滲透——命令行注入

這時我們可以看到第三行已經進行了過濾

$substitutions = array( '&' => '', ';' => '', '| ' => '', '-' => '', '$' => '', '(' => '', ')' => '', '`' => '', '||' => '',

但是還是有方法繞過,他源碼裡面是'| ';後面多了一個空格,我們可以利用'|'繞過(這裡是沒空格的)

192.168.220.133|net user

web滲透——命令行注入

有人會問為什麼只執行了net user命令沒有執行ping 192.168.220.133

下面說一下命令連接符:

command1 && command2 先執行command1後執行command2

command1 | command2 只執行command2

command1 & command2 先執行command2後執行command1

那麼這個漏洞有什麼危害了?

我做個演示:

在LOW模式下,我們執行192.168.220.133&&netstat -a(查看開啟了哪些端口)

web滲透——命令行注入

web滲透——命令行注入

可以看到,如果被一些不法的人知道一些重要的端口開啟會怎樣了,結果可想而知,還可以刪除你的文件,可謂是毀滅性的。

總結:

1.如何防止這種漏洞產生,方法很多,我這裡就說DVWA中的方法,他對IP地址進行了限制,必須是8位 數組.數組.數組.數組才會被接收。

web滲透——命令行注入

2. 為什麼會想到用命令連接符,而不是用XSS,sql注入一個一個試了?

我們首先思考一下這一個網站實現了什麼功能,能給我們帶來什麼?這裡是一個ping地址的網站,那麼ping在哪裡執行了?DOS窗口裡面吧,DOS窗口能幹什麼,訪問、讀取、刪除等等功能都可以實現,所以我們要有這種舉一反三發現問題的意識。


分享到:


相關文章: