前言
我们在进入Meterpreter会话后经常会遇到执行不了shell命令的情况,报出各种不一样的错误提示,执行不了shell命令的原因有很多,如常见的:1、cmd.exe文件被降权或删除;2、PHP Payload不支持shell命令;3、安装有WAF或反病毒软件等,笔者这里也只是记录了以前在实战和本地测试中遇到的几个例子,在实际渗透测试过程中还得根据自身经验去分析判断其原因!
这应该是一些新手朋友刚学MSF时经常犯的一个错误,没有正确执行我们生成的Msf Payload,而是直接在浏览器URL中访问了监听的IP和端口http://192.168.1.120:443,如图8-11-1。
图8-11-1 直接访问监听IP:Port
(2) PHP Payload命令限制
Windows环境下通过php/meterpreter/reverse_tcp或php/meterpreter_reverse_tcp获取的会话很多命令和脚本都是执行不了的,如常用的ps、kill、shell、hashdump、mimikatz等,不过portfwd和execute可以执行,大家可以自己去测试一下!不能执行shell命令的原因可能是与目标的Web中间件IIS/Apache/Nginx或权限IUSR/Admin/System等有关,笔者当前的测试环境如下:
图8-11-2 IIS7.5 PHP5.3.0(IUSR)图8-11-3 Apache PHP5.4.45(SYSTEM)当cmd.exe文件被降权时在中国菜刀虚拟终端执行命令时就会提示“[Err] 拒绝访问”,这时我们虽然可以将Msf Payload上传至可读/写目录中来执行,但是在获取的Meterpreter会话中执行shell命令时会仍然会提示“Access is denied”拒绝访问,如图8-11-4、8-11-5。图8-11-4 中国菜刀执行Msf PayloadXP/2003中将cmd.exe文件删除后在Meterpreter会话执行shell命令时也会出现报错,但是能够进入Cmdshell执行命令,它会自己在C:\Windows\System32\目录下生成一个cmd.exe,如图8-11-6。通过白名单方式绕过WAF获取Meteroreter会话后执行shell时仍然会提示“Access is denied”拒绝访问,因为D盾、云锁、安全狗、护卫神等防护软件会对执行命令的行为进行拦截,如图8-11-7、8-11-8、8-11-9。但可尝试使用 ps、service_manager等命令来查看目标机器上是否存在WAF相关进程和服务,这里笔者只测试了D盾、网站安全狗和服务器安全狗,
图8-11-9 网站安全狗禁止IIS执行程序