业务逻辑漏洞总结 一、漏洞介绍逻辑漏洞是指由于程序逻辑不严谨导致一些逻辑分支处理错误造成的漏洞。在实际开发中因为开发者水平不一没有安全意识而且业务发展迅速内部测试没有及时到位所以常常会出现类似的漏洞。二丶常见类型三、挖掘思路首先将所有逻辑漏洞的问题分为前端和后端两个部分先测试绕过前端规则限制再测试绕过后端规则限制一般情况下只要能够突破原有规则限制的都就可以算是漏洞。挖掘逻辑漏洞总体步骤分为以下三步明确业务逻辑流程根据业务需求的特点有针对性的进行测试。寻找流程中可以被操控的环节分析可被操控环节中可能产生的逻辑问题。修改参数触发逻辑问题重放包对比结果差异。四、漏洞情景1、登录模块暴力破解任意用户/密码登陆短信/邮箱轰炸验证码绕过/爆破/重放/回传用户名/手机号枚举越权登陆例如修改数据包中用户ID账号权限绕过越权 Cookie伪造 用户空密码登陆2、注册模块前端验证绕过用户任意/批量注册恶意验证注册账户账户重复注册用户名/绑定手机号枚举注册信息插入XSS短信/邮箱轰炸验证码绕过/爆破/重放/回传3、密码找回任意/批量用户密码重置任意邮箱/手机号验证验证码与绑定用户未统一验证用户绑定手机号枚举新密码劫持短信验证码劫持/绕过/回传/爆破/重放用户邮箱劫持/篡改4、购买支付/充值商品金额/数量篡改替换支付模块交易信息泄露虚假充值金额充值账户/金额/数量篡改支付验证绕过整数溢出int最大值为2147483647修改本地JS或服务端返回的数据包中的关键值5、个人资料手机号/用户/邮箱枚举修改个人资料插入XSS邮箱/用户/手机号篡改用户信息遍历/泄露越权修改他人账户资料6、订单订单信息遍历/泄露订单信息泄露导致用户信息泄露越权修改/删除他人订单7、评论模块无session/token导致CSRF评论时插入XSS遍历用户ID导致用户信息泄露8、验证码安全验证码参数删除绕过验证码生成规律预测验证码图像内容可被工具识别验证码长期不失效进行爆破验证码回显到页面或者数据包中单个验证码可多次重复利用短信验证码与手机号未统一验证短信验证码未做发送时间限制导致短信轰炸可能存在万能验证码关于验证码万能验证码程序员在开发验证码模块时为了方便调用验证码验证功能是否完善故意设置了几个万能的验证码作为测试数据。在开发结束后由于程序员的疏忽没有删除该测试验证码数据从而导致该漏洞的产生。验证码回传通过抓包的方式可以看到验证码内容回显在了数据包中或者通过查看网页源代码可以看到验证码中的内容导致正确验证码可以被直接读取利用到。删除验证码绕过通过抓包将验证码的值删除或者直接删除验证码参数然后将修改后的数据包进行重放导致验证码验证被绕过。验证码绕过其实这里不只是验证码在某些密码找回或者验证用户凭证的时候会根据返回的状态码进行校验假设验证码是正确的返回的状态码为1错为2这里我们就可以通过抓取响应包修改状态码为1即可达到验证绕过。最开始的时候我不会抓响应包后来才知道怎么抓很简单就是在Burp里面的Do intercept - Response to this request。验证码爆破此处验证码爆破通常是指手机短信验证的方式由于没有对输入同一个验证码的次数做限制并且验证码的内容太简单例如4位或者6位的纯数字组成。可以通过Burp的Intruder模块对验证码内容进行爆破直到匹配到正确的验证码。验证码重放首先输入错误的验证码进行抓包重放一次观察验证的返回的数据包内容再用正确的验证码再进行抓包重放对比两个数据包的差异然后根据这些差异验证码是否失效。然后将正确的验证码发送至Burp的Intruder模进行不断的重放比较这些数据包是否都是正确验证码时返回的一样内容如果数据包内容一样说明存在验证码重放的漏洞。任意用户密码重置通常发生在忘记密码处由于系统没有严格匹配用户忘记密码时的验证方式通过抓包修改用户参数导致任意用户的密码都能够被重置。比如某个忘记密码功能处采用手机号短信验证的方式来重置用户密码如果该验证手机号没有对用户账户进行绑定我们可以通过抓包修改绑定的手机号码为我们的手机号即可造成密码重置。