共计 2473 个字符,预计需要花费 7 分钟才能阅读完成。
逻辑破绽会导致业务面临着微小的经济损失隐患与敏感数据泄露的危险,本文从平安测试的角度,以越权逻辑破绽为例,介绍逻辑破绽的开掘办法和实际过程。
一、什么是越权逻辑破绽
定义: 指因为零碎的权限管制逻辑不够谨严,使得零碎用户能够拜访或操作未受权的数据和性能。包含程度越权和垂直越权。
程度越权: 指当零碎存在多个雷同权限的用户时,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)建设测试方法集,一直积攒、执行,将平安测试常态化。
作者:京东批发 孟迪
起源:京东云开发者社区