[Web安全 网络安全]-业务逻辑漏洞

文章目录:

一:前言

1.定义

2.类型

3.危害

4.防护

5.测试业务漏洞

6.漏洞场景

二:靶场练习

1.越权

水平越权

垂直越权

2.支付漏洞

修改支付状态

修改商品的数量

修改商品金额

最小支付和最大支付

3.账号密码破解

4.验证码

验证码暴力破解

验证码客户端回显

验证码绕过

验证码自动识别


一:前言

1.定义

业务逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误
攻击者可以利用业务或功能上的设计缺陷,获取敏感信息或破坏业务的完整性
这类漏洞一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处


言简意赅:代码之后是人的逻辑,人更容易犯错,是随着人的思维逻辑产生的
大部分缺陷表现在:开发者在思考过程中做出的特殊假设,存在明显或者隐含的错误

2.类型

越权漏洞
    水平越权
        定义:相同级别(权限)的用户或者同一角色中不同的用户之间,可以越权访问、修改或者删除其他用户信息的非法操作
            【身份ID改变 权限类型不变】
        原理:通过更换某个ID之类的身份标识,从而使得A账号获取(修改,删除等)B账号的数据
        容易出现的地方:权限页面(需要登陆的页面)增,删,改,查的地方
        示例:某网站的用户A和用户B具有相同的权限。攻击者通过修改数据包中的用户ID参数,可以访问或修改用户B的信息
        危害:在游戏中,假如我们是平民玩家,我们仅仅通过修改ID,就变成了其他玩家,甚至有可能变成氪金大佬

    垂直越权
        定义:不同级别之间的用户或不同角色之间用户的越权,比如普通用户可以执行管理员才能执行的功能
            【身份ID不变 权限类型改变】
        原理:使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作
        容易出现的地方:低权限用户是否能越权使用高权限用户的功能,比如普通用户可以使用管理员的功能
        示例:某网站的管理员页面需要管理员权限才能访问。然而,攻击者通过修改数据包中的权限参数,可以以普通用户的身份访问管理员页面
        危害:信息泄露,篡改用户信息,严重者可修改密码等等


密码修改/找回漏洞
    漏洞描述:如果后台没有对旧密码进行验证,就直接允许输入新密码,会形成漏洞
        找回密码时,如果验证码的发送和验证机制存在缺陷,也可能被攻击者利用
    示例:某网站在找回密码时,通过邮箱发送一个包含auth链接的邮件
        然而,该auth链接的生成采用了rand()函数,在Windows环境下最大值为32768,因此可以被枚举
        攻击者通过枚举auth的值,可以重置任意用户的密码


验证码漏洞
    漏洞描述:服务端未对验证时间、次数作出限制,存在爆破的可能性
        验证码复用、绕过等也是常见的漏洞类型
    示例:某网站在找回密码或注册账号时,发送验证码到用户的邮箱或手机
        然而,攻击者通过抓取数据包,可以轻松地获取验证码的值,并使用该验证码进行非法操作


支付漏洞
    漏洞描述:攻击者可能通过修改支付金额、支付状态等方式,进行越权支付或盗刷
    示例:某网站的支付页面没有对支付金额进行严格的校验
        攻击者通过修改支付金额的参数,可以将支付金额修改为负数或任意值,从而进行非法支付


订单金额任意修改
    漏洞描述:在购物网站中,攻击者可以通过修改前端代码或抓取数据包的方式,对订单的金额进行任意修改
        这可能导致用户支付的金额与实际购买的商品价值不符,从而给企业带来经济损失。
    示例:某网站在选择商品放入购物车时,用户可以直接修改价格参数,如将价格从1337元修改为1元
        在购物车页面和结账页面,系统均接受了这个修改后的价格


短信轰炸
    漏洞描述:攻击者通过发送大量短信验证码请求,对目标用户进行短信轰炸,导致用户无法正常接收短信验证码
    用户信息泄露:如果网站没有对用户信息进行严格的保护,攻击者可以通过漏洞获取用户信息,如用户名、密码、邮箱等

3.危害

业务逻辑漏洞的危害极大,可能导致敏感信息泄露、业务完整性被破坏、经济损失等严重后果

例如,越权漏洞可能导致大批量数据泄露,严重的甚至会造成用户信息被恶意篡改;支付漏洞则可能导致企业遭受经济损失,用户资金被盗刷

4.防护

加强权限管理
    严格限制用户的访问和操作权限,确保用户只能访问和操作其权限范围内的数据
    对敏感操作进行双重验证或多重验证,以提高安全性


完善验证码机制
    对验证码的发送和验证过程进行严格控制,防止验证码被爆破或复用
    限制验证码的使用次数和有效期,防止其被滥用


强化支付安全
    对支付金额、支付状态等进行严格校验和监控,防止被篡改或盗刷
    采用安全的支付协议和加密技术,确保支付过程的安全性


加强代码审计和测试
    定期对代码进行审计和测试,发现并修复潜在的逻辑漏洞
    采用自动化测试工具和手动测试相结合的方式,提高测试效率和准确性


提高安全意识
    对开发人员进行安全培训和教育,提高他们的安全意识
    鼓励用户报告发现的安全问题,并及时进行处理和修复

5.测试业务漏洞

理解业务功能确定业务流程—>寻找流程中可以被操控的环节—>分析可被操控环节中可能产生的逻辑问题—>尝试修改参数触发逻辑问题

6.漏洞场景

账户
    注册
        任意用户注册/验证码失效绕过
        遍历账号/短信操作
        恶意注册/用户覆盖
        短信接收
        邮箱:前后空格、大小写变换
        手机号:前后空格、+86
    登录      
        身份认证安全
            异地登录等机制
            账号劫持
            恶意尝试锁死用户
            任意用户登录/短信轰炸
            验证码:返回包中回显;JS校验;撞库攻击;撞库攻击;验证码空值绕过;验证码可重复使用;验证码可控;验证码有规则;万能验证码000000
                短信验证码绕过
                图形验证码绕过
        cookie/session
    密码
        密码没有使用哈希算法保存
        没有验证密码强度
        密码找回
            前端校验
            短信轰炸
            验证码爆破
            任意密码重置
            越权修改密码
            返回凭证
    账户权限
        水平越权
        垂直越权
    会员系统
        用户越权访问
        订单查看修改
        收获地址越权查看修改
        资料越权查看修改
        换绑手机修改
        换绑短信轰炸
        水平垂直越权


业务活动
    活动福利重复提交领取:刷积分、刷优惠券
    修改领取数量


购物订单类
    支付逻辑
        价格修改
        状态修改
        越权查看订单
        刷优惠券
    购买逻辑
        物品价格:负值/零
        物品数量:小数/分数/负数
        物品编号:付款商品类型
        购买限制
    业务风控:刷优惠劵、套现
    业务流程顺序:跳过某些步骤

二:靶场练习

万能密码 

用户:admin' or 1=1 #
密码:随意
 
用户:admin' or '1'='1
密码:随意

1.越权

水平越权

一共两个用户,我们登陆到kobe用户,来测试越权到luck用户
    1.我们首先登录到kobe账户里面,点击查看个人信息,抓到包
    2.我们将这里的kobe改为lucy,放包
    3.成功越权到lucy用户

垂直越权

普通用户可以执行管理员才能执行的功能
    1.首先用admin/123456进行登陆抓包:放在重发器
    2.紧接着用pikachu/000000进行登陆抓包:将pikachu的cookie替换admin用户的cookie
    3.发送包:用户利用admin的cookie成功创建了test账户

2.支付漏洞

修改支付状态

假设A商品,我们进行了购买,用bp进行抓包,我们看到某一个字段
    0:表示支付成功
    1:表示支付失败

    假设我们暂时还未支付,bp显示的是1,我们将1修改为0


去购买A商品,是10元,B商品是1000元
    我们先购买A商品,将A商品的数据包,给B商品
    那么我们就能通过10元购买10000元的商品

修改商品的数量

假如1个馒头10元钱,那么10个馒头就是100元
    那么-1个馒头那?这种会不会产生零元购

修改商品金额

burp软件抓包:Proxy——>Options——>match and replace
    将请求数据包中的金额(999)全部替换成(0.01)

最小支付和最大支付

最小支付
    0元等于100积分,50元相当于500积分
    修改为0.01和负数会显示支付失败,但是如果你修改金额为1元,那么支付就会成功
    当你修改为1元支付接口时存在的,然后修改跳转过去支付就会以1元购买到比它多得多的积分


最大支付
    一般在开发当中,商品的金额都会用int型来定义,最大值2147483647
    我们尝试修改为2147483648,看看是否能造成整数的溢出,有可能支付状态异常,从而导致支付成功

3.账号密码破解

1.随机输入账号和密码和验证码——>点击登录

2.账号密码爆破
    burp工具——>intercept if off——>鼠标右键——>send to repeater——>positions模块
    clear——>对账号密码点击add——>load——>start attack

3.输入正确的账号密码,验证码

4.验证码

验证码暴力破解

burp工具——>proxy——>intercept——>intercept if on——>随机输入验证码提交

鼠标右键——>send to intruder——>positions——>clear——>选中验证码add

payloads——>payload type设置为numbers(from 111111 to 999999 step1)

通过返回的长度和内容来进行破解

验证码客户端回显

burp工具——>intercept if off——>raw——>鼠标右键Do intercept——>Response to this request

验证码绕过

burp工具——>intercept if off——>raw——>鼠标右键Do intercept——>Response to this request
    flase——>true
    0——>1

验证码自动识别

一般对于图片验证码的识别流程为
    图像二值化处理(图片上像素点设置为0或255黑白效果)
    去干扰(点 线 色彩)
    字符分割(字符区域划分成单个字符)
    字符识别(字符图片还原成字符文本 pkav http fuzzer软件)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘鑫磊up

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

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

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

打赏作者

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

抵扣说明:

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

余额充值