XXE(外部实体注入)

目录

学习xxe前提:了解xml格式

[1. XML基础](#1. XML基础)

[2. XXE基础知识](#2. XXE基础知识)

[2.1. 结构](#2.1. 结构)

[2.2. 定义与原理](#2.2. 定义与原理)

[2.3. XML实体类型](#2.3. XML实体类型)

[2.4. 攻击类型](#2.4. 攻击类型)

[2.5. 防御措施](#2.5. 防御措施)

[3. pikachu靶场xxe练习](#3. pikachu靶场xxe练习)


学习xxe前提:了解xml格式

1. XML基础

文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可以在 XML 文档内声明,也可以外部引用。

内部声明DTD

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

引用外部DTD文档

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

<!DOCTYPE 根元素 PUBLIC "public_ID" "文件名">


内部声明实体

<!ENTITY 实体名称 "实体的值">

引用外部实体

<!ENTITY 实体名称 SYSTEM "URI">

<!ENTITY 实体名称 PUBLIC "public_ID" "URI">

调用方式:&实体名称;

设计它的目的是传输数据。XML语言的出现核心是用来展示及数据的交互

2. XXE基础知识

2.1. 结构

2.2. 定义与原理

XXE(XML External Entity)即XML外部实体注入攻击 ,利用XML解析器的配置缺陷 ,通过构造恶意外部实体,读取文件、发起SSRF攻击或执行远程 代码 。XML允许自定义实体,当解析器处理外部实体(SYSTEM关键字)时,若未严格限制,攻击者可注入恶意实体访问系统资源。

服务端接收了并解析了来自用户端的xml数据,但是没有做到严格的分析和过滤,导致外部实体注入

2.3. XML实体类型

  • 内部实体 :在文档内定义,如 <!ENTITY name "value">
  • 外部实体 :引用外部资源,如 <!ENTITY ext SYSTEM "file:///etc/passwd">
  • 参数实体 :用于DTD内部,以%声明,如 <!ENTITY %n param "content">

%n表示=content,也可以理解为调用。

2.4. 攻击类型

  • 文件读取 :利用file://协议读取服务器文件(如/etc/passwd)。
  • SSRF(服务端请求伪造) :通过http://等协议探测内网服务。
  • 拒绝服务(DoS) :加载大文件(如/dev/random)耗尽资源。
  • 远程代码执行(RCE) :需特定环境支持(如PHP的expect模块)。
  • 综合能力,主要学会融会贯通,洞与洞之间的联通,

2.5. 防御措施

  • 禁用外部实体 :配置解析器禁用DTD和外部实体(如Java的DocumentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true))。
  • 使用安全解析器 :如Python的defusedxml库。
  • 输入过滤 :移除XML中的DOCTYPE声明和敏感关键字。
  • 数据格式替代:优先使用JSON等非XML格式。

3. pikachu靶场xxe练习

如图所示,图中具有一个接口,可以接受我所打入的xml代码。

现在我使用下面xml码传输数据

<?xml version = "1.0"?>

<!DOCTYPE note [

<!ENTITY hacker "shuaitan">

]>

<name>&hacker;</name>

具有回显

构造payload

接下来利用file协议进行敏感文件查看

查看文件: win.ini 该文件之前在文件包含时也查询过

是系统的默认文件

<?xml version = "1.0"?>

<!DOCTYPE note [

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

]>

<name>&hacker;</name>

敏感文件查看:

相关推荐
Hello--_--World4 分钟前
VUE:逻辑复用
前端·javascript·vue.js
zjeweler18 分钟前
网安护网面试-1-长亭护网面试
web安全·网络安全·面试·职场和发展
陶甜也21 分钟前
3D智慧城市:blender建模、骨骼、动画、VUE、threeJs引入渲染,飞行视角,涟漪、人物行走
前端·3d·vue·blender·threejs·模型
患得患失94926 分钟前
【前端websocket】企业级功能清单
前端·websocket·网络协议
落魄江湖行26 分钟前
基础篇四 Nuxt4 全局样式与 CSS 模块
前端·css·typescript·nuxt4
禅思院27 分钟前
前端性能优化:从"术"到"道"的完整修炼指南
前端·架构·前端框架
架构师老Y2 小时前
003、Python Web框架深度对比:Django vs Flask vs FastAPI
前端·python·django
小陈工4 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
网络安全许木7 小时前
自学渗透测试第11天(Linux压缩解压与磁盘管理)
linux·网络安全·渗透测试
xiaotao1319 小时前
第九章:Vite API 参考手册
前端·vite·前端打包