XXE漏洞1-XXE 漏洞简介-XML 语法-DTD 讲解-外部实体讲解

一.XXE漏洞简介及原理。

XXE(XML External Entity)漏洞是一种基于XML解析的安全漏洞,攻击者通过构造恶意的

XML文档,利用外部实体引用功能读取服务器上的敏感文件、执行远程请求或发起服务端请求伪造

(SSRF)攻击。XXE漏洞源于XML解析器未禁用外部实体加载功能。XML标准允许定义外部实

体,通过SYSTEM关键字引用本地或远程资源。当解析器处理包含恶意外部实体的XML输入时,

可能泄露系统文件或触发非预期网络请求。

二.XML文档介绍

XML指可扩展标记语言是一种标签语言,和HTML很类似。

XML的设计宗旨是传输数据,而非显示数据。HTML被设计用来显示数据。

XML标签没有被预定义,需要自行定义标签。

XML被设计为具有自我描述性。

XML是W3C的推荐标准。

下面进行简单的xml代码认识:

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget the meeting!</body>

</note>

这里注意三个点:

1.这里所以的标签全部是自己定义的,

2.第一行就是自我描述性的体现。

3.一定要严格闭合,上面有<note>下面也要有</note>,否则会报错。

4.严格区分大小写,闭合标签前后大小写一致。

在/var/www/html下写入note.xml。

然后浏览器查看即可。

三.XML DTD 介绍

拥有正确语法的 XML 被称为"形式良好"的 XML。
通过 DTD 验证的 XML 是"合法"的 XML。
DTD 全称是 The document type definition,即是文档类型定义,通过 DTD 验证 XML 是否合
法。
DTD 被包含在您的 XML 源文件中,它会被包装在一个 DOCTYPE 声明中:
ELEMENT就是元素的意思。

内部DTD文件:

<?xml version="1.0" ?>
<!DOCTYPE note [
**<!ELEMENT note (to,from,heading,body)>**对于元素note定义了其有四个内部元素。
**<!ELEMENT to (#PCDATA)>**对note下的to元素进行定义
**<!ELEMENT from (#PCDATA)>**对note下的from元素进行定义
**<!ELEMENT heading (#PCDATA)>**对note下的heading元素进行定义
**<!ELEMENT body (#PCDATA)>**对note下的body元素进行定义
]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

外部DTD文件:

在 XML 文档内部中引入外部 DTD 文件 note.dtd
<?xml version="1.0"?>
<!DOCTYPE noteSYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
就是利用SYSTEM引用外部note.dtd文件。
然后我们再创建一个note.dtd:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

四.实体介绍

什么是实体及实体的定义

Entity [ˈentəti] 实体,实体相当于一个变量,可以再DTD里进行定义:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ENTITY free "free nice">
定义了一个实体 free对其赋值 free nice

实体的调用

如下图所示:

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder
**&fjw;****</heading>
<body>Don't forget me this weekend!</body>
</note>**

实体的分类

1.通用实体

<!ENTITY fjw "fjw nice">

调用方式&fjw;

2.参数实体(只能在DTD内部调用)

<1ENTITY % fjw "fjw nice">

调用方式 %free;

外部实体的介绍

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ENTITY free SYSTEM "file:///var/www/free.txt">

然后再创建一个free.txt文件输入free附的值。

外部实体的调用还是一样的&free;

这就是外部实体。

注意:无论是外部DTD还是外部实体,都是XML文档解析时才会加载的。

相关推荐
用户9623779544820 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透6 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全