逻辑漏洞
逻辑漏洞是指由于程序逻辑输入管控不严或者逻辑太复杂,导致程序不能够正常处理或处理错误,逻辑漏洞根据功能需求的不同产生的漏洞方式也不同。一般出现在网站程序的登录注册、密码找回、验证方式、信息查看、交易支付金额等地方。
这类漏洞不同于常见WEB漏洞,常见WEB漏洞都可以总结为一定的范式,而逻辑漏洞不行
逻辑漏洞出现的原因也是有很多种,需要有一定个人经验积累才能在代码审计过程中发现此类漏洞
挖掘思路
首先将所有逻辑漏洞的问题分为前端和后端两个部分,先测试绕过前端规则限制再测试绕过后端规则限制,一般情况下只要能够突破原有规则限制的都就可以算是漏洞。
挖掘逻辑漏洞总体步骤分为以下三步:
- 明确业务逻辑流程,根据业务需求的特点,有针对性的进行测试。
- 寻找流程中可以被操控的环节,分析可被操控环节中可能产生的逻辑问题。
- 珠宝修改参数触发逻辑问题,重放包对比结果差异。
业务逻辑漏洞
登录模块
- 暴力破解
- 任意用户/密码登陆
- 短信/邮箱轰炸
- 验证码绕过/爆破/重放/回传
- 用户名/手机号枚举
- 越权登陆(例如修改数据包中用户ID)
- 账号权限绕过(越权)
- Cookie伪造
- 用户空密码登陆
注册模块
- 前端验证绕过
- 用户任意/批量注册
- 恶意验证注册账户
- 账户重复注册
- 用户名/绑定手机号枚举
- 注册信息插入XSS
- 短信/邮箱轰炸
- 验证码绕过/爆破/重放/回传
- 其他验证机制绕过
密码找回
- 任意/批量用户密码重置
- 任意邮箱/手机号验证(验证码与绑定用户未统一验证)
- 用户绑定手机号枚举
- 新密码劫持
- 短信验证码劫持/绕过/回传/爆破/重放
- 用户邮箱劫持/篡改
- 其他验证机制绕过
购买支付/充值
- 商品金额/数量篡改
- 替换支付模块
- 交易信息泄露
- 虚假充值金额
- 充值账户/金额/数量篡改
- 支付验证绕过
- 整数溢出,int最大值为2147483647
- 修改本地JS或服务端返回的数据包中的关键值
个人资料
- 手机号/用户/邮箱枚举
- 修改个人资料插入XSS
- 邮箱/用户/手机号篡改
- 用户信息遍历/泄露
- 越权修改他人账户资料
抽奖/活动
- 任意抽奖
- 盗刷奖品/积分
- 抽奖积分/次数篡改
- 并发抽奖
- 邀请码XSS(验证码URL可能包含用户名,可将用户名修改为XSS代码)
代金券/优惠券
- 批量刷取代金券/优惠券
- 更改代金券金额/数量
- 更改优惠券数量
- 并发逻辑漏洞(burp批量获取优惠劵等)
订单
- 订单信息遍历/泄露
- 订单信息泄露导致用户信息泄露
- 越权修改/删除他人订单
账户
- 账户验证绕过
- 账户金额篡改
- 账户绑定手机号绕过
- 账户第三方账户绑定绕过
会员系统
- 用户越权操作访问
- 个人资料信息遍历/泄露
- 修改个人信息头像上传任意文件
- 如果遇到xlsx/docx,可能存在XXE,上传恶意文档盲测
- 修改个人信息页面插入XSS
传输过程
- POST/Cookie注入
- cookie劫持
- 修改信息处无session/token导致CSRF
- 明文传输账号密码
评论模块
- POST注入
- 无session/token导致CSRF
- 评论时插入XSS
- 遍历用户ID导致用户信息泄露
- 恶意批量刷评论数量
第三方系统
- 第三方系统未授权访问
- 第三方账户信息遍历
- 第三方账户越权访问
- 第三方账户信息泄露
- 第三方应用版本漏洞
验证码安全
- 验证码参数删除绕过
- 验证码生成规律预测
- 验证码图像内容可被工具识别
- 验证码长期不失效,进行爆破
- 验证码回显到页面或者数据包中
- 单个验证码可多次重复利用
- 短信验证码与手机号未统一验证
- 短信验证码未对单个手机号发送次数进行限制
- 短信验证码未做发送时间限制,导致短信轰炸
- 可能存在万能验证码
接口调用
-
未授权访问敏感数据接口
-
短信api接口泄露被恶意调用
-
数据库接口泄露,导致数据可被恶意操作
学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供: