文章目录
- 一、什么是业务逻辑
- 二、业务逻辑漏洞的成因
- 三、逻辑漏洞的重要性
- 四、业务逻辑漏洞分类
- 五、业务逻辑漏洞——业务授权安全
- 1、未授权访问
- 2、越权访问
- 1) 平行越权(水平越权是指相同权限的不同用户可以互相访问)
- 2) 垂直越权(垂直越权是指使用权限低的用户可以访问权限较高的用户)
- 3、越权访问挖掘思路
- 4、越权漏洞的危害
- 5、如何检测越权漏洞
- 6、业务流程乱序
- 顺序执行缺陷
- 六、业务逻辑漏洞——业务接口调用
- 1、重放攻击
- 1)恶意注册
- 2)短信炸弹
- 3)无限刷积分/投票
- 4)投票活动刷票
- 2、内容编辑
- 1)时间范围修改
- 七、业务逻辑漏洞——业务一致性安全
- 1、手机号篡改
- 2、邮箱地址篡改
- 3、订单id篡改
- 4、商品编号篡改
- 5、用户id篡改
一、什么是业务逻辑
– – 实际上,我们口口声声的业务逻辑,是只用代码实现的真实业务的规则映射。注意“规则”这个词,简单说,一个业务中,存在什么逻辑,可以通过在纸上画出不同业务对象之间的联系和约束,并将这些联系和约束一条条列出来,形成一个列表,而这列表中的每一条,就是一条规则,这些规则的总和,就是这个业务的业务逻辑,而且是全部业务逻辑,你不能再多列出一条了。
二、业务逻辑漏洞的成因
– – 应用程序在设计和实施的时候存在缺陷,允许攻击者诱发意外行为,像是设计的方案被人钻了空子。 通俗理解就是:在编写程序时,只考虑了常规的操作流程,即“当在A情况下,就会出现B,此时执行C即可”,但是开发者却没有考虑当用户执行了意料之外的操作时会发生什么。这种对于异常情况的欠考虑,最终导致了安全漏洞的产生。
三、逻辑漏洞的重要性
– – 常见的OWASP漏洞,通过漏洞扫描工具,大多支持自动化或者半自动化扫描出来;并且传统的安全防御设备和措施收效甚微;
– – 但逻辑漏洞属于和系统自身功能和逻辑有关系的漏洞,每一家的漏洞出现可能存在一定的独特性,很难复制或者通过规则通过脚本扫描,因此逻辑漏洞大多需要配合代码审计和手动测试才可发现
相关漏洞,也是工具无法完全替代人所作的一类漏洞。
– – 业务逻辑属于正常请求,都是按照正常的程序走的,一般的安全设备是无法拦截的。
四、业务逻辑漏洞分类
- 验证码突破
- 业务授权安全
- 业务流程乱序
- 业务接口调用
- 时效绕过测试
- 身份认证安全
- 业务一致性安全
- 业务数据篡改
- 用户输入合规性
- 密码找回漏洞
五、业务逻辑漏洞——业务授权安全
1、未授权访问
– – 非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息。
– – 可以尝试在登录某网站前台或后台之后,将相关的页面链接复制于其他浏览器或其他电脑上进行访问,看是否能访问成功。例如:我用谷歌浏览器登录了百度的账号,然后我把登录后的个人中心页面链接复制下来,复制到火狐浏览器(从来没有登录过百度的账号)中,发现直接就登录成功了。这种就是未授权访问。
2、越权访问
– – 越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。
1) 平行越权(水平越权是指相同权限的不同用户可以互相访问)
– – 就是我登录某平台时,发现URL有ID号,我通过直接修改ID,就登录上了其他人的账号。
2) 垂直越权(垂直越权是指使用权限低的用户可以访问权限较高的用户)
– – 就是某平台的某高级功能的路径被泄露了,我用普通的账号登录,然后直接访问该路径,发现我的账号可以直接访问,并且可以使用原来不存在的功能。(低权限用户访问高权限用户)
3、越权访问挖掘思路
- 水平越权:如果在访问网站数据包中有传输用户的编号、用户组编号或类型综号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本。
- 垂直越权:添加用户,获取高权限用户的功能,在前端JS里面寻找泄露的路径
4、越权漏洞的危害
– – 越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响应包中,页面不一定能看见)中返回登录名、登录密码、手机号、身份证等敏感信息,如果存在平行越权,通过对用户ID的遍历,就可以查看所有用户的敏感信息,这也是一种变相的脱库,而且很难被防火墙发现,因为这和正常的访问请求没有什么区别,也不会包含特殊字符,具有十足的隐秘性。
5、如何检测越权漏洞
– – 最简单的一种检测方式是,首先是通过定位鉴权参数,然后替换为其他账户鉴权参数的方法来发现越权漏洞。
6、业务流程乱序
顺序执行缺陷
- a) 部分网站逻辑可能是先A过程后B过程然后C过程最后D过程
- b) 用户控制着他们给应用程序发送的每一个请求,因此能够按照任何顺序进行访问。于是,用户就从B直接进入了D过程,就绕过了C。如果C是支付过程,那么用户就绕过了支付过程而买到了一件商品。如果C是验证过程,就会绕过验证直接进入网站程序了。
- 举例:
访问注册页面,注册账户之后充值提交并抓取数据包,填写任意金额然后并抓包,获取订单号,利用订单号构造充值链接并访问,看是否能充值成功
六、业务逻辑漏洞——业务接口调用
1、重放攻击
– – 在短信、邮件调用业务或生成业务数据环节中(例:短信验证码,邮件验证码,订单生成,评论提交,签到,投票等),对其业务环节进行调用(重放)测试。如果业务经过调用(重放)后被多次生成有效的业务或数据结果。
1)恶意注册
– – 利用BURP不断发同一个包就可以注册,这样可以一次性发送大量的注册请求包,这就导致了恶意注册。
2)短信炸弹
– – 在测试的过程中,我们发现众多的系统仅在前端通过JS校验时间来控制
短信发送按钮,但后台并未对发送做任何限制
,导致可通过重放包的方式大量发送恶意短信。
3)无限刷积分/投票
– – 比如每天签到送5个积分,如果签到接口未做限制,无限重放签到接口,就能实现无限刷积分。
4)投票活动刷票
– – 投票接口未做限制,或仅仅在前端JS做限制,可无限重放投票接口,给指定用户刷票。
– – 不过目前大部分投票系统都有做限制,比如同一个IP每天只能投三次票,可尝试用XForwarded-For:127.0.0.1来绕过IP限制。
2、内容编辑
- 类似案例如下:
– – 点击“获取短信验证码”,并抓取数据包内容,如下图。通过分析数据包,可以发现参数sendData/insrotxt
的内容有客户端控制,可以修改为攻击者想要发送的内容。
– – 篡改短信内容,可用来钓鱼。
1)时间范围修改
– – 针对某些带有时间限制的业务,修改其时间限制范围,例如在某项时间限制范围内查询的业务,修改含有时间明文字段的请求并提交,查看能否绕过时间限制完成业务流程。
– – 这种漏洞某些程度也回导致严重后果,例如曾经很盛行的暂住证买卖。
七、业务逻辑漏洞——业务一致性安全
1、手机号篡改
– – 抓包修改手机号码参数为其他号码尝试。
– – 例如:在办理查询页面,输入自己的号码然后抓包,修改手机号码参数为其他人号码,查看是否能查询其他人的业务。
– – 还有一种情况,在修改密码的时候,是需要接收手机验证码的,这时候通过抓包,把接收验证码的手机改成我自己的,要是能修改,那我就可以修改其他账号的密码了。
2、邮箱地址篡改
– – 抓包修改用户邮箱参数为其他用户的邮箱。
3、订单id篡改
– – 抓包修改用户邮箱参数为其他用户的邮箱。
4、商品编号篡改
– – 例如:积分兑换处,100个积分只能换商品编号为001,1000个积分只能换商品编号005,在100积分换商品的时候抓包把换商品的编号修改为005,用低积分换区高积分商品。
5、用户id篡改
– – 抓包查看自己的用户id,然后修改id(加减1)查看是否能查看其它用户id信息。