当前位置: 首页 > news >正文

【Java代码审计】逻辑漏洞篇

【Java代码审计】逻辑漏洞篇

  • 逻辑漏洞概述
  • 常见逻辑漏洞点

逻辑漏洞概述

逻辑漏洞一般是由于源程序自身逻辑存在缺陷,导致攻击者可以对逻辑缺陷进行深层次的利用。逻辑漏洞出现较为频繁的地方一般是登录验证逻辑、验证码校验逻辑、密码找回逻辑、权限校验逻辑以及支付逻辑等常见的业务逻辑

与普通的 Web 漏洞相比,逻辑漏洞的不同点在于其源代码本身可能并不存在漏洞,简单来说就是像一些零部件,这些零部件的做工都是没问题的,但是组装起来时可能会因为忽略了某些临界条件或环境而出现问题。逻辑漏洞也是如此,在一个完整的逻辑控制链中,每一个链的逻辑可能都没有问题,但是当串到一起时可能导致逻辑存在缺陷,进而出现逻辑漏洞

常见逻辑漏洞点

用户验证模块

1、“用户名不存在”,利用这个反馈信息来爆破获取用户名

2、若有攻击者针对大量用户进行密码爆破,则可能导致大量用户在短时间内无法登录自己的账号,从而影响业务。旧版本的腾讯 QQ 曾采用该机制,密码输错多次后会在 24h 内禁止登录,有不少恶意攻击者故意输错其他用户的密码,从而达到封禁他人 QQ账号的目的

3、登录时的验证码不变,验证码没有一个完整的服务请求,只有当用户刷新 URL 时才改变;拦截登录时验证码的刷新请求,可以使第一次验证码不会失效,从而绕过验证码的限制

4、一些使用短信验证码登录的站点,当验证短信验证码时返回 state 的成功值是 success,失败值是 false,然后客户端根据 state 的值来确定下一步的动作。这样,我们可以通过修改响应包,绕过短信验证

5、有的时候在短信验证码处随便输入验证数字会返回验证码错误,但是当我们将验证码置空提交请求时,服务端却不校验,从而通过置空绕过登录验证

6、验证码有效时间过长,导致不失效可被爆破

7、验证码找回界面未作校验,导致可以跳步找回,即直接访问密码修改界面页面

8、未对找回密码的每一步做限制,如找回需要 3 个步骤,第一步确认要找回的账号,第二步做验证,第三步修改密码。在第三步修改密码时,存在账号参数,因此可以尝试修改其他用户账号,达到修改任意账户密码的目的

9、有些密码找回时未做验证码功能,因而可能导致账号枚举

支付模块

10、未对价格进行二次验证,导致攻击者可以抓包修改价格参数后提交,实现修改商品价格的逻辑漏洞

11、存在两个订单,一个订单 1 元,另一个订单 1000 元,对于 1 元订单进行支付,支付后返回时存在 token,将这个 token 保存,然后再将订单号替换成贵的订单,这样就可能完成两个订单的同时支付

12、没有对购买数量进行负数限制,这样就会导致有一个负数的需支付金额,若支付成功,则可能购买了一个负数数量的产品,也有可能返还相应的积分/金币到用户的账户上

13、请求重放,当支付成功时,重放其中请求,可能导致本来购买的一件商品数量变成重放请求的次数,但价格只是支付一件商品的价格,更甚者多次下订单,会出现0 元订单情况

http://www.lryc.cn/news/347872.html

相关文章:

  • SSH简介
  • Oracle的高级分组函数grouping和grouping_id
  • SqlServer 查询数据库 和 数据表 大小的语句
  • 特殊类的设计与单例模式
  • MySQL从入门到高级 --- 6.函数
  • Qt---信号和槽
  • POCEXP编写—文件上传案例
  • C#知识|上位机UI设计-详情窗体设计思路及流程(实例)
  • 目标检测——印度车辆数据集
  • Zotero Word中插入带超链接的参考文献
  • 如何在服务器上下载,解压github上的代码
  • BGP学习二:BGP通告原则,BGP反射器,BGP路径属性细致讲解,新手小白无负担
  • Docker学习(带图详细)
  • RabbitMQ 如何使用延迟队列
  • 【C++】栈和队列
  • 常用的预编码算法学习
  • 人才培养计划大纲
  • 多语言环境下的正则表达式实战:校验整数、小数
  • 过拟合和欠拟合的学习
  • 中间件的使用
  • 阿里云OSS权限开通步骤及最佳实践
  • 【Python贪吃蛇】:编码技巧与游戏设计的完美结合
  • 2024.5.19 机器学习周报
  • 母亲节祝福html源码示例
  • 微信小程序开发中的权限管理与用户身份验证:守护数据安全与用户体验
  • Python3 笔记:二进制的转换
  • 代码审计-PHP模型开发篇动态调试反序列化变量覆盖TP框架原生POP链
  • 前端动态旋转地球背景
  • MySQL中的子查询
  • Unity打开安卓设备不同的设置面板