🎯
PHP代码审计入门指南
  • PHP代码审计入门指南
  • 序言
  • PHP审计基础
    • ⚒️工具准备
    • VS CODE 常用快捷键
    • PHP代码审计思路
    • 💉PHP用户可控输入速查表
    • 🧬PHP敏感函数速查表
    • 🩹PHP原生过滤方法
    • PHP动态调试-Xdebug安装配置
  • PHP常见漏洞
    • 命令注入
    • 代码注入
    • 文件包含
    • SQL注入
    • 文件操作
    • XSS
    • SSRF
    • CSRF
    • XXE
    • 反序列化
    • LDAP注入
    • 其他漏洞
  • PHP常见框架
    • Thinkphp
    • Laravel
    • Codeigniter
    • Yii
    • Cakephp
  • PHP审计实例
    • -
  • 附录
    • PHP弱类型
  • 🎉总结
  • 🔗参考
由 GitBook 提供支持
在本页
  1. PHP常见漏洞

XXE

XML外部实体(注入) 攻击者利用xml的性质可以获取本地/远程文件内容 (不同于其他语言 PHP中xml实体可以使用PHP伪协议)

上一页CSRF下一页反序列化

最后更新于3年前

XML外部实体是XML的一个特性 XML可以使用外部实体引用来包含和解析其他文档

当然XML还有其他实体 详细内容可以参考

这里就不详细将利用技巧了

审计时如果发现使用了文末列表的函数 就要检查是否禁用了外部实体

libxml_disable_entity_loader(true); //禁用外部实体使用到的函数 参数为true时禁用

注意: php环境中libxml 版本>=2.9.0时外部实体默认禁用 (PHP版本 >=8.0时 就开始使用>=2.9.0版本的libxml 且libxml_disable_entity_loader函数被完全废弃 使用该函数会抛出错误)

漏洞常见处: 支付等回调api

函数
描述

DOMDocument::

loadXML

加载解析XML

<?php $xml=file_get_contents('php://input');

$dom=new DOMDocument(); $dom->loadXML($xml); $xml=simplexml_import_dom($dom); $xxe=$xml->xxe; echo $xxe; ?>

simplexml_load_string

加载解析XML字符串

$xml=simplexml_load_string($_REQUEST['xml']); print_r($xml);

simplexml_load_file

读取文件作为XML文档解析

simplexml_load_file("1.xml")

这个DTD教程