漏洞挖掘 | 通过错误日志实现XXE外带

news2024/10/12 11:28:19

 介绍

在最近的一个项目中,我发现了一个与 XML 外部实体(XXE)攻击相关的重大安全问题。

本文讲述了我在项目中发现并利用 XXE 漏洞的过程,特别是通过一种非传统的方式——利用 Java 异常在日志文件中输出攻击结果。

什么是XXE?

XML 外部实体(XXE)是一种安全漏洞,通常出现在处理 XML 输入的应用程序中。在 XXE 攻击中,攻击者可以利用应用程序的 XML 解析器来引入外部实体,从而实现多种恶意行为,如读取本地文件、发起服务器请求,甚至在服务器上执行任意代码。如果不加以处理,这类漏洞可能导致严重后果,因此在网络安全领域中是一个至关重要的问题。

图片

问题:初步突破

在对我的最新项目进行全面测试时,我发现了一个令人担忧的功能。项目的解决方案允许上传包含 XML 标记的 schema 文件,这就为 XXE 漏洞打开了大门。

对此产生了兴趣后,我决定深入研究这一潜在威胁。我的第一次突破发生在发现了一个允许服务器端请求伪造(SSRF)漏洞的 XXE 漏洞。SSRF 是一种安全漏洞,攻击者可以利用它诱使服务器向内部网络中的其他资源或外部网站发起非预期的请求。

我通过在 schema 文件中注入以下 XXE 负载成功实现了这一漏洞:

图片

有了这个 payload 后,我简单地从模板创建了一个 schema 文件,并将 payload 添加到其中。

在创建完 schema 文件后,我继续将其上传到系统中:

图片

该应用程序在默认情况下会在上传后自动处理 schema 文件。在加载过程中,由于注入导致 schema 文件无效,会触发错误:

图片

尽管发生了错误,但注入的 XML 实体仍被处理,导致服务器后端执行了一次 HTTP 请求。这是此次发现的关键时刻,因为我成功实现了 SSRF(服务器端请求伪造)。

图片

很快我意识到,读取文件并不可行,因为没有直接的输出。我们得到的只是一个通用的错误信息。schema 文件需要遵循特定的模板,这使得使用包含多条指令的 DTD 技术变得不现实,因为在第一条指令之后就会引发 XML 解析错误。

利用服务器日志

但我并未气馁,决心找到一种方法来在目标机器上披露文件。在持续的探索中,我发现了一个解决方案:应用程序具有日志记录功能,并且可以显示日志。这一发现为我打开了新的路径。

我开始着手从已处理的注入 XML 实体中提取有价值的信息。

于是,我创建了一个包含声明实体的模板 schema 文件,加载了一个外部 XML DTD。

外部 DTD 允许应用程序引用一个独立文件来定义 XML 结构,从而为潜在的漏洞利用提供了可能性:

图片

接着,我在远程主机上准备了恶意的 evil.dtd 文件:

图片

与之前一样,我从模板创建了一个 schema 文件,并在其后附加了我的 payload:

图片

schema 文件上传成功,但加载过程由于错误而失败,情况如下:

图片

然而,这种方式仍会加载外部 DTD(evil.dtd)并处理它:

图片

DTD 文件中的 payload 通过引用一个不存在的文件触发了服务器异常。这个文件名是通过将 'nonexistent/' 路径与一个表示 C:/ 盘列表的字符串组合而成的。

基本上,未处理的异常文本将类似于:

 

Error, non-existing file at: file:///nonexistent/(C:/)LISTING.

这些文本将会出现在错误日志中:

图片

除了目录列表,这种技术还可以用来读取文件。通过操控 DTD 文件的内容,攻击者可以针对系统中的特定文件:

图片

图片

 

 申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

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

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

相关文章

基于STM32的太阳跟踪系统设计

引言 本项目设计了一个基于STM32的太阳跟踪系统,通过光敏传感器阵列实时检测太阳位置,并控制电机驱动太阳能板或光伏板跟随太阳移动,从而最大化太阳能的利用效率。该系统使用双轴运动控制,实现水平和垂直方向的精确跟踪&#xff…

【Java】类型转换与类型提升

目录 1.类型转换 1.1自动类型转换(隐式) 1.2强制类型转化(显式) 2.类型提升 3.字符串类型 1.类型转换 Java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有教严格的校验. 在Java中,当参与运算数…

[单master节点k8s部署]36.ingress 配置https(三)

目前我们的tomcat服务在浏览器上通过http来访问。为了提升安全性,我们将配置TLS secret 证书,从而可以进行https访问。 一对TLS密钥包括一个证书(trs.crt)和一个私钥,证书是公钥证书,用于加密数据并标识服…

气膜滑冰馆的现实意义:冰雪运动的全民普及—轻空间

气膜滑冰馆的出现不仅是城市发展中的一项基础设施建设,更代表着冰雪运动的逐步普及和全民健身理念的深入人心。在过去,许多地方的冰上运动资源相对匮乏,而如今,气膜滑冰馆通过其独特的优势,弥补了这一空白,…

Fleet Command

边缘计算 文章目录 前言一、边缘创造一个更快速、更智能、联系更紧密的世界二、优势边缘计算的优势1. 降低延迟2. 提高可靠性3. 降低成本4. 更广的覆盖范围三、创新借助 NVIDIA 实现边缘创新1. 企业边缘计算2. 工业边缘 AI3. 机器人和边缘 AI4. 构建面向 AI 时代的应用5. 边缘生…

C++——反向迭代器

1.回顾 template<class T> struct __list_iterator {typedef list_node<T> Node;typedef __list_iterator<T> self;Node* _node;__list_iterator(Node* node):_node(node){}self& operator(){_node _node->_next;return *this;}T& operator*(){…

C# 删除插入-列表排序字典

C# 删除插入-列表排序字典 测试文件 using System; using System.Collections; using System.Collections.Generic;using

五、Linux之Vi和Vim编辑器

基本介绍 Vi Linux 系统会内置 vi 文本编辑 Vim 具有程序编辑的能力&#xff0c;可以看做是 Vi 的增强版本&#xff0c;可以主动的以字体颜色辨别语法的正确性&#xff0c;方便程序设计。 代码补完、编译及错误跳转等方便编程的功能特别丰富 常用的三种模式 正常模式 以 vim …

如何将 html 渲染后的节点传递给后端?

问题 现在我有一个动态的 html 节点&#xff0c;我想用 vue 渲染后&#xff0c;传递给后端保存 思路 本来想给html的&#xff0c;发现样式是个问题 在一个是打印成pdf&#xff0c;然后上传&#xff0c;这个操作就变多了 最后的思路是通过 html2canvas 转化成 canvas 然后变成…

鸿蒙--WaterFlow 实现商城首页

目录结构 ├──entry/src/main/ets // 代码区 │ ├──common │ │ ├──constants │ │ │ └──CommonConstants.ets // 公共常量类 │ │ └──utils │ │ └──Logger.ets // 日志打印类 │ ├──entryability │ │ └──EntryAbility.ets // 程序入口…

TypeScript 中命名空间与模块的理解及区别

文章目录 一、模块&#xff08;Modules&#xff09;示例 二、命名空间&#xff08;Namespaces&#xff09;示例 三、区别 一、模块&#xff08;Modules&#xff09; 在 TypeScript 中&#xff0c;任何包含顶级 import 或 export 声明的文件都被视为一个模块。模块的特点是它有…

未来的电影:人机环境生态系统智能

本文摘自《影视产业研究》2024年10月创刊号 摘要: 随着人工智能的快速发展&#xff0c;未来的电影得到了广泛关注。通过对未来电影相关研究提供了一种将人机环境系统智能与影游结合的方式来解决未来电影的瓶颈问题&#xff0c;并从态势感知相关研究角度进行了研究。鉴于此&…

阿里云等联合编写的《2024大模型典型示范应用案例集》(附PDF分享)

这份大模型案例集资料已经上传CSDN&#xff0c;朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 2024 年是大模型深入赋能千行百业&#xff0c;融入实体经济&#xff0c;助力科技创新的一年。截至今年5月&#xff0c;我国国产大模型的数量已经超过…

taozige/基于Java语言的充电桩平台+充电桩系统+充电桩管理系统+充电桩系统源码+充电桩管理后台+充电桩小程序

简述 SpringBoot 框架&#xff0c;充电桩平台充电桩系统充电平台充电桩互联互通协议云快充协议1.5新能源汽车电动自行车公交车-四轮车充电充电源代码充电平台源码Java源码无加密项目 介绍 云快充协议云快充1.5协议云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充…

Python人脸识别实战——基于Dlib和OpenCV的人脸识别与关键点检测(附完整代码和结果图)

Python人脸识别实战——基于Dlib和OpenCV的人脸识别与关键点检测&#xff08;附完整代码和结果图&#xff09; 关于作者 作者&#xff1a;小白熊 作者简介&#xff1a;精通python、matlab、c#语言&#xff0c;擅长机器学习&#xff0c;深度学习&#xff0c;机器视觉&#xff0…

基于FPGA的以太网设计(一)

以太网简介 以太网&#xff08;Ethernet&#xff09;是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准&#xff0c;它规定了包括物理层的连线、电子信号和介质访问控制的内容。以太网是目前应用最普遍的局域网技术&#xff0c;取代了其他局域网标准如…

在线深度学习:爱奇艺效果广告分钟级模型优化

01# 背景 在效果广告投放场景中&#xff0c;媒体侧需要准确衡量每次请求的价值&#xff0c;模型预估值在广告竞价中扮演着核心角色。模型预估精度的提升&#xff0c;是改善媒体侧变现效率、提升广告收益的核心技术驱动力。 此前&#xff0c;爱奇艺效果广告预估模型为小时级模型…

爬虫设计思考之二

“所谓爬虫,其本质是一种计算机程序,它的行为看起来就像是蜘蛛在网上面爬行一样,顺着互联网这个“网”,一条线一条线地“爬行”。 一、认识爬虫 爬虫这个词对于非专业人士比较的陌生&#xff0c;但是实际却和我们的生活息息相关。例如我们国内经常使用的百度浏览器搜索&#x…

Qt-系统处理鼠标相关事件(57)

目录 使用 按下事件 释放事件 双击事件 移动事件 滚轮事件 使用 按下事件 实现下面的功能 鼠标在此处点击&#xff0c;就可以获取鼠标位置 添加函数 提升函数 手册中找到这个函数的原型 重写该函数 定义 重写 这里有一个细节需要注意&#xff0c;因为这里的标准点击…

单服务器基于 Nginx 负载均衡 + Docker Compose 提高并发量

背景信息 开发需求 单服务器的多服务管理 多服务器的集群管理可参考博主 docker swarm 的技术分享《基于 docker swarm 和 NVIDIA MIG 部署并行 AI 推理服务》 根据服务请求量和服务器规模的匹配程度&#xff0c;多服务器集群的性能对于目前来说过剩&#xff0c;故有了本研究的…