安全测试实践-万家APP越权逻辑漏洞挖掘
逻辑漏洞会导致业务面临着巨大的经济损失隐患与敏感数据泄露的风险,本文从安全测试的角度,以越权逻辑漏洞为例,介绍逻辑漏洞的挖掘方法和实践过程。
一、什么是越权逻辑漏洞
定义: 指由于系统的权限控制逻辑不够严谨,使得系统用户可以访问或操作未授权的数据和功能。包括水平越权和垂直越权。
水平越权: 指当系统存在多个相同权限的用户时,A用户可以访问或操作到其他用户的资源。如图1.1所示,用户A、B、C、D都是普通用户,当用户A可以访问到用户B或者其他用户资源时,就产生了水平越权。
垂直越权: 指当系统存在不同权限的用户时,低权限用户可以访问或操作到高权限用户的资源。如图1.1所示,当普通用户或者其他低权限用户可以访问到比自己权限高的用户资源时,就产生了垂直越权。
图1.1
二、越权逻辑漏洞挖掘方法
基于越权逻辑漏洞的定义和分类,从模拟攻击者攻击漏洞的角度出发,可以总结出以下两种挖掘方法。
2.1 未授权访问测试
指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问的页面或者信息。具体流程为:
1)统计测试接口;
2)使用抓包工具获取接口入参;
3)不填写cookie或者填写无效cookie重新请求;
4)查看请求结果,如果返回了正确cookie才能取得的结果,说明该接口存在未授权访问漏洞。
2.2 越权访问测试
通过抓包修改参数的方式绕过客户端实施攻击,从而测试是否存在越权漏洞。具体流程为:
1)统计测试接口;
2)使用抓包工具获取接口入参;
3)水平越权测试:分析入参中是否标识用户身份的敏感信息,如果存在,则修改为其他测试用户信息,重新请求查看返回结果,若返回结果正确,则该接口存在水平越权漏洞;
4)垂直越权测试:分析高级权限用户的请求入参,将高权限用户信息替换为低级权限用户的信息,重新请求查看返回结果,若返回结果正确,则该接口存在垂直越权漏洞。
三、万家系统越权逻辑漏洞挖掘实践
3.1 实现工具和平台
抓包工具: 使用Charles,它是一个 HTTP 代理、HTTP 监视器、反向代理工具,可以帮助开发人员查看他们的机器和Internet之间的所有HTTP和SSL、HTTPS 流量,包括请求、响应和 HTTP头(其中包含cookie和缓存信息)。官网安装链接:https://www.charlesproxy.com/documentation/installation/
请求平台: 使用京东内部测试平台DeepTest。
3.2 未授权访问测试实践
图3.1
首先确定测试接口,京东万家APP的所有接口都需要登录才能访问,因此需要逐一验证。获取接口及参数信息,流程如下:
(1)打开Charles并将手机代理开启;
(2)检查手机代理ip及端口是否与Charles设置一致,如不同则将其改为一致;
(3)手机启动京东万家APP;
(4)对应Charles中查看相应的接口和请求,如图3.1所示。
以Charles中的user_baseinfo接口为例,进行未授权访问逻辑漏洞测试。首先从Charles的抓包信息中复制该接口、body和cookie信息,然后在DeepTest平台进行接口入参修改并重新请求。其中入参主要修改cookie,原因是登录信息的校验都是从cookie中获取。因此,进行未授权的测试的本质就是修改入参中的cookie信息为无效信息然后重新请求。注意,cookie无效包括不填写 cookie或填写已过期的cookie。如图3.2所示,此时接口不填写cookie,但重新请求后,依然可以获取到结果,即用户在没有通过认证授权的情况下依然能够直接访问需要通过认证才能访问的信息,说明该接口存在未授权访问逻辑漏洞。
图3.2
3.3 越权访问测试实践
水平越权测试: 首先确定所有测试接口,以万家APP中订单详情接口测试为例,抓包得到接口入参为:
{"from":"","orderId":"239703099155","sdkClient":"plugin_apple","appName":"apollo","isPublish":"","apolloId":"ca3d","apolloSecret":"7157","wjPin":"ceshibu3"}
分析入参:由于入参中存在orderId和wjPin两个字段来标识用户身份,因此修改其为其他同级别权限用户信息,进行水平越权测试。修改前和修改后的请求及返回结果如图3.3所示,令当前登录用户为A用户,修改请求入参的用户信息为B用户,可以发现,修改入参后,A用户依然可以访问到B用户的订单详情,也就是当前登录用户可以访问到其他用户的订单详情,说明该接口存在水平越权逻辑漏洞。
图3.3
垂直越权测试: 在万家APP业务中,店主的权限高于店员的权限,因此需要进行垂直越权测试来验证店主的信息是否存在泄漏风险。
首先确定店主比店员多的具体权限,需要具体到每个接口。然后使用店主权限登录万家APP,找到只有店主权限才能看到的应用,进行请求、抓包、分析参数、修改参数、重新请求的测试过程。其中,修改参数指将店主身份的cookie修改为店员身份的cookie,如图3.4所示,重新请求后可以正常返回结果,说明该接口存在垂直越权逻辑漏洞。
图3.4
四、总结与建议
本文介绍了越权逻辑漏洞的基本概念及挖掘方法,并通过万家APP的三个具体场景,介绍了越权逻辑漏洞挖掘的主要流程,包括:确定测试接口抓包获取接口入参分析入参修改入参部分信息后重新请求分析返回结果。最后,通过此次万家APP的逻辑漏洞挖掘实践,提出以下两点建议:
建议使用DeepTest接口自动化测试平台,可以提高效率,便于维护和回归,从而使得逻辑漏洞挖掘常态化;
建议在工作中培养安全测试意识,比如:
(1)和账户相关的增删改查操作应使用当前用户身份约束;
(2)获取当前用户身份的方式应从session中获取;
(3)不以任何客户端传递的明文数据作为鉴权方式;
(4)用户可见索引字段应尽量设置成无规律;
(5)建立测试方法集,不断积累、执行,将安全测试常态化。
作者:京东零售 孟迪
来源:京东云开发者社区
安全测试实践-万家APP越权逻辑漏洞挖掘的更多相关文章
- Web安全测试中常见逻辑漏洞解析(实战篇)
Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改 ...
- 渗透测试学习 二十一、 JSP相关漏洞
大纲 ST2漏洞 (Struts2) 反序列漏洞 网站容器,中间键 其他漏洞 Struts2漏洞 简介: Struts2是一个基于MVC设计模式的Web应用框架,它本质上相 ...
- 基于 burpsuite的web逻辑漏洞插件开发(来自JSRC安全小课堂,柏山师傅)
基于 burpsuite的web逻辑漏洞插件开发 BurpSuite 提供了插件开发接口,支持Java.Python.Ruby语言的扩展.虽然 BApp Store 上面已经提供了很多插件,其中也不乏 ...
- 2. Web渗透测试中常见逻辑漏洞解析与实战
注:以下漏洞示例已由相关厂商修复,切勿非法测试! 0x01 漏洞挖掘 01 注册 注册中最常见的有两个,一个是恶意注册,另一个是账户遍历.一个好的注册界面应该是这样 或者这样的 而不是这样的 要么使 ...
- 9-MySQL DBA笔记-测试实践
第9章 测试实践 在第8章中介绍了测试所需要的理论知识,本章将为读者讲述实际的测试过程.实际测试一般包括硬件测试.MySQL基准测试及应用服务压力测试,下面将分别讲述这三方面的内容.此外,测试工具的选 ...
- Python实践之(七)逻辑回归(Logistic Regression)
机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Pyth ...
- 从App业务逻辑中提炼API接口
2.1 从App业务逻辑中提炼API接口 业务逻辑思维导图 功能-业务逻辑思维导图 基本功能模块关系 功能模块接口UML(设计出API) 在设计稿标注API 编写API文档 2.2 设计API的要点 ...
- 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)
http://blog.csdn.net/zouxy09/article/details/20319673 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) z ...
- APP测试基本流程以及APP测试要点
APP测试流程梳理 APP测试要点梳理 链接:http://pan.baidu.com/s/1gfaEZ1x 密码:07yt 1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开 ...
- WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)
零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...
随机推荐
- 声网推出首个完整实时合唱解决方案 即将上线“咪哒”全国线下K歌房
4月20日,声网Agora宣布对实时合唱技术方案全面升级,帮助国内知名迷你KTV品牌"咪哒"实现国内首个支持多终端.多人合唱.高音质的完整实时合唱解决方案的落地,结束了国内K歌行业 ...
- VS2013连接SQLSERVER数据库时显示无法添加数据连接
VS2013连接sqlserver2008时出现如下错误: VS2013添加Microsoft SQL Server数据源时,会遇到无法添加数据连接. Could not load file or a ...
- windows下使用docker安装hyperf
https://blog.csdn.net/weixin_39398904/article/details/128469190 http://wiki.fengfengphp.com/zh-cn/ba ...
- VUE3.x之Proxy 我们为什么要使用Proxy
Object.defineProperty 劫持数据 只是对对象的属性进行劫持 无法监听新增属性和删除属性 需要使用 vue.set, vue.delete 深层对象的劫持需要一次性递归 劫持数组时需 ...
- 容器云平台监控告警体系(三)—— 使用Prometheus Operator部署并管理Prometheus Server
1.概述 Prometheus Operator是一种基于Kubernetes的应用程序,用于管理Prometheus实例和相关的监控组件.它是由CoreOS开发的开源工具,旨在简化Prometheu ...
- [BUUCTF]Web刷题记录
为提升观感体验,本篇博文长期更新,新题目以二次编辑形式附在最后 [ACTF2020 新生赛]Exec 打开后发现网页是关于执行一个ping指令,经过测试是直接执行的,所以就直接命令执行了 127.0. ...
- Win系统下的免杀思路(总结非教程)
1.简介 在安全厂商日趋成熟的背景下,编写免杀马的难度和成本日益增长.好用新兴的开源项目在短时间内就被分析并加入特征库.笔者调研了部分开源项目,其中也有项目做了类似的分析 [1],目前能够免杀的项目初 ...
- 线性规划的单纯形法—R实现
table { margin: auto } 线性规划的单纯形法 线性规划是运筹学中的一个基本分支,它广泛应用现有的科学技术和数学方法,解决实际中的问题,帮助决策人员选择最优方针和决策,自1947年丹 ...
- 华为人工智能atlasA800-9000物理服务器离线安装及CANN安装和MindSpore安装和Tensorflow安装
目录 华为人工智能atlas A800-9000 物理服务器全程离线安装驱动以及CANN安装部署和MindSpore安装部署和Tensorflow安装部署 A800-9000 物理服务器安装驱动 使用 ...
- vue项目webpack打包
之前一篇随笔写到vue多环境打包环境配置:https://www.cnblogs.com/shun1015/p/13411636.html 1.区分vue脚手架版本,版本不同,项目结构不同,多环境变量 ...