由于程序逻辑不严谨或逻辑太过复杂,导致一些逻辑分支不能正常处理或处理错误,统称为 业务逻辑漏洞

关注重点

业务流程

HTTP/HTTPS 请求分析

详情可看此篇
https://github.com/PyxYuYu/MyBlog/issues/102

订单任意金额修改

相同价格增加订单数量,相同订单数量减少产品价格,订单价格设定为负数。

预防思路:

  • 订单需要多重效验
  • 订单数值较大的时候需要人工审核

验证码回传

漏洞一般发生在账号密码找回、账号注册、支付订单等。验证码发送途径一般为手机短信、邮箱邮件

预防思路:

  • response数据内不包含验证码,验证方式主要采取后端验证,但是缺点是服务器的运算压力也会随之增加
  • 如果要进行前端验证的话也可以,但是需要进行加密

未进行登陆凭证验证

有些业务的接口,因为缺少了对用户的登陆凭证的效验或者是验证存在缺陷,导致黑客可以未经授权访问这些敏感信息甚至是越权操作。比如后台页面、订单ID枚举、敏感信息可下载、没验证ID或cookie验证导致越权。

预防思路:

  • 对敏感数据存在的接口和页面做cookie,ssid,token或者其它验证

接口无限制枚举

  • 某电商登陆接口无验证导致撞库
  • 某招聘网验证码无限制枚举
  • 某快递公司优惠券枚举
  • 某电商会员卡卡号枚举

预防思路:

  • 在输入接口设置验证,如token,验证码等。如果设定验证码,最好不要单纯的采取一个前端验证,最好选择后端验证。如果设定token,请确保每个token只能采用一次,并且对token设定时间参数。

  • 注册界面的接口不要返回太多敏感信息,以防遭到黑客制作枚举字典。

  • 验证码不要用短数字,尽量6位以上,最好是以字母加数字进行组合,并且验证码需要设定时间期限。

  • 优惠券,VIP卡号请尽量不要存在规律性和简短性,并且优惠券最好是以数字加字母进行组合。

cookie设置存在缺陷

  • Cookie的效验值过于简单。有些web对于cookie的生成过于单一或者简单,导致黑客可以对cookie的效验值进行一个枚举.
  • cookie存在被盗风险,即用户重置密码后使用老cookie依然可以通过验证
  • 用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。不能采取简单的base64等算法
  • 越权:平行越权:权限类型不变,权限ID改变;垂直越权:权限ID不变,权限类型改变;交叉越权:即改变ID,也改变权限

预防思路

  1. cookie中设定多个验证,比如自如APP的cookie中,需要sign和ssid两个参数配对,才能返回数据。
  2. 用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。
  3. 用户的cookie的生成过程中最好带入用户的密码,一旦密码改变,cookie的值也会改变。
  4. cookie中设定session参数,以防cookie可以长时间生效。
  5. 根据业务不同还有很多方法

找回密码功能缺陷

  1. 单纯读取内存值作为用户凭证
  2. 电商系统加车、下单漏洞

参考文章:
https://github.com/PyxYuYu/MyBlog/issues/102