挖掘逻辑漏洞一般方法:
1. 发现网站所提供的功能模块;
2. 针对具体的功能确定业务流程;
3. 拦截HTTP/HTTPS请求,分析其参数的含义;
4. 修改参数值,尝试出发逻辑漏洞;
5. 返回第2步骤,对其他功能继续测试。
越权漏洞
越权漏洞可能存在的地方:增、删、改、查、详情、导出等功能点。
根据不同的维度可分为:水平越权(也称平行越权)、垂直越权和交叉越权。
水平越权:权限类型不变,权限ID改变(同一角色不同用户)。出现在同一个角色上,系统只验证了能访问数据的角色而没有对角色内的用户做细分,也没有对数据的子集做细分,因此缺乏一个用户到数据之间的对应关系。例如:在查看自己的信息时,发现URL中或者http请求头中有一个表示用户ID的参数:userID,通过修改参数userID的值后可以查看同一角色的其他用户的信息。
垂直越权:权限ID不变,权限类型改变(同一用户不同角色)。出现在不同角色上,一般来说高权限角色可以访问低权限角色的资源,而低权限角色访问高权限角色的资源原则被禁止,如果一个本属于低权限角色的用户通过一些方法能够获得高权限角色的能力,则发生垂直越权。例如:普通用户登录时,发现cookie中有一个表示角色的参数:roleID,通过修改roleID值为1或者0(根据具体情况来定),登录成功并可以使用管理员权限。
交叉越权:权限类型改变,权限ID也改变。
密码找回逻辑漏洞
例如:输入要找回密码的账号和手机号码,点击“获取验证码”,同时抓包,然后在返回包中看到认证的验证码,这样无需得到用户的手机即可得到该用户的验证码,最后输入新密码即可。
密码找回逻辑漏洞测试一般流程:
1. 选择不同的密码找回方式来尝试正常的密码找回流程,并记录所有数据包;
2. 分析数据包,找到敏感部分;
3. 分析后台找回密码机制所采用的验证手段;
4. 修改数据包,验证推测。
支付逻辑漏洞
1. 修改支付价格
购买商品一般分为三个步骤:(1)订购 ;(2)确认购买信息 ;(3)付款。在整个购买过程中都可以测试(金额尝试小数目或负数)。
2. 修改支付状态
已支付、未支付。
3. 修改购买数量
将数量修改负数。
4. 修改附属值
在很多购买的时候可以利用积分或者优惠卷等进行代替金额支付。
(1)修改代金劵金额:用代金劵进行消费一般出现在购买商品的第二个步骤:确认购买信息。
(2) 修改代金劵金额及业务逻辑问题:修改金额后支付失败,可能在订单处找到金额已变更的未支付订单,此时再完成支付。
(3)修改积分金额:修改积分数量或积分抵扣金额为任意数或负数。
5. 修改支付接口
一些网站支持多种支付,有自家的支付工具也支持第三方的支付工具,每个支付接口值皆不一样,若逻辑设计不当,当对支付进行抓包修改其支付接口为不存在的接口时,可能支付成功。
6. 多重替换支付
产生商品和价格皆不一样的两个订单,若服务端没有做好相关验证,则在支付的过程中抓包,修改其订单值为另一个订单值,最后支付就可实现用订单一的价格买到订单二的商品。
7. 最小额支付
修改金额往往都是0.01或者负数,但有一些情况是只支持正整数或有最小金额支付的限制,若用0.01去测试失败后放弃,则会错过。
8. 最大值支付
将支付金额或者附属值(代金劵金额&#x