黑盒测试 | 挖掘.NET程序中的反序列化漏洞

通过不安全反序列化漏洞远程执行代码

图片

今天,我将回顾 OWASP 的十大漏洞之一:不安全反序列化,重点是 .NET 应用程序上反序列化漏洞的利用。

📝$ _序列化_与_反序列化

序列化是将数据对象转换为字节流的过程,字节流可以存储在文件、内存和数据库中,或者通过网络、在应用程序的不同组件之间以及在 API 调用中发送。

反序列化是相反的过程;它将流字节恢复到对象被序列化之前的原始状态。

不安全的反序列化正在传递可被应用程序解释的受操纵的序列化对象,从而导致其控制。该漏洞的影响范围从拒绝服务攻击、绕过身份验证到任意代码执行。

与任何安全漏洞一样,核心问题是应用程序端缺乏对用户输入的验证,而应用程序端盲目信任发送给它的数据。在解析数据并对其采取行动之前,没有实施适当的检查。

$_Exploitation_Demo

我选择了 Hack The Box 中的 JSON 关卡来演示 .NET 应用程序的不安全反序列化。

💭我的 Web 应用程序测试方法首先将请求分为三个部分:

手动模糊应用程序并使用 Burp Suite 仔细观察响应。我通常专注于通过更改、删除或修改值来测试发送到应用程序的每个参数。

有意生成错误消息,以查看应用程序是否会显示可见的错误,从而公开一些后端信息,帮助我了解应用程序的结构。

扫描目录和端点。

图片

图片

我通过 Burp Suite 代理发送请求来检查应用程序。我注意到日志记录请求被发送到“api/token”路由,以在授予访问令牌(Bearer Token)之前检查用户名和密码。

此外,所有数据均以 JSON 形式发送。

我将请求发送给Repeater进行进一步调查。由于我没有密码,因此我传递了随机值来观察应用程序的响应。正如我们从下面的屏幕中看到的,该用户不存在。

图片

通过向“ api/token”发送一个空请求来继续模糊测试过程,看看我是否仍然会收到“用户不存在”错误的相同错误。相反,应用程序返回了 500 错误响应,揭示了有关应用程序语言及其部署位置的一些有用信息;耶!!!!

根据显示的错误,用户名是admin。

图片

我尝试使用 admin/admin 登录,并且成功了。但该关卡并不是考察弱口令,而是展示信息泄露和不安全反序列化漏洞。

回到我们的demo……

图片

登录后,我注意到“api/Account”请求中添加了两个参数- Bearer token 和 OAuth2 Cookie 。这两个值均以 Base64 编码。

💡 Bearer Token 是与 OAuth 2.0 授权框架一起使用的访问令牌,用于授予对受保护资源的访问权限,而不是直接使用所有者的凭据。—RFC 6750 — OAuth 2.0 授权框架[1]

图片

💡不安全反序列化的主要标志之一是使用 base64 编码的序列化对象并将其放入 cookie 中。当 Cookie 返回到应用程序时,它会对其进行反序列化并执行其内容。没有用于检查不可信数据的安全/安全控制。

为了确定哪个参数获取应用程序解析的内容,我为每个参数传递了不同的值。正如您所看到的,应用程序根本不检查 Cookie。它只寻找 Bearer Token值。

图片

图片

图片

确认反序列化错误的另一种方法是发送格式错误的 JSON 请求并查看应用程序如何响应它。我在请求中随机添加了第二个双引号,对其进行编码,然后将其发送到应用程序。

图片

图片

正如您所看到的,应用程序返回了一个反序列化错误,说明失败的原因以及期望的序列化类型。

失败,因为无法解析格式错误的 JSON 对象

预期的序列化类型是 JSON.NET

😈 $_Paylaod_Time

现在我们开始进行漏洞利用。我们知道Bearer token是易受攻击的参数;理论上,我们发送给它的任何 JSON 数据都应该被解析。为了检查这一点,我发送了一个简单的 ping 请求来确认我们在机器上执行了任意代码。

由于应用程序正在寻找 JSON.NET 对象,因此我们可以使用Alvaro Muñoz开发的名为ysoserial.net:https://github.com/pwntester/ysoserial.net的工具来创建所需的对象。他的 GitHub 存储库提供了使用该工具的优秀示例。

注意:此工具在 Windows 计算机上效果最佳。

图片

图片

我使用 Base64 对请求进行编码,并启动tcpdump来侦听 ICMP 数据包 [echo requests]。当我将编码的有效负载传递给应用程序时,我立即收到了机器的响应,验证了我们执行代码的能力。

图片

图片

从这里,我们可以使用NetcatNishang Powershell来反弹shell。我选择了Nishang TCP on-liner。

图片

图片

图片

正如我们所看到的,精心设计的payload被反序列化并执行,应用程序没有进行验证检查以防止此类攻击。影响是远程代码执行。

✏️ $预防&建议:

•如果可能,请停止使用序列化 😐

•使用HMAC签名等数字签名来检查传递的数据是否未被篡改。

•在序列化并发送到应用程序之前始终验证用户输入并清理数据

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

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

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

相关文章

基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

Maxwell 底层原理 详解

Maxwell 是一个 MySQL 数据库的增量数据捕获(CDC, Change Data Capture)工具,它通过读取 MySQL 的 binlog(Binary Log)来捕获数据变化,并将这些变化实时地发送到如 Kafka、Kinesis、RabbitMQ 或其他输出端。…

0x3D service

0x3D service 1. 概念2. Request message 数据格式3. Respone message 数据格式3.1 正响应格式3.2 negative respone codes(NRC)4. 示例4.1 正响应示例:4.2 NRC 示例1. 概念 UDS(统一诊断服务)中的0x3D服务,即Write Memory By Address(按地址写内存)服务,允许客户端向服…

2024年中国工业大模型行业发展研究报告|附43页PDF文件下载

工业大模型伴随着大模型技术的发展,逐渐渗透至工业,处于萌芽阶段。 就大模型的本质而言,是由一系列参数化的数学函数组成的计算系统,且是一个概率模型,其工作机制是基于概率和统计推动进行的,而非真正的理解…

aardio 中最重要的控件:自定义控件使用指南

aardio虽然是个小众编程语言,但其在windows下做个小软件生成exe文件,确实方便。只是这个编程语言的生态圈小,文档的详细程度也完全无法和大的编程语言相提并论。今天介绍一下,aardio中的自定义控件如何使用。 这里我们只介绍如何做…

python 作业1

任务1: python为主的工作是很少的 学习的python的优势在于制作工具,制作合适的工具可以提高我们在工作中的工作效率的工具 提高我们的竞争优势。 任务2: 不换行 换行 任务3: 安装pycharm 进入相应网站Download PyCharm: The Python IDE for data science and we…

AnaTraf | TCP重传的工作原理与优化方法

目录 什么是TCP重传? TCP重传的常见触发原因 TCP重传对网络性能的影响 1. 高延迟与重传 2. 吞吐量的下降 如何优化和减少TCP重传 1. 优化网络设备配置 2. 优化网络链路 3. 网络带宽的合理规划 4. 部署CDN和缓存策略 结语 AnaTraf 网络性能监控系统NPM | …

餐饮店怎么标注地图位置信息?

随着市场竞争的日益激烈,商家若想在竞争中脱颖而出,就必须想方设法去提高自身的曝光度和知名度,为店铺带来更多的客流量。其中,地图标注便是一种简单却极为有效的方法。通过在地图平台上添加店铺位置信息,不仅可以方便…

Qt-系统文件相关介绍使用(61)

目录 描述 输⼊输出设备类 打开/读/写/关闭 使用 先初始化,创建出大致的样貌 输入框设置 绑定槽函数 保存文件 打开文件 提取文件属性 描述 在C/C Linux 中我们都接触过关于文件的操作,当然 Qt 也会有对应的文件操作的 ⽂件操作是应⽤程序必不…

【C语言】文件操作(1)(文件打开关闭和顺序读写函数的万字笔记)

文章目录 一、什么是文件1.程序文件2.数据文件 二、数据文件1.文件名2.数据文件的分类文本文件二进制文件 三、文件的打开和关闭1.流和标准流流标准流 2.文件指针3.文件的打开和关闭文件的打开文件的关闭 四、文件的顺序读写1.fgetc函数2.fputc函数3.fgets函数4.fputs函数5.fsc…

微信小程序上传组件封装uploadHelper2.0使用整理

一、uploadHelper2.0使用步骤说明 uploadHelper.js ---上传代码封装库 cos-wx-sdk-v5.min.js---腾讯云,对象存储封装库 第一步,下载组件代码,放置到自己的小程序项目中 第二步、 创建上传对象,执行选择图片/视频 var _this th…

npm install进度卡在 idealTree:node_global: sill idealTree buildDeps

ping一下源:ping http://registry.npm.taobao.org/ ping不通,原因:原淘宝npm永久停止服务,已更新新域名~~震惊!!! 重新安装:npm config set registry https://registry.npmmirror.c…

推荐?还是踩雷?3款中英互译软件大盘点,你真的选对了吗?

作为一个爱到处跑的人,我特别明白旅行的时候能说会道有多重要。不管是跟当地人聊天,还是看路标、菜单,有个好用的翻译软件是肯定少不了的。今天,我打算给你们介绍3款中英文互译的翻译工具,帮你挑出最适合自己的那一个。…

机器学习:opencv--人脸检测以及微笑检测

目录 前言 一、人脸检测的原理 1.特征提取 2.分类器 二、代码实现 1.图片预处理 2.加载分类器 3.进行人脸识别 4.标注人脸及显示 三、微笑检测 前言 人脸检测是计算机视觉中的一个重要任务,旨在自动识别图像或视频中的人脸。它可以用于多种应用&#xff0…

Python和MATLAB锂电铅蓄电化学微分模型和等效电路

🎯要点 对比三种电化学颗粒模型:电化学的锂离子电池模型、单粒子模型和带电解质的单粒子模型。求解粒子域内边界通量与局部电流密度有关的扩散方程。扩展为两个相的负或正电极复合电极粒子模型。模拟四种耦合机制下活性物质损失情况。模拟锂离子电池三参…

【PhpSpreadsheet】ThinkPHP5+PhpSpreadsheet实现批量导出数据

目录 前言 一、安装 二、API使用 三、完整实例 四、效果图 前言 为什么使用PhpSpreadsheet? 由于PHPExcel不再维护,所以建议使用PhpSpreadsheet来导出exlcel,但是PhpSpreadsheet由于是个新的类库,所以只支持PHP7.1及以上的版…

服务器数据恢复—RAID5阵列上层Linux操作系统中节点损坏的数据恢复案例

服务器数据恢复环境: 一台服务器上有一组由5块硬盘(4块数据盘1块热备盘)组建的raid5阵列。服务器安装Linux Redhat操作系统,运行一套基于oracle数据库的OA系统。 服务器故障: 这组raid5阵列中一块磁盘离线&#xff0c…

观测云 AI 助手上线:智能运维,从此触手可及!

在当前的云原生时代,运维的复杂性和数据的爆炸式增长给企业带来了前所未有的挑战。为了帮助企业高效应对这些挑战,观测云自豪地推出了 AI 助手——智能化的运维助手,让每位用户都能轻松驾驭复杂的可观测性场景。 01 你身边的 PE 助手&#x…

《重置MobaXterm密码并连接Linux虚拟机的完整操作指南》

目录 引言 一、双击MobaXterm_Personal_24.2进入,但是忘记密码。 那么接下来请跟着我操作。 二、点击此链接,重设密码。 三、下载完成后,现在把这个exe文件解压。注意解压要与MobaXterm_Personal_24.2.exe在同一目录下哦,不然…

vim编辑器交换文件的产生与处理方法

文章目录 问题附图交换文件的作用和产生原因报错信息解读解决方法恢复文件使用命令行删除在文件管理器中删除在文本编辑器中处理 问题附图 简要分析 这个报错信息是由 vim 编辑器产生的,它表明在你尝试打开文件 /opt/software/openGauss/clusterconfig.xml 时&#…