1、基础设置
先把靶机和kali设置成net模式,确保在同一网段
2、扫描IP
用kali扫一下IP,查看靶机的IP
arp-scan -l
扫到IP是192.168.19.154
3、扫描靶机
找到靶机IP后,扫一下这个IP
dirb http://192.168.19.154
扫到了两个文件和一个目录,依次去查看一下
(1)第一个文件是一个html文件,给我们显示了,一个默认页面,接下来查看第二个文件
(2)第二个文件给我们显示了一个目录和一个php文件,待定,再看一下第三个目录
(3)第三个目录是被禁止访问的,那对于我们来说有用的就是刚刚kali扫出来的第二个文件了
4、查看文件
根据kali扫出来的第二个文件,我们依次在浏览器去查看一下第二个文件里面的东西
(1)第一个是一个xxe目录
找到一个登录页面,待定,再去查看一下第二个php文件
(2)第二个文件暂时没有显示,但是它的文件名是admin,在后面可能有用,但是现在我们攻击的点只能在这个登录页面上
5、访问文件
先随便输入一点东西,看一下页面的反应
通过上图我们可以看到,name上的1被显示到了页面上,说明这里是注入点,下面我们去抓包
6、漏洞利用
(1)观察数据包
抓到了登录页面的包,简单分析一下这个包的格式,我们可以清楚的看到下面的格式是xml漏洞格式,所以我们将在这里进行漏洞利用
(2)构造xml
首先我们需要把数据包发送到重放器模块,这样方便观察
其次,构造xml,刚刚我们有个admin.php文件没访问到东西,现在我们指定admin目录去看一下,应该可以发现什么
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[<!ELEMENT r ANY><!ENTITY test SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">]>
<root><name>&test;</name><password>1</password></root>
7、寻找答案
(1)解码
上面找到了一串base64编码,我们去解码一下
找到了用户名和一串用md5加密的密码,我们再去解码,得到了密码
(2)登录
用找到的用户名和密码登录一下
登录居然失败了,我们再去扫描一下xxe目录里看看有什么,因为刚刚扫出来的xxe目录后面还有东西
在这里也发现一个admin.php,我们去访问一下
看到也有登录框,我们把刚刚的用户名密码输入进去
提示我们flag在这里,点进去看一下
刚刚告诉我们flag在这里,但是进来之后却给我们报404错误,那肯定是在这里的,只要我们细心观察就可以看到一个新的文件,我们去查看一下
页面是空白的,我们查看一下源代码
提示我们flag在这串编码里,我们去解码,先尝试一下md5解码
无法识别的话,因为这是32位编码,那我们尝试用base32编码解码的方式去解码
成功解码,解码完成之后发现又是一个base64编码,我们再去解码
解码成功,提示我们flag在根目录下的etc下的flag.php文件里,我们去访问
访问不到,访问不到的话我们去bp里读取一下
我们发现又是一串编码,那我们再去解码
解出来的东西我们不认识,但是我们知道他是php代码,所以我们自己新建一个php文件,把代码写进去,然后访问自己的php文件看一下(记得要写到网站的根目录下)
写入1.php然后查看