业务逻辑漏洞
身份认证安全
绕过身份认证的几种方法
暴力破解
- 测试方法∶在没有验证码限制或者一次验证码可以多次使用的地方,可以分为以下几种情况︰
(1)爆破用户名。当输入的用户名不存在时,会显示请输入正确用户名,或者用户名不存在
(2)已知用户名。比如:已知用户名为admin,密码可以进行字典爆破
(3)使用一个常用密码。比如123456对大量用户进行爆破 - 修复方法∶
(1)增加验证码。登录失败的时候,变换验证码。(验证码不能被工具识别)
(2)限制登录频率。例如,5分钟内登录失败次数超过10次则锁定账号1小时。
(3)二次验证。可以添加手机验证码或邮箱验证码。
撞库
- 收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登录其他网站。很多用户在不同网站使用的是相同的账密
cookie和session类
Cookie和Session的概念
- Cookie:指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),我们俗称为浏览器缓存
- Session:在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象,与Cookie有一定相同之处。
cookie伪造:通过修改cookie参数来实现登录其他用户
session会话固定攻击:诱骗受害者使用攻击者指定的会话标识(session id)1.重置目标session id,然后想办法使用户携带攻击者设定的session id登录站点,此session id就合法了(其实还不如找xss,找不到就算了,叼方法)
加密测试
- 成因:有些网站在前端加密,然后传到后台直接和数据库里的值做对比,这时抓包就知道其加密方式,然后做暴力破解
- 修复:把加密对比放到后台执行
数据篡改
- 商品编号篡改:提交订单时,抓包修改商品标号,导致商品与价格不符却交易成功
- 邮件和用户名修改:抓包修改用户名和邮箱为其他用户或邮箱
- 注册普通账号,修改遍历订单id,获取其他用户订单详情(平行越权)
- 手机号修改:抓包修改手机号码,之后进行越权判断,进入其他人的页面进行操作
- 用户ID篡改:抓包查看用户的id,修改id查看其他用户id信息(与sql不同,不是在代码上过滤的错误)
- 订单金额修改
- 负数数量或单价刷分
- 本地JS参数修改:部分应用程序用javascript处理用户提交的请求,通过修改javascript脚本,测试修改后的数据是否影响用户
- 最大数限制突破:前端js修改
以上的修复都可以利用其关键参数判断和其session是否一致
业务授权安全
- 检测手段:查看所有敏感涉及到账户的操作是否有除了UID之外的验证方式
- 发生越权行为的修复:涉及用户信息的操作要验证用户身份,敏感操作需二次验证
任意密码修改
用户凭证暴力破解
- 找回密码的验证码为四到六位,并且服务端没有加以限制,可以爆破验证码
- 修复:增加验证码复杂性,限制请求次数
跳过验证步骤
- 正常流程下,密码找回,查看最后设置新密码页面的URL,记录下来。继续返回密码找回处,输入其他用户名,提交找回申请,直接访问上面记录下的修改密码页面,成功修改密码
- 正常流程下,修改密码页面抓包,修改其中的USERNAME_COOKIE为其他用户(有可能会经过编码,比如 base64 ) ,提交即可修改其他用户密码,如果抓包其中有step参数,可以修改这个参数为最后一步(比如:5),提交便可略过之前的步骤
工具:PKAV识别较标准的图片验证码爆破
接口
接口也叫api,称为 应用程序编程接口 ,是一些预先定义的函数
提供开发人员无需访问源码即可获得访问一组例程的能力
重放攻击
利用接口漏洞进行短信轰炸,bp对手机号批量进行爆破
没什么技术含量,别骂我,我就水这一篇
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通