(渗透学习)XXE漏洞原理 & 挖掘 & 利用 & 防御

本文深入探讨了XML外部实体扩展(XXE)漏洞,从XML和DTD的基本概念出发,详细阐述了XXE的利用方式,包括读取文件、内网探测和命令执行。同时,介绍了手工测试、代码审计和自动化工具在挖掘XXE中的应用,并提出了禁用外部实体和过滤XML数据等防御措施。
摘要由CSDN通过智能技术生成

1、XML和XXE简介

xml和html结构类似,不同的是:

XML 被设计用来传输和存储数据。

HTML 被设计用来显示数据。

XML 文档结构包括 XML 声明DTD 文档类型定义(可选)、文档元素

(1)什么是DTD?

文档类型定义(DTD)可定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。

DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

① 内部的 DOCTYPE 声明:

<!DOCTYPE 根元素 [元素声明]>

如下就是一个典型的内部DTD声明 

<!--XML 声明-->
<?xml version="1.0"?>
<!--文档类型定义-->
<!DOCTYPE note [ <!--定义此文档是 note 类型的文档-->
<!ELEMENT note (to,from,heading,body)> <!--定义 note 元素有四个元素-->
<!ELEMENT to (#PCDATA)> <!--定义 to 元素为”#PCDATA”类型-->
<!ELEMENT from (#PCDATA)> <!--定义 from 元素为”#PCDATA”类型-->
<!ELEMENT head (#PCDATA)> <!--定义 head 元素为”#PCDATA”类型-->
<!ELEMENT body (#PCDATA)> <!--定义 body 元素为”#PCDATA”类型-->
]]]>
<!--文档元素-->
<note>
<to>Dave</to>
<from>Tom</from>
<head>Reminder</head>
<body>You are a good man</body>
</note>

② 外部引用:

<!DOCTYPE 根元素 SYSTEM ” 文件名 ”> 

如下xml代码引用了外部DTD,文件为“note.dtd” 

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> 

note.dtd:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT fro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值