逻辑漏洞挖掘技巧

admin 2023年1月30日21:21:09评论31 views字数 3851阅读12分50秒阅读模式

0x01 可能存在的安全隐患

测试系统是否存在设计缺陷、逻辑错误漏洞,如支付漏洞、业务流程绕过、业务功能缺陷、短信轰炸、任意用户密码重置等,熟悉且利用好每一个业务的功能点,细心才能挖到漏洞

0x02 漏洞原理

逻辑漏洞挖掘技巧

什么是设计缺陷/逻辑漏洞?

设计缺陷/逻辑漏洞是指由于程序逻辑不严谨或逻辑太复杂,导致一些逻辑分支不能正常处理或处理错误。攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。

设计缺陷/逻辑漏洞产生的主要原因

一个系统功能太多后,程序开发人员难以思考全面,只考虑了常规的操作流程(比如,在A情况,会出现B,那么执行C即可),对某些地方可能有遗漏,或者未能正确处理,从而导致逻辑漏洞。逻辑漏洞也可以说是程序开发人员的思路错误、程序开发人员的逻辑存在错误。

一般常出现在什么场景?

用户注册、用户登录、验证码获取、权限鉴定、交易支付、修改个人资料等。

为什么逻辑漏洞不好防范?

设计缺陷/逻辑漏洞是非常隐蔽的,它不像SQL注入、XSS、文件上传、命令执行等,有鲜明的表示,自动化、半自动化扫描器可以定义一系列规则识别出这些漏洞,而逻辑漏洞一般出现在功能、业务流程中,每个漏洞的出现都有一定的独特性,很难复制或者通过规则脚本、漏扫工具精准识别。攻击者利用代码逻辑上的缺陷,利用合法流量进行攻击,也没有防御标准。

支付漏洞简介

支付漏洞是 高风险漏洞 也属于 逻辑漏洞,通常是通过 篡改价格、数量、状态、接口、用户名等传参,从而造成 小钱够买大物 甚至可能造成 0元购买商品 等等,凡是 涉及购买、资金等方面的功能处 就有可能存在支付漏洞。

逻辑漏洞挖掘技巧

快捷支付原理

商户网站接入支付结果,有两种方式,一种是通过 浏览器进行跳转通知,一种是 服务器端异步通知

浏览器跳转通知

基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性(这种方式数据经过了客户端浏览器,极大的可能性被第三方恶意修改)

服务器端异步通知

该方式是支付公司服务器后台直接向用户指定的异步通知URl发送参数,采用POST或者GET的方式。商户网站接受异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。

常见的支付漏洞

##修改订单金额

支付三步曲——订购、订单、付款

三个步骤当中的随便一个步骤进行修改价格测试,如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改

金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额值可以尝试小数目或者尝试负数。

支付漏洞如何挖掘

1、找到关键的数据包

可能一个支付操作有三四个数据包,我们要对数据包进行挑选。

2、分析数据包

支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分。析。

3、不按套路出牌

多去想想开发者没有想到的地方。

4、pc端尝试过,wap端也看看,app也试试



逻辑漏洞挖掘技巧

水平越权和垂直越权概述

水平越权:指攻击者尝试访问与他拥有相同权限的用户资源。
垂直越权:低权限用户尝试访问高权限用户的资源。(例如一个用户的个人信息管理页是 user.php,而管理员管理所有用户信息的页面是 manageuser.php, 但管理页面没有相关的权限验证,导致任何人输入管理页面地址都可以访问)。

漏洞产生原因

越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。
通常情况下,一个 Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果。如果验证权限不足,便会导致越权。常见的程序都会认为通过登录后即可验证用户的身份,从而不会做下一步验证,最后导致越权。

水平垂直越权漏洞实战案例

逻辑漏洞挖掘技巧

可以看到这里property value的参数是当前学号,与上一篇提到的水平越权差不多,response可以看到一些个人的敏感信息,我们修改参数看看能不能造成水平越权,

逻辑漏洞挖掘技巧

成功越权查看他人敏感信息

不过这里的property value是属性值的意思,现有的信息了解到当前学号是student的身份,所以我们可以尝试把这里的参数修改为teacher或者是admin看看有没有什么收获

修改为admin看看,发包

逻辑漏洞挖掘技巧

成功造成垂直越权,返回了当前admin身份的一些敏感信息和email

同样此处原理也大致相同

逻辑漏洞挖掘技巧

某信息采集模块点击申请,抓包

逻辑漏洞挖掘技巧

数据包往下滑,最底下有个personId=xxx&type=xxx的参数

逻辑漏洞挖掘技巧

personId对应当前身份的学号,type也就是当前身份的缩写,我们先尝试修改personId发包看看

逻辑漏洞挖掘技巧

成功造成水平越权,与上一个漏洞同理,这里所写的stu代表的是学生身份,尝试修改为teacher看看是否有收获

逻辑漏洞挖掘技巧

成功造成垂直越权,不过此处并没有显示敏感信息

数据包下面:personId=admin&type=tea ,如果这里改成老师的工号,或许会有附带信息


如何查找越权漏洞

常见的越权高发功能点有:==根据订单号查订单==、==根据用户 ID 查看帐户信息==、==修改 / 找回密码==等。

对于代码审计,可以先查看前端的网页源码,查看一些操作的表单提交的值。查看配置文件和一些过滤器,看是否对 URL 有相关的筛选操作。最后查看后台处理逻辑,是否存在身份验证机制,逻辑是否异常,有时的逻辑漏洞也可导致越权操作。

在与服务器进行数据交互时客户端携带着标识用户的身份的cookie,当服务端的session与cookie中的身份匹配成功后,才能允许该用户进行相关操作。除了cookie之外,在请求中可能会带一些参数,细览下可能存在辨别信息的唯一值,来进行测试。这里要说一点,传输的参数并不一定在请求参数中,也有可能存在URL链接的位置(GET和POST请求的区别)。当拦截一个请求后分析是否有参数:
1、请求中不存在参数,只用cookie进行身份验证,无法水平越权,可能出现垂直越权;

2、==请求中存在参数,并且参数中的某些值可能是辨别信息的唯一值(如employeeID、departmentID、ID等),可能存在水平和垂直越权==;越权的原因是参数中的employeeID没有判断是否是cookie中用户所管辖的员工ID。

逻辑漏洞挖掘技巧

SRC中的逻辑漏洞总结

1.注册

1.短信轰炸

2.验证码安全问题

3.密码爆破

4.邮箱轰炸

2.用户任意注册、批量注册

3.用户名枚举

4.XSS(有框的地方就可以尝试插XSS

5.登录

1.短信轰炸、验证码安全问题、密码爆破、邮箱轰炸

2.SQL注入

3.撞库

4.抓包把password字段修改为空值发送

5.认证凭证替换、比如返回的数据包中包含账号,修改账号就能登录到其他账号

6.Cookie仿冒

7.修改返回包的相关数据,可能会登陆到其他的用户

6.找回密码

1.短信邮箱轰炸、短信邮箱劫持

2.重置任意用户账户密码、验证码手机用户未统一验证

3.直接跳过验证步骤

7.购买支付、充值(要利用抓包去仔细查看每一个可用的参数)

1.交易金额、数量修改、更换支付模块(比如更换支付的模块金额)

2.交易信息订单编码/导致信息泄露

3.整数溢出,int最大值为2147483647,超过最大值

4.修改充值账户

5.支付绕过

8.抽奖活动

1.刷奖品、积分

2.并发

9.优惠卷、代金卷

1.并发逻辑漏洞(burp批量获取优惠券)

2.修改优惠券金额、数量

10.订单信息

1.订单信息遍历、泄露

2.订单信息泄露导致用户信息泄露

3.删出他人订单

11.会员系统

1.修改个人信息上传文件,上传带弹窗的html

2.如遇上上传xlsxdocx,可能存在XXE,上传恶意的文档盲测

3.图片上传也可能遇到imagereagick命令执行,上传恶意图片

4.视频上传如果使用ffmpeg<3.2.4(视频按帧分割成图片),上传恶意avi盲测ssrf

5.用户横向越权访问、遍历、导致用户信息泄露

6.SQL注入、个人简历处存储XSS个人信息注册的名称也可以插入XSS

12.传输过程

1.明文传输账户密码

2.修改信息处无session/token导致csrf

3.POST/COOKIE注入

13.评论

1.POST注入

2.存储型XSS

3.session/token导致CSRF


1.验证码问题

1.万能验证码

2.返回包中存在验证码

3.删除验证码或者cookie中的值可以爆破账号密码

2.短信轰炸

1.一直重放

2.删除修改cookie,重放数据包

3.遍历参数发送数据包

4.手机号后面加空格或者前面加其他的比如+86或者逗号分号等,然后重发数据包

5.请求参数修改大小写,或者添加请求参数比如&id=1

6.一个站的登录处可能做了防护,但是再找回密码处可能没有安全防护,或者在注册流程中没有安全防护,所以说多测试接口

7.如果对手机号一天的次数进行了限制,还可以再发一次短信,DO intercept之后修改为成功回显

3.水平越权

1.主要登陆后还是修改参数,主要找到多个接口不断测试

2.关注网页源代码,有时候会有表单,但被bidden(隐藏标签)给隐藏起来了,可以修改返回包然后尝试获取数据检测

3.多个账号,主要分析请求参数

4.数据泄露

1.再找回密码处,填写数据后抓包查看返回信息,有可能存在敏感数据返回

5.任意用户密码重置

1.目前大部分都是在修改密码处参数修改

2.有些是前端验证

原文始发于微信公众号(Rot5pider安全团队):逻辑漏洞挖掘技巧

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月30日21:21:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   逻辑漏洞挖掘技巧http://cn-sec.com/archives/1529638.html

发表评论

匿名网友 填写信息