业务逻辑漏洞

业务逻辑漏洞

概述

  • 由于开发者的逻辑不严谨造成的程序功能异常

  • 扫描器无法扫描出业务逻辑漏洞

常见场景

  • 暴力破解
  • 短信/邮箱轰炸
  • 固定会话
  • 用户名枚举(如 显示用户名不存在)
  • 验证码绕过/爆破/重放/回传
  • 越权登录(如修改数据包中用户 ID)
  • 商品金额/数量篡改
  • 整数溢出,int 最大值为 2147483647

整数溢出漏洞

原理

​ 整数溢出是指在计算机中使用固定大小的整数类型(如 int、short、long 等)进行运算时,结果超出了该整数类型所能表示的范围,导致结果不准确甚至出现错误的现象。

​ 计算机中通常使用固定的位数来表示,如32 位的 int 类型能表示的范围是 -231 到 231-1。当进行加减乘除等运算时,如果结果超出了该范围,就会发生整数溢出。

​ 整数溢出的发生是由于计算机采用的是有限位数的二进制表示,超出了这个范围就会丢失高位信息,导致结果不准确。

漏洞验证

​ 以 Java 中的 int 类型数据为例

​ int 类型的数据最大值为 2147483647,当小于等于最大值时,程序无误可以正常运行

​ 假设攻击者恶意增加订单的数量,从而使订单金额超过 int 类型数据的最大值,而后端使用的 int 型存储订单金额而无任何安全措施。当攻击者提交订单后,显示要支付的金额发生错误,从而导致此逻辑漏洞发生

​ 例: pay1 为 int 类型数据的最大值(在允许的范围内),可以正常输出支付金额。而当支付金额大于 int 类型的最大值时(pay2),则输出的支付金额变为负数!!!

image-20231127171448598

public class test {
    public static void main(String[] args) {
        int pay1 = 2147483647;
        int pay2 = pay1+1;
        System.out.println("未溢出的支持支付的最大金额:"+pay1);
        System.out.println("溢出后要支付的金额:"+pay2);
    }
}

pikachu 水平越权漏洞

漏洞点

没有针对具体身份的验证

漏洞验证

有三个账户,lucy,lili,kobe

image-20231127161024223

当一个用户如 lucy 登录后,可以查看登录的用户的信息

image-20231127161158274

当在 url 中更改用户名时,无需再次经过密码验证,即可查看其他用户的信息(该操作本应拥有其他用户密码,登陆后才可完成,但此处未经验证)

image-20231127161532595

此处存在逻辑漏洞

在 op1_mem.php 页面的验证逻辑中,没有针对具体身份的验证,只要成功登录该页面即可实现对任意用户的信息查询

image-20231127161919716

水平越权危害很大,使用其他人的账户进行汇款操作也属于水平越权逻辑漏洞的一种

pikachu 后台验证码验证

漏洞点

验证码在后台不过期,导致可以长期被使用

漏洞验证

验证码 rzditv

image-20231127163741937

用户名密码随便输入,点击登录,抓包

image-20231127163733043

发送到 Repeater 模块重放

image-20231127163151829

当验证码,用户名和密码都错误时,显示验证码错误

image-20231127164029295

将验证码输入正确的值,用户名和密码错误时,显示用户名或密码错误

image-20231127164203917

而当再次使用上次使用的验证码,验证其他用户名和密码时,验证码依旧可以验证成功

image-20231127164315907

此处存在逻辑漏洞

服务端验证验证码时比较输入的验证码与前端显示的验证码是否相同,只要使用者不主动更改前端验证码,验证码可重复使用。当 bp 多次爆破时不会触发改变前端验证码的操作,所以可以实现验证码的复用

验证码的作用是为了防止暴力破解,而此处存在的漏洞使验证码的存在完全失去了意义,攻击者可以爆破用户名和密码

  • 38
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gjl_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值