前言
sql注入
,xss
,文件上传
,命令执行
等等常规的漏洞,但是在如今的环境下,结合当前功能点的作用,虽然不在owasp top10
中提及到,但是往往会存在的,一般叫做逻辑漏洞
。本篇文章是根据《web攻防业务安全实战指南》一书的知识进行简要的总结而成的笔记。
归类
逻辑漏洞主要产生的位置
-
登录处
-
业务办理处
-
验证码处
-
支付处
-
密码找回处
登录处存在的逻辑漏洞
可以暴力破解用户名或密码
没有验证码机制,没有根据用户名限制失败次数,没有根据ip限制失败次数等等
通常思路:
-
直接拿密码字典爆破某一个用户名
-
拿固定的弱口令密码,去跑top xxx的用户名
-
如果只是用户名限制失败次数,可以使用思路2的方法
-
在存在返回提示用户名错误或者密码错误的情况下,可以分别爆用户名和密码
常见限制:
-
有时候会发现用户名或者密码是密文加密,这时可能是通过前端或者其他方式加密,对于简单的来说 base64
编码和md5
的签名是很好识破的,在爆破的时候可以选择encode和hash
session没有清空
通常思路:
-
在登出后,拿登出前的session,重新访问需要登录的界面
业务办理处存在的逻辑漏洞
水平越权
通常思路:
-
拿2个账号,修改账号1的get或post参数给账号2
篡改手机号
通常思路:
-
抓包,查看
get
或者post
参数存在手机号的地方,进行修改
验证码处存在的逻辑漏洞
登录验证码未刷新
没有清空session中的验证码信息
通常思路:
-
抓包多次重放,看结果是否会返回验证码错误,如没有返回验证码错误则存在未刷新 -
观察检验的处理业务,如果验证码和用户名密码是分2次http请求校验,则也可以爆破用户名和验证码
手机或邮箱验证码可爆破
通常思路:
-
拿自己的手机号或邮箱先获取验证码查看验证码格式,之后多次提交错误的看是否有限制次数,没有就爆破
手机或邮箱验证码回显到客户端
response
包中有验证码,因此不需要手机和邮箱就可以获取验证码通常思路:
-
发送验证码时抓包,看返回包
修改response包绕过判定
false
之类的字段,如果修改response中的false
为true
,会识别为验证通过
通常思路:
-
抓包,选择 do intercept-> response to this request
,放包,抓到到下一个包就是response的包,可以修改,重放
支付处存在的逻辑漏洞
修改商品编号
通常思路:
-
先准备2个商品的编号,将其中一个改为另一个
条件竞争
通过条件竞争使余额达到负数,从而买多个商品
通常思路:
-
支付处,多线程请求付款确认,结果如果余额为负数,则存在该漏洞
金额修改
金额直接写在了post
或者get
请求中,对其进行修改达到修改了商品金额的效果
通常思路:
-
抓包修改金额的字段
商品数量修改
在购买时,如果一个商品为负数,那么它的价格则会是负数,如果购买多种商品,将其中一个设为负数,降低整体的价格
通常思路:
-
购物车里选取多个商品,修改其中一个商品的数量,在购买后查看最终的价格
通过前端限制限购商品
有些商品限购1个,但是判定是通过前端,因此可以抓包后修改数量
通常思路:
-
抓取限购数量内的包,抓取后修改个数,重放
充值中放弃订单未失效
在充值中选取大额充值订单,放弃订单,获得订单号,之后充值小额订单,拿到充值成功的界面,将订单号修改为放弃的大额订单,观察是否成功
通常思路:
1. 看看充值的时候是否有订单号字段,如果有在成功界面修改为未支付的订单号,观察是否充值成功
密码找回处的逻辑漏洞
验证码处的逻辑漏洞在密码找回处存在一样适用
修改发送的验证的目标为攻击者的邮箱或手机
通常思路:
-
抓包,注意找回密码流程中的邮箱号或者手机号字段,修改其为自己即可
session覆盖
通常思路:
-
准备2个账号,测试步骤如上所述
-
在邮箱收到找回密码连接时,依然可以使用该思路
弱token爆破
base64
,时间戳
,位数较低的随机数
则可以爆破通常思路:
-
正常找回流程获取重置密码的url,了解token的规则后,爆破其他邮箱的重置密码url
密码找回流程绕过
通常思路:
-
在设置好找回用户后,直接访问重设密码的url页面