SRC实战:无中生有的接口和参数?

今天分享的这个漏洞怎么说呢,虽然也是个高危,但是其实挺简单的,一个很eazy的越权,但是我觉得多多少少还是有点意思吧。

0x00

这是一个移动端的应用程序,前面比较常规,模拟器 + BP,跑了一下所有的功能,先简单的分析了一下,没有发现什么问题(菜狗哭泣!)。
那公开的接口没有问题,有没有隐藏的接口呢?直接反编译Andoird应用,将所有的接口捞出来跑一遍

我测试移动端应用的流程其实和Web端差不多,也喜欢捞出所有的请求地址跑一遍,看看有没有隐藏接口、未授权等。
但是移动端没有FindSomething,我一般是反编译应用后,分析一下接口的格式,然后使用Python脚本将它们全部匹配出来。

幸运的是,还真有,将接口匹配出来后,发现了10来个以/manager开头的路径,这个我在应用上直接访问各种功能是没有看到过的

这种接口很有可能是管理接口,有可能是历史接口没有删除,又或者是其它管理员才能访问到的。

0x01

但是不幸的是,所有接口几乎都无法访问,请求接口直接返回了401,也就是无权限。但是有一个例外,接口长这样:/manager/user。直接访问的话,会返回一个空数据,像这样:

{
"code": 200,
"data": {}
}

那是不是缺少参数呢?直接去反编译的代码里面找找看!一看代码,我悬着的心也死了,这个接口没有任何参数,它的功能返回当前管理员用户的信息,而我并不是管理员,没有信息返回也很合理。

本来到这就想放弃了,但又想了想,又觉得有点奇怪,如果是获取当前登录用户信息,并且不存在,那为什么还会正常返回呢? 不应该是直接401,又或是直接报错吗?而这种表现形式,更像是那种普通的获取用户信息的接口。

有些开发在写接口的时候,可能会复用一些接口,但是又考虑的不完善。
比如我有一个接口,是查看每个用户的详情,那我在写获取当前登录用户信息的接口的时候,可能会复用之前的接口:如果没有传参数,就根据当前登录用户的ID来获取用户信息,如果有传参数,就根据传参来获取用户信息。(纯属猜测~)

于是我决定再试试,给它传几个参数fuzz一下看看,根据这个接口名称,我觉得这几个参数可以试试看:iduserIduser_idmanagerIdmanager_id

对于参数值,首先是自己当前的用户ID,但是管理员的ID可能规则不一样,因此再加上数字类型的fuzz。

fuzz方式确定好之后,就是Turbo Intruder一把梭了。结果很明显了,如果我没有成功,那就不会有这篇文章啦!最终使用manger_id参数 + 6位的数字ID,可以遍历所有的管理员用户信息,包括姓名、手机号、邮箱等大量的敏感信息。但是由于管理员数量不像C端用户这么多,因此只给了高危。

0x02

这个漏洞还是几个月之前的了,它其实本质上就是一个很普通的越权漏洞,但是找参数这部分我觉得还是有一些意思的,希望给大家带来一点新的思路吧~ 


欢迎关注我的公众号“混入安全圈的程序猿”,更多原创文章第一时间推送!

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

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

相关文章

C++:cv::findContours()说明

cv::findContours 是 OpenCV 库中一个非常重要的函数,用于在二值图像中查找轮廓。该函数可以检测图像中对象的边界,并返回这些轮廓的坐标信息,这些轮廓信息通常用于对象检测、分割和形状分析等任务。以下是对 cv::findContours 函数的详细介绍…

多会话 Telnet 日志记录器

创建一个多会话 Telnet 日志记录器可以实现对多个 Telnet 会话进行连接、监控和记录日志。以下是一个基本的 Python 示例,使用 telnetlib 库来实现多会话 Telnet 日志记录器,并使用 threading 模块来处理多个会话。 1、问题背景 我们需要编写一个脚本&a…

Сетунь的24条单播指令

1、Setun模拟器概述 真的,想搞懂一台电脑是怎么运行的,那就搞懂它的指今集是怎么跑的,感觉很离了个大谱的,先看由铁氧体磁芯上的器件组成的RAM,容量为162个9-trit单元,即每个单元为9-trit,每页有…

【uni-app+Vue3】 API请求封装:让接口调用更便捷

前言:uni-app是一款基于Vue.js框架的跨平台开发工具,可以将代码编译成H5、小程序、App等不同平台的应用。在进行uni-app开发时,网络请求是必不可少的环节。为了方便开发,我们可以封装一些网络请求方法,以便在多个页面中…

About CAT7验证——CLASS F或者Fa测试FLUKE解决方案

七类CLASS F线缆认证测试标准在TIA的标准数据库中是直接跳过,取而代之的是八类的通道测试标准,真正认证七类测试的是在ISO标准数据库中,找到ISO11801 CHANNEL CLASS F或者FA,这就是标准的七类测试标准,测试频率需要达到…

Llama2 入门案例教学

Llama2 是一个基于 Python 的机器学习框架,旨在帮助开发者快速构建和部署机器学习模型。下面是 Llama2 的入门案例教程,旨在帮助您快速上手 Llama2。 安装 Llama2 首先,您需要安装 Llama2。可以使用 pip 安装: pip install lla…

一些学习网站分享

一些学习网站分享: ✅力扣(LeetCode) 力扣 (LeetCode) 官网 - 全球极客挚爱的技术成长平台 力扣是一个刷题站,支持C,Java,Python等多种编程语言,并按难度分为简单、中等、困难三个等级。是真的能刷到大厂真题 ✅Gith…

文本引导I2I迈向统一!北大王选所提出FCDiffusion:端到端适用于各种图像转换任务

文章链接:https://arxiv.org/pdf/2407.03006 github地址:https://github.com/XiangGao1102/FCDiffusion 最近,大规模的文本到图像(T2I)扩散模型在图像到图像(I2I)转换中展现出强大的能力,允许通过用户提供的文本提示进行开放域的图…

智能汽车网络安全笔记

汽车五大域 动力底盘、车身控制、智能座舱、智能网联和高级辅助驾驶五大域 国外汽车安全法规标准 汽车网络安全管理体系(CSMS) CSMS指的是管理汽车的网络威胁和风险,并保护车辆免受网络攻击的组织过程和管理系统 安全验证和安全测试 8…

安全保障措施

安全保障措施 项目的安全针对系统整体的安全设计提出有效的解决方案,确保系统安全接入,根据项目的特点,以及在网络运行中的安全进行分析,具体包含以下几个方面: 1、重要基础数据信息,比如涉及国家安全的数…

华为机考真题 -- 提取字符串中的最长合法简单数学表达式

题目描述: 提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回 0 。 简单数学表达式只能包含以下内容: 0-9数字,符号+-* 说明: 1、所有数字,计算结果都不超过long 2、如果有多个长度一样的,请返回第一个表达式的结果 3、数…

使用Vue实现前后端分离 spring框架返回json数据中文乱码

SpringBoot返回的中文显示???的问题_spring boot response 中文????-CSDN博客 引入js的script标签到底是放在head还是body中_html页面中用<script>标签引入js代码,该标签放在<head>标签中和放在<body>标签-CSDN博客 vue.js 的问答 - SegmentFault 思…

gyp ERR! stack import sys; print “%s.%s.%s“ % sys.version_info[:3];

这个错误信息是由node-gyp在尝试构建一个Node.js原生模块时发出的。它通常表示node-gyp工具无法正确安装或配置本地依赖。 错误解释&#xff1a; gyp ERR! stack 表示错误栈的开始。 import sys; print “%s.%s.%s” % sys.version_info[:3]; 是Python代码&#xff0c;用于打…

WritableStream()写入流,将数字或字符流,写入你需要的地方

WritableStream有两个对象参数&#xff1a; 第一个必选&#xff0c;用于配置一些写入流时的钩子&#xff1b; 第二个可选&#xff0c;用于配置一些chunk入队和队列控制的策略&#xff1b; 第二个参数的策略&#xff08;利用ByteLengthQueuingStrategy【按字节计量】和CountQueu…

gpt讲 Observable 对象

什么是 Observable&#xff1f; Observable 是一种用于处理异步数据流的数据类型。它可以发出多个值&#xff0c;这些值可以是同步或者异步产生的&#xff0c;并且可以在时间上发生变化。在 Angular 中&#xff0c;HttpClient 返回的响应对象、事件流以及许多其他异步任务都可…

网络服务器都包含哪些方面需要维护?

网络服务器是现代互联网架构中不可或缺的一部分&#xff0c;它们承载着数据存储、处理和传输的重要任务。为了确保服务器能够稳定、高效地运行&#xff0c;定期的维护工作显得尤为重要。下面将介绍一些常见的网络服务器维护方法&#xff1a; 定期更新软件和系统 保持操作系统和…

QGraphicsScene::itemAt和QGraphicsView::itemAt无法返回Item

坐标点确定是没问题的&#xff0c;就是item所在的位置 看源码&#xff0c;基于5.9.7 Src\qtbase\src\widgets\graphicsview\qgraphicsview.cpp QGraphicsItem *QGraphicsView::itemAt(const QPoint &pos) const {Q_D(const QGraphicsView);if (!d->scene)return 0;con…

ChatTTS使用

ChatTTS是一款适用于日常对话的生成式语音模型。 克隆仓库 git clone https://github.com/2noise/ChatTTS cd ChatTTS 使用 conda 安装 conda create -n chattts conda activate chattts pip install -r requirements.txt 安装完成后运行 下载模型并运行 python exampl…

Python面试题:请编写一个函数,计算一个字符串中每个字符的出现频率

当然&#xff0c;可以通过使用 Python 编写一个函数来计算字符串中每个字符的出现频率。下面是一个示例函数&#xff1a; def char_frequency(s):"""计算字符串中每个字符的出现频率参数:s (str): 输入字符串返回:dict: 一个字典&#xff0c;其中键是字符&…

java中方法的使用

方法的使用 方法的概念什么是方法方法定义方法的调用过程实参和形参的关系 方法重载为什么需要方法重载方法重载的概念方法签名 递归递归的概念递归过程分析递归练习 方法的概念 什么是方法 方法就是一个代码片段&#xff0c;类似于C语言的函数。 方法存在的意义&#xff1a;…