赞
踩
想要挖掘一个漏洞我们首先就要知道这个漏洞是如何产生的。
1.漏洞产生原理
XXE漏洞就是”攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题”
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入
2.漏洞利用
将payload注入XML文件中,一旦文件被执行,将会读取服务器上的本地文件,并对内网发起访问扫描内部网络端口。
有回显和无回显:有回显的情况可以直接在页面中看到Payload的执行结果或现象,无回显的情况又称为blind xxe可以使用外带数据通道提取数据
3.靶场案例讲解——使用pikachu-xxe讲解
在这里给大家推荐: http://114.116.45.110/里面有各种靶场,不想自己搭建的小伙伴可以使用一下。
正常回显XXE
正常回显XXE是最传统的XXE攻击,在利用过程中服务器会直接回显信息,可直接完成XXE攻击。
报错XXE
报错XXE是回显XXE攻击的一种特例,它与正常回显XXE的不同在于它在利用过程中服务器回显的是错误信息,可根据错误信息的不同判断是否注入成功。
盲注XXE
当服务器没有回显,就需要选择使用盲注了。可组合利用file协议来读取文件或http协议和ftp协议来查看日志。
1.查看受攻击机的服务器日志
2.通过Dnslog平台查看是否进行查询
3.Burp Collaborator Everywhere 插件验证
进入靶场可以看到一个接收xml数据的api,那么我们在实施攻击之前判断一下有无回显:
<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe "小黑子" > ]>
<a>&xxe;</a>
输入上述payload之后回显了”小黑子”说明存在回显。注意:只能判断是否存在回显,不能判断是否支持外部实体。
在知道存在回显后,可以尝试读取一些敏感目录,比如读取c:/windows/win.ini,它是每个windows系统都有的,linux系统的的话可以读取/etc/passwd,当然想要读取其他文件目录,只需更改绝对路径即可(file://协议只能用绝对路径)
payload:
<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> ]>
<a>&xxe;</a>
成功读取文件内容。
4.危害
1.DOS攻击
2.SSRF攻击
3.使用file协议读取任意文件
4.端口探测
5.利用支持的协议执行系统命令
5.防护
1.禁用外部实体
2.过滤和验证用户提交的XML数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。