xxe是什么:
- xml External Entity 即外部实体,从安全角度理解成xml External Entity attack xml 外部实体注入攻击
典型的xml分成三部分
- xml声明
- DTD部分(注入语句)
- xml部分
xxe原理:
有了xml实体,关键字SYSTEM会令xml解析器从uri中读取内容,并允许它在xml文档中被替换,因此,攻击者可以通过实体将他自定义的值发送给应用程序,然后让应用程序去呈现。简单来说,攻击者强制xml解析器去访问攻击者指定的资源内容(可能是系统上本地文件或远程系统上的文件)
典型DTD:
<?xml version="1.0">
<!DOCTYPE Rohit[
<!ENTITY entityex SYSTEM "file:///folder/file">
]>
<abc>&entityex;</abc>
xxe的怎么找:
- 看到数据包中有传递、返回xml代码
- 代码审计,全文搜索关键函数simplexml_load_string()、simplexml_load_file()
xxe修复:
- libxml_disable_entity_loader(true) //php禁止加载xml实体
- 过滤SYSTEM关键字
xxe总结:
- xml外部实体注入(目标执行了我们提交的xml代码)
- 危害程度与SSRF服务器端请求伪造接近
- 代码审计可以用关键函数搜索定位
- 可回显目标主机信息(需base64转码)