在平时学习安全中常常会有涉及到sql注入
,xss
,文件上传
,命令执行
等等常规的漏洞,但是在如今的环境下,结合当前功能点的作用,虽然不在owasp top10
中提及到,但是往往会存在的,一般叫做逻辑漏洞
。
本篇文章是根据《web攻防业务安全实战指南》一书的知识进行简要的总结而成的笔记。
逻辑漏洞主要产生的位置
没有验证码机制,没有根据用户名限制失败次数,没有根据ip限制失败次数等等
通常思路:
常见限制:
base64
编码和md5
的签名是很好识破的,在爆破的时候可以选择encode和hash登出后服务器端的session内容没有清除,因此客户端重新带回登出前的session,也能够达到重新登录
通常思路:
通常说的越权一般是修改get或者post参数,导致的查看到他人的业务信息,一般看订单处,个人信息处等位置的参数
通常思路:
在需要手机号的短信验证处,抓包修改手机号,可能做到非本账号手机号获取能够编辑本账号的验证码
通常思路:
get
或者post
参数存在手机号的地方,进行修改没有清空session中的验证码信息
通常思路:
没有对应的手机号或邮箱,但如果验证码纯数字4,5位左右,没有次数校验,可以爆破
通常思路:
在发送给手机或者邮箱验证码时,会在response
包中有验证码,因此不需要手机和邮箱就可以获取验证码
通常思路:
在输入错误的验证码时会返回false
之类的字段,如果修改response中的false
为true
,会识别为验证通过
通常思路:
do intercept-> response to this request
,放包,抓到到下一个包就是response的包,可以修改,重放如果业务是通过商品编号来判断价格的话,可能存在只修改A商品编号为B商品编号,做到以A商品的价格购买B商品
通常思路:
通过条件竞争使余额达到负数,从而买多个商品
通常思路:
金额直接写在了post
或者get
请求中,对其进行修改达到修改了商品金额的效果
通常思路:
在购买时,如果一个商品为负数,那么它的价格则会是负数,如果购买多种商品,将其中一个设为负数,降低整体的价格
通常思路:
有些商品限购1个,但是判定是通过前端,因此可以抓包后修改数量
通常思路:
在充值中选取大额充值订单,放弃订单,获得订单号,之后充值小额订单,拿到充值成功的界面,将订单号修改为放弃的大额订单,观察是否成功
通常思路:
1. 看看充值的时候是否有订单号字段,如果有在成功界面修改为未支付的订单号,观察是否充值成功
在找回密码处,如果字段带上用户名,校验的邮箱或者手机号,将邮箱或者手机号改为自己的,如果自己的能够收到验证码并重置密码,则该漏洞存在
通常思路:
已知A的手机号,不知B的手机号,找回A的密码,输入验证码后到了设置新密码设置界面。这时在同一浏览器下重开窗口找回B的密码,获取验证码,刷新A设置新密码的页面,如果此时修改的是B账号的密码,则存在漏洞
通常思路:
有些时候通过找回密码的时候填邮箱,邮箱此时会收到一个带有token的链接,点击链接就能跳转到重置密码的页面,如果token是base64
,时间戳
,位数较低的随机数
则可以爆破
通常思路:
在找回密码处,一般会有三个步骤页面,页面1找回用户的填写,页面2找回时的手机号短信验证码填写,页面3填写新密码,如果填好页面1,直接访问页面3能够重设密码的话,则会存在该漏洞
通常思路: