业务逻辑漏洞总结

逻辑漏洞

在我理解中,逻辑漏洞是指由于程序逻辑输入管控不严,导致程序不能够正常处理或处理错误,一般出现在登录注册、密码找回、信息查看、交易支付金额等。

我将所有逻辑漏洞的问题分为前端和后端两个部分,总体思路都是先测试前端再测试后端。在我理解中其实就是能突破规则限制的就是漏洞【像不可修改的通过抓包可以修改了】。

一、注册处

注册功能可能出现任意用户注册、短信轰炸等问题。

配合思维导图(此处以常见的手机注册举例,同理其他注册也可以套用该模型)。

框里面是对每一个步骤的解释,框右边是总结的流程。(先不管图片验证码的原因是因为就算图片验证码可绕过,厂商也会因为该漏洞危害小而忽略)

1、前端

首先是前端,打开burpsuite,将整个注册流程走一遍,将每个步骤的包都右键标上不同颜色。

就像这样:

查看每个返回包有没有返回手机验证码或者存在true、false之类的判断语句,尝试将false修改为true,成功注册的话就绕过了前端验证。

这样可以拦截该请求返回包:

2、短信轰炸

尝试重放发送验证码的包,查看手机是否在短时间内收到了多条短信,是的话则存在短信轰炸漏洞,这是因为后端没有对发送手机短信做时间限制。

3、修改发送包手机号

最后是修改发送包的手机号,首先用自己的手机收到正确验证码,在点击注册时拦截包将手机号改为其他手机号,如果成功的话就注册了别人的手机号,这是因为后端仅验证了验证码是否是正确的而没有验证验证码是否与手机匹配。

流程小结

1、前端判断【回显及判断】

2、短信轰炸

3、修改发送包手机号

【邮箱注册】4、修改发送包邮箱尝试覆盖注册

以上是手机注册的大概框架流程,同理其他注册类型也可以对比测试。

二、登录处

登录处可能出现任意用户登录、验证码可绕过、用户账号可撞库等问题。

配合思维导图,此处思维导图上说的密码也是手机验证码,因为是以手机验证码登录举例(此处以常见的手机验证码登录举例,同样账号密码登录也可以套用该模型,手机验证码登录的特殊处已用框标记)

同样的,也是先测试前端再测试后端。

1、前端

首先对比正确登录和错误登录的包,对比返回包看是否有判断,尝试修改参数绕过前端验证。(这里也是打开burpsuite整个流程走一遍,和上面的注册处测试差不多)

2、短信轰炸

测试短信轰炸与注册处测试步骤一样(一般来说注册处有短信轰炸的话这里也会有)。

3、验证码爆破

再然后就是验证码爆破(或绕过),此处验证码包括图片验证码和手机验证码,先测试图片验证码,将使用正确密码登录的包再重放一次,如果回显还是正确登录的话说明并没有对图片验证码进行限制,可以尝试撞库。

至于手机验证码,通常是尝试爆破,如果网站发到手机上的短信没有写什么在xx时间内有效之类的则有可能没有时间限制,将登录包右键发送至Intruder(即测试器模块)设置好爆破位置后在载荷里选择数值后这样填写。

通常范围是填写正确验证码所在的范围,爆破出来可以登录用户,漏洞标题也就可以写任意用户登录漏洞。

4、修改发送包手机号

修改发送包手机号则和上面注册处修改发送包手机号步骤一样,不同的是上面注册处是为了测试任意用户注册,而这里登录处是为了测试任意用户登录,原理一样目的不同。

5、修改用户参数

查看正确登录包的返回包是否有用户id之类的参数,尝试修改该参数。(不嫌麻烦的话可以用两个正确登录的返回包对比)

拦截该请求的返回包修改返回包中的用户参数。

`EE{LWFHDG0J([HDD29S)13.png

流程小结

1、前端判断【回显及判断】

2、短信轰炸

3、验证码爆破

4、修改发送包手机号

5、尝试修改用户参数【注意token等参数】

三、密码找回处

密码找回处可能出现任意用户密码找回、验证码可绕过等问题。

密码找回处的思维导图,此处以手机验证码找回为例。

这里也是先前端再后端。

1、前端

前端测试与前面一致,无非就是修改返回包看是否能跳过验证步骤,此处也就略过。

2、验证码爆破

第2步之所以没有写短信轰炸是因为前面注册和登录已经测试过了。

验证码爆破与上面登录处的验证码爆破操作一致。

3、修改发送包手机号

这里与上面注册处的修改发送包手机号操作一致,也就不多说了。

流程小结(其实精华都在思维导图上,其他的都是做解释,在最后我会把思维导图整体放上来)

1、前端判断【回显及判断】

2、验证码爆破

3、修改发送包手机号或邮箱【提交时修改手机号或者修改验证码发送包的手机号】

4、【邮箱找回】链接尝试修改用户参数【注意token等参数】

四、支付与越权

这里放上思维导图。

2$1(WJDQ4JDVMZDNN}TB%JD.png这里之所以没有按先前端再后端的顺序来写,是因为几乎每个网站的支付和越权逻辑都不太一样,使用先前端再后端这样的框架的话就限制了思路。

在支付和越权这里我认为,只要有参数,都可以修改,都有可能出现问题。

通常我会使用两个账号来对比测试,这样可以更快发现可疑参数。

解释(有任何问题都可以留言,我会尽量解答,问题很多的话我会在过段时间的进阶篇里统一归纳整理):

支付接口指的是网站支付一般会有像微信支付、支付宝支付这种,一般网站会在支付的发送包里用某个参数标识。

登录时查看并测试用户信息返回接口指的是,在登录的时候,有的网站有个返回包是一个json数据包,该包内包含了用户敏感信息,此时就可以尝试修改发送包的用户参数,说不定就能获取其他用户的敏感信息。 

思维导图总览

T]45BN](ZCYKYM7(5IA1P8X.png

 转载于https://www.freebuf.com/articles/web/195837.html

posted @ 2021-09-17 22:16  随风kali  阅读(824)  评论(0编辑  收藏  举报