漏洞挖掘-从任意文件读取漏洞到获取账户利用

2023-05-16

开篇

大家好,我是承影战队的v1ct0ry,这次我为大家分享一次比较有趣的漏洞挖掘经历。这次挖掘过程是以灰盒挖掘为主要思想进行展开,不熟悉的读者可以阅读上篇文章熟悉一下。

一、任意文件读取

开局我们通过扫描器获得一个任意文件读取漏洞,并且可列目。我们来看下代码当中的漏洞点:

这里对传入的参数filename未做任何过滤,可直接进行文件读取。

1.1思考

那么通过任意文件读取漏洞我们都可以做什么?

这里我进行了以下五种操作,来帮助我们进行下一步的漏洞挖掘。

(1)、查看用户历史命令 - /home/mbs/.bash_history

(2)、查看配置文件 -根据历史命令找到安装目录,查看conf文件

/opt/choice_install.sh

(3)、获取应用源码 -到安装目录下查看是否遗留安装包在服务器上

(4)、查看日志 -寻找登录相关信息 - /var/log/uusafe/mbs

(5)、数据库备份文件 -查看服务器是否存在数据库备份情况 - /db/

二、获取加密方式

当我们通过任意文件读取漏洞,读取到以上相关信息时,我们会发现以下几个问题:

问题1、日志当中的密码都是加密过的

问题2、存在Authorization认证字段,无法修改数据包进行爆破

问题3、数据库备份文件当中存放的密码为MD5加密,不能全部解密。

那么我们该如何解决前两个问题呢?我们有了源码后是否可以寻找到加密方式呢?

2.1打开源码,尝试寻找加密方式

我们在源码中找到ThreeDes这样一个类,在这里我们可以看到其加密算法。

其中,为3DES加密,加密模式为CBC模式,填充方式为PKCS5,在这里我们可以找到Key为 uus*********fe。

在加密过程实现代码中,我们可以找到偏移量iv=01234567。

那么我们就获取到以下信息:

(1)、加密方式为对称加密:3DES

(2)、Key、偏移量、填充方式

根据以上的信息,我们找到在线加解密平台(http://tool.chacuo.net/crypt3des/)尝试进行加解密。

2.2验证加密方式是否正确

首先我们找到登录接口,输入账号密码 admin/admin,获取到如下数据包:

将密码参数放入在线平台进行解密。

当我们成功解密后,能做的事情就多了起来。

(1)可以将日志当中加密后的密码进行解密,从而登录系统。

(2)可以尝试构造Authorization请求头,从而进行数据包重放。

三、请求伪造

3.1思考

首先我们根据日志了解到,这是一个移动客户端发起的请求,并且请求方式是HTTP请求,那么我们是否可以在没有移动客户端的情况下,使用BP构造请求包,从而请求一些移动客户端的接口来获取敏感信息呢?

我们尝试对整个数据包进行构造,构造中最重要的就是Authorization请求头。因为服务端中,是根据Authorization来进行身份校验的。目前我们已经知道了加密方式,那么是否直接对日志当中的Authorization进行加密就可以了呢?

3.2验证

接下来,先对日志当中的Authorization进行加密:

然后构造数据包如下:

构造成功登录。

3.3猜想

那么我们尝试利用构造好的Authorization字段访问其他接口呢?

在日志中,我们在日志当中随意找个请求,尝试用我们伪造的Authorization字段进行访问:

这时我们看到,响应报错了,哪里出了问题呢?大概率是Authorization字段当中还有其他校验。我们再一次对Authorization进行一个详细分析,解密后的Authorization如下:

0 | iOS | 59072CB6-CFEF-4240-AF40-94E780A75920 || 1667415571677 | 1.0.0 | zjrcu_zhgl | 1 | 0 | 765006618b248c408a54e1fe2bccb190

那么我们对其中每个字段和日志信息进行对比分析,大概可分析为如下:

userid | 设备类型 | securityId || 类似时间戳 | 客户端版本| org_code | 1 | 0 | 未知

最后一个字段我们无法根据日志匹配对其进行判断,那么我们可以根据一些密码学特征来猜测:长度32位,为字母和数字混合,这时我们会很容易想到 MD5加密。那么这里的MD5加密前的明文是如何选取的呢,是时间戳和盐值加密吗?

我们只能够根据现有的线索来进行猜测,这里其实可以调试代码来进行判断,但是项目无法直接运行,无法调试。

3.4构造请求

通过修改数据包、请求不同接口等不同方法的不断尝试,总结如下:

现象:我们只要更改数据包当中的任意字节,无论是添加、删除、修改,都会报错。

结论:加密内容和请求体内容有关。

这里的答案:经过验证, MD5加密前的明文为 请求体所有内容整体MD5值加密。

下图是经过再次构造后,请求成功的截图:

我们在日志当中找到个组织架构接口,开始构造数据包:

(1)首先对请求体进行MD5加密:

(2)对日志中Auth头中的MD5字段进行更改

由原来的:

0 | iOS | 59072CB6-CFEF-4240-AF40-94E780A75920 || 1667415571677 | 1.0.0 | zjrcu_zhgl | 1 | 0 | 765006618b248c408a54e1fe2bccb190

更改为:

0 | iOS | 59072CB6-CFEF-4240-AF40-94E780A75920 || 1667415571677 | 1.0.0 | zjrcu_zhgl | 1 | 0 | 3793020c3c29c73d037ebfab2a077908

(3)再次进行3DES加密:

(4)构造请求包如下,成功访问:

四、任意文件上传

在我们获取到账号密码后,我们可以登录到系统后台:

在后台的功能点中,我们注意到这样一个位置:

可以上传apk文件等。

其请求数据包如下:

4.1分块传输

这里上传大文件采用的是分块传输的方式,整体请求的数据包如下图:

首先分块传输文件,分块传输完成后,再请求uploadblockfilecomplete接口。

Tip:

我们再来巩固了解一个小技巧:https://www.freebuf.com/vuls/353646.html。

一个漏洞成因会有基本的两个要素点:外部可控参数 (Source点)+ 风险函数(Sink点),source和sink之间可以形成一个完成的流时,就会产生一个漏洞。

该应用系统采用的是微服务架构,我们根据请求的接口位置找到相应的jar包,进行代码审计,看看其业务逻辑是怎样的:

找到其代码位置后,看下其核心上传代码:

(1)、传入filecode

(2)、传入blockid

(3)、传入blockmd5

(4)、保存路径:savepath = orgcode + / +filecode + /block/ + blockid + _ +blockMd5

那么对应的,source点:filecode、blockid、blockmd5,sink点:savepath

这里就很可能会存在一个漏洞,我们再来看下uploadBlockFileComplete这里发生了什么?

从代码逻辑看来,对我们有用的信息就是:当我们上传的文件完成时,他会校验文件MD5和大小等,如果不符合,则删除该文件。

那么当数据包请求到这里时:

我们将uploadBlockFileComplete请求包丢弃即可,接下来我们开始构造数据包:

从上图的代码中我们可以看出,参数传入的地方为TransferParam,并且进行base64加密,我们找到请求包当中的该字段:

并对其内容进行解密:

这里我们发现,并没有 blockmd5 参数,那么我们是否可以在请求包中添加该参数呢?因为我们在代码中已经确定在拼接保存路径时,会使用到该参数。

4.2构造数据包

(1)这里我们尝试构造如下内容

filecode : /../../../../../../../../../../home/mbs/mbs/dist/build

blockid : 0

filesize : 不变

blockMd5 :文件后缀(1.html)

(2)最终保存如下

savepath = orgcode + / +filecode + /block/ + blockid + _ +blockMd5

savepath = orgcode + / +/../../../../../../../../../../home/mbs/mbs/dist/build + /block/ + 0 + _ +1.html

savepath = /home/mbs/mbs/dist/build/block/0_1.html

(3)漏洞证明

我们构造如下请求包:

在请求到uploadBlockFileComplete数据包时,将其丢弃,即可完成上传。

可以看到,成功上传并可访问。

五、总结

大家可以发现,有许多影响范围广、影响力大的漏洞最初都是从一个不起眼的小漏洞开始被深入挖掘的。也许挖掘0day并不像大家想象的那么困难,只需要我们留意观察漏洞挖掘过程中的不起眼的小漏洞,并深入研究,往往会有意想不到的收获。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

漏洞挖掘-从任意文件读取漏洞到获取账户利用 的相关文章

  • 漏洞挖掘-从任意文件读取漏洞到获取账户利用

    开篇 大家好 xff0c 我是承影战队的v1ct0ry xff0c 这次我为大家分享一次比较有趣的漏洞挖掘经历 这次挖掘过程是以灰盒挖掘为主要思想进行展开 xff0c 不熟悉的读者可以阅读上篇文章熟悉一下 一 任意文件读取 开局我们通过扫描
  • 物联网固件逆向分析记录(初步概念记录)

    20201206 1 引言 机缘巧合 自己居然有生之年又接触到了这个东西 但是多学点东西也没什么坏处 就当扩宽视野了 不过 以前这种事情 都没有记录 挺可惜的 所以这次记录一下 关于物联网固件的分析 涉及的东西还是很多的 可能某个领域的小伙
  • xray的使用&实现自动漏扫

    工具 下载地址 https github com chaitin xray releases 查看帮助文档 xray exe webscan h 基本使用 代理模式 xray的优点主要是被动扫描 除了http还需要代理https 生成ca证
  • 从2023蓝帽杯0解题heapSpary入门堆喷

    从2023蓝帽杯0解题heapSpary入门堆喷 关于堆喷 堆喷射 Heap Spraying 是一种计算机安全攻击技术 它旨在在进程的堆中创建多个包含恶意负载的内存块 这种技术允许攻击者避免需要知道负载确切的内存地址 因为通过广泛地 喷射
  • Smartbi 修改用户密码漏洞

    漏洞简介 通过查看 Smartbi 的补丁包信息 发现存在漏洞在某种特定情况下修改用户的密码 进行简单的复现和分析 漏洞复现 在页面上修改密码时 需要知道原本的用户对应的密码 直接构造这样的数据包 就不需要知道原本的密码 知道用户名就可以修
  • AFL 生态圈

    AFL 生态圈 在本文中 我们将讨论的不是经典AFL本身 而是关于为其设计的实用程序及其修改 我们认为 这些实用程序可以显着提高模糊测试的质量 如果你想知道如何提高AFL以及如何更快地找到更多漏洞 继续阅读 什么是AFL 它有什么用 AFL
  • 栈溢出基本原理的简单讲解

    栈溢出基本原理的简单讲解 新手上路 大牛还请自行跳过 不足之处 欢迎批评指正 一 预备知识 缓冲区溢出简单介绍 缓冲区溢出 简单的说 缓冲区溢出就是超长的数据向小缓冲区复制 导致数据超出了小缓冲区 导致缓冲区其他的数据遭到破坏 这就是缓冲区
  • [论文阅读] (03) 清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing

    数据流敏感的漏洞挖掘方法 Discover Vulnerabilities with Flow Sensitive Fuzzing Chao Zhang 清华大学 2nd International Workshop on Cyber Se
  • SRC漏洞挖掘经验分享

    文件解析造成的XXE 网站存在一个有意思的功能点 通过上传Excel会将内容显示在页面上 也就是说后端会解析Excel Excel是通过XML来存储数据的 也就是说网站解析了XML 那么我们就可以在XML中注入语句来尝试攻击 新建一个 新建
  • Responder与evil-winRM配合远程登录Windows

    0x01 evil winRM 0x01 1概述 在使用和介绍Responder之前 先来了解一下evil winRM evil winrm是Windows远程管理 WinRM Shell的终极版本 Windows远程管理是WS 管理协议的
  • ASCII码-shellcode的技巧

    网上已经有成熟的工具了 所以就简单记录一下工具怎么用吧 https github com TaQini alpha3 https github com veritas501 ae64 git https github com rcx she
  • 禅道后台命令执行漏洞二

    漏洞简介 禅道是第一款国产的开源项目管理软件 它集产品管理 项目管理 质量管理 文档管理 组织管理和事务管理于一体 是一款专业的研发项目管理软件 完整地覆盖了项目管理的核心流程 禅道管理思想注重实效 功能完备丰富 操作简洁高效 界面美观大方
  • MIPS 指令

    MIPS 指令 指令 功能 应用实例 LB 从存储器中读取一个字节的数据到寄存器中 LB R1 0 R2 LH 从存储器中读取半个字的数据到寄存器中 LH R1 0 R2 LW 从存储器中读取一个字的数据到寄存器中 LW R1 0 R2 L
  • 漏洞挖掘之乱拳打死老师傅——Fuzzer

    背景 Fuzzer是一种通过产生一系列非法的 非预期的或者随机的输入向量给目标程序 从而完成自动化的触发和挖掘目标程序中的安全漏洞的软件测试技术 相比于形式化的软件漏洞测试技术 比如 符号执行技术 Fuzzer往往能够在实际的应用中挖掘更多
  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-33246)

    漏洞简介 RocketMQ 5 1 0及以下版本 在一定条件下 存在远程命令执行风险 RocketMQ的NameServer Broker Controller等多个组件外网泄露 缺乏权限验证 攻击者可以利用该漏洞利用更新配置功能以Rock
  • Skyfire: 一种用于Fuzzing的数据驱动的种子生成工具

    Skyfire Data Driven Seed Generation for Fuzzing 作者 杨鑫 清华大学 论文发表于 IEEE S P 2017 原文作者 Junjie Wang Bihuan Chen Lei Wei and
  • 自学网络安全(黑客)的误区

    前言 网络安全入门到底是先学编程还是先学计算机基础 这是一个争议比较大的问题 有的人会建议先学编程 而有的人会建议先学计算机基础 其实这都是要学的 而且这些对学习网络安全来说非常重要 一 网络安全学习的误区 1 不要试图以编程为基础去学习网
  • 北京大学漏洞报送证书

    获取来源 edusrc 教育漏洞报告平台 url 教育漏洞报告平台 EDUSRC 兑换价格 30金币 获取条件 北京大学任意中危或以上级别漏洞
  • 北京大学漏洞报送证书

    获取来源 edusrc 教育漏洞报告平台 url 教育漏洞报告平台 EDUSRC 兑换价格 30金币 获取条件 北京大学任意中危或以上级别漏洞
  • 小白入门黑客之渗透测试(超详细)基本流程(内附工具)

    经常会收到小伙伴们这样的私信 为什么我总是挖不到漏洞呢 渗透到底是什么样的流程呢 所以全网最详细的渗透测试流程来了 渗透测试其实就是通过一些手段来找到网站 APP 网络服务 软件 服务器等网络设备和应用的漏洞 告诉管理员有哪些漏洞 怎么填补

随机推荐

  • 步骤七:激光雷达的驱动安装与建图使用

    大致的步骤可以按照官网来 nbsp Cartographer SLAM for Non GPS Navigation Dev documentation ardupilot org 但是官网的步骤有严重的问题 问题1 报错 libabsl
  • 步骤八:PX4使用cartographer与move_base进行自主建图导航

    首先老样子硬件如下 飞控 HOLYBRO PIXHAWK V4 PX4 机载电脑 jetson nano b01 激光雷达 思岚a2 前提 你已经完成了cartographer建图部分 能够正常输出map话题 前言 由于要参加中国机器人大赛
  • 最详细的流媒体传输协议-rtsp协议详解

    流媒体传输协议 rtsp协议详解 参阅 RTSP协议详解和分析从零开始写一个RTSP服务器 xff08 一 xff09 RTSP协议讲解关于RTSP RTP RTCP协议的深刻初步介绍 rtsp RTSP出现以前 xff0c 最热的大概就是
  • 利用FFmpeg合并音频和视频

    一 FFmpeg 多个音频合并的2种方法 多个mp3文件合并成一个mp3文件 一种方法是连接到一起 ffmpeg64 exe i 34 concat 123 mp3 124 mp3 34 acodec copy output mp3 解释
  • 流媒体服务器之 ZLMediaKit介绍

    流媒体服务器是流媒体应用的核心系统 xff0c 是运营商向用户提供视频服务的关键平台 流媒体服务器的主要功能是对流媒体内容进行采集 缓存 调度和传输播放 流媒体应用系统的主要性能体现都取决于媒体服务器的性能和服务质量 因此 xff0c 流媒
  • WebRTC 教程三:WebRTC特性,调试方法以及相关服务器搭建方法

    WebRTC 教程一 xff1a WebRTC信令 架构和 API 入门 WebRTC 教程二 xff1a WebRTC API 和 Leak 本文是 WebRTC 的第三篇教程 xff0c 主要介绍了 WebRTC 的一些特性 xff0c
  • 能不能在头文件中定义全局变量?

    首先 xff0c 这是一篇科普文 xff0c 所以 比较杂 xff0c 我尽量写清楚一些 1 ANSI C标准是什么 xff1f GNU又是什么 xff1f ld是什么 xff1f ANSI C是C语言的标准规范 xff0c 是国际标准化组
  • FFmpeg转码流程详解

    前言 音视频转码主要指这样的概念 xff1a 容器格式的转换 xff0c 比如MP4转换为MOV 容器中音视频数据编码方式转换 xff0c 比如H264编码转换成MPEG4编码 xff0c MP3换为AAC 音视频码率的转换 xff0c 比
  • FFmpeg 代码实现流媒体推流(RTSP)

    实时录屏并把视频推流到RTSP服务器 xff0c 具体流程是抓取屏幕内容 bitmap xff0c 并把bitmap转化为YUV xff0c 接着把YUV编码成H264 xff0c 再把H264码流推到RTSP服务器 xff1b 把采集到的
  • rtsp协议的理解

    一 rtsp协议概述 RTSP xff08 Real Time Streaming Protocol xff09 实时流传输协议 xff0c 是TCP IP协议体系中的一个应用层协议 该协议定义了一对多的应用程序如何有效地通过IP网络传送多
  • QT 程序打包的方法

    01前言 很多朋友因为要把程序放到不同电脑的环境去测试 xff0c 而又不可能每一台电脑都安装了QT的开发环境 xff0c 于是乎有了将程序打包的想法 这里用来的包的工具是windeployqt xff0c 是QT官方自带的打包软件 xff
  • C++Qt开发——事件处理函数

    事件 event 是由系统或者Qt本身在不同时刻发出的 当用户按下鼠标 敲下键盘 xff0c 或者其它情况时候都会发出一个相应的事件 一些事件在对用户操作做出相应时发出 xff0c 如键盘事件等 xff1b 另外一些则是由系统自动发出 xf
  • C++Qt开发——类图结构

    Qt 类图 系统性地总结一下相关的知识点 xff0c 这里有个网图 xff0c 是Qt的类图 xff0c 看完可以对Qt整体的框架有一个大致的了解 xff0c 具体如下 CSDN QT大纲 xff1a Qt开发必备技术栈学习路线和资料 Qt
  • QT如何实现一个五子棋游戏

    FIR pro QT 43 61 core gui TARGET 61 FIR TEMPLATE 61 app SOURCES 43 61 main cpp widget cpp HEADERS 43 61 widget h wight h
  • Qt5实现UDP通信的示例代码怎么写

    QT5实现UDP通信的示例代码怎么写 xff0c 很多新手对此不是很清楚 xff0c 为了帮助大家解决这个难题 xff0c 下面小编将为大家详细讲解 xff0c 有这方面需求的人可以来学习下 xff0c 希望你能有所收获 前言 该例程经过实
  • OpenCV+Qt实现图像处理操作工具

    一 目标 Qt界面实现 雪花屏 高斯模糊 中值滤波 毛玻璃 灰度化 XY方向模糊 双边模糊 腐蚀 图像处理操作 要求左边原图 xff0c 右边效果图 结果展示如下 xff1a 图像处理实现有点多 xff0c 就不一个一个地展示了 xff0c
  • 链表的建立、赋值、输出、查找、增、删

    include lt stdio h gt include lt string h gt include lt math h gt include lt stdlib h gt typedef struct node 定义结构体 int n
  • 蓝桥杯-串口

    本文通过电脑串口发送文本模式和HEX模式进行介绍串口的简单使用 xff01 注意事项 xff1a 1 本节通过定时器2的串口1 进行串口控制 2 串口如果开启了 编程完成后自动打开串口会导致第一次发送无法看到 xff08 HEX模式 xff
  • GSV2008

    GSV2008 是HDMI2 0 四进二出矩阵 xff0c 自持HDCP2 2 xff0c 支持DOWN SCALER 四个HDMI输入 xff0c 2个HDMI输出 xff0c 自动EQ 应用 xff1a 1 xff0c 功放 ARC C
  • 漏洞挖掘-从任意文件读取漏洞到获取账户利用

    开篇 大家好 xff0c 我是承影战队的v1ct0ry xff0c 这次我为大家分享一次比较有趣的漏洞挖掘经历 这次挖掘过程是以灰盒挖掘为主要思想进行展开 xff0c 不熟悉的读者可以阅读上篇文章熟悉一下 一 任意文件读取 开局我们通过扫描