点我

业务逻辑漏洞

业务逻辑漏洞是应用程序在业务流程或逻辑设计上的缺陷,允许攻击者绕过正常规则、执行未授权操作或破坏业务目标。

这类漏洞不依赖技术实现漏洞(如缓冲区溢出),而是利用业务规则的不严谨性,通常难以通过自动化工具检测,需人工审计。

暴力破解

Brute Force,暴力破解。

密码爆破:密码爆破一般很熟悉,即针对单个账号或用户,用密码字典来不断的尝试,直到试出正确的密码,破解出来的时间和密码的复杂度及长度及破解设备有一定的关系。

密码喷洒:密码喷洒和密码爆破相反,也可以叫反向密码爆破,即用指定的一个密码来批量的试取用户,在信息搜集阶段获取了大量的账号信息或者系统的用户,然后以固定的一个密码去不断的尝试这些用户。

暴力破解流程:

  1. 确认目标是否存在暴力破解漏洞抓包验证,查看目标网站对登录接口是否实施了安全措施。
  2. 优化字典收集拖库字典;根据实际情况对字典进行优化(一个有效的字典可以大大提高暴力破解的效率)。
  3. 工具自动化配置线程、超时时间、重试次数等

防护措施

  • 增加密码复杂度

    • 建议密码包含大小写字母,数据和特殊符号,密码长度不低于八位
  • 使用安全的验证码

    • 例如图形验证码增加对尝试登陆行为进行判断和验证例如固定时间内登录次数限制
  • 采用双因子认证等

    • 例如短信、邮件等等

身份验证绕过(未授权访问)

Authentication Bypass,身份验证绕过

  • 原理:攻击者绕过系统的身份验证机制,无需合法凭证即可访问受保护资源。
  • 常见场景

    • 弱密码策略:允许简单密码或未强制多因素认证(MFA)。
    • 密码重置漏洞:重置令牌未失效、安全问题可暴力破解、邮件链接可预测。
    • 多阶段认证缺陷:跳过后续验证步骤(如短信验证码步骤未完成)。
    • 直接访问隐藏URL:通过猜测或枚举访问本应认证后可见的页面(如 /admin)。
  • 示例:修改请求参数绕过OTP验证(如将 step=2 改为 step=3)。
  • 防护措施

    • 强制多因素认证(MFA)。
    • 确保所有受保护端点均进行服务端权限校验。
    • 使用强随机令牌并设置短有效期。

权限提升

Privilege Escalation,权限提升。

  • 垂直提权:低权限用户获取高权限角色(如普通用户→管理员)。
  • 水平提权:访问同权限其他用户的资源(如用户A访问用户B的数据)。
  • 原理:服务端未校验用户角色或资源归属。
  • 示例

    • 修改请求中的 role=admin 参数。
    • 替换URL中的用户ID(如 /user?id=123id=456)。
  • 防护措施

    • 实施最小权限原则。
    • 服务端校验资源所有权(如Session中的用户ID与请求参数匹配)。

支付逻辑漏洞

Payment Flaws,支付逻辑漏洞。

  • 常见类型

    • 价格篡改:修改客户端传递的价格参数(如 total_price=1001)。
    • 负数攻击:输入负数量导致账户余额异常增加。
    • 重复支付:利用竞争条件多次提交订单。
    • 库存检查绕过:未在服务端校验库存,导致超卖。
  • 示例:拦截支付请求,将商品价格改为0元完成下单。
  • 防护措施

    • 所有关键逻辑(价格、库存)在服务端计算。
    • 使用事务锁防止并发问题。
    • 审计订单流水,检测异常交易。

业务流程绕过

Workflow Bypass,业务流程绕过。

  • 原理:跳过业务流程中的关键步骤(如验证、确认)。
  • 常见场景

    • 注册流程:绕过邮箱/手机验证直接激活账户。
    • 多步骤订单:直接提交最终步骤(如跳过地址填写)。
    • 强制浏览(Forceful Browsing):通过URL跳转绕过限制。
  • 示例:直接访问 /checkout/confirm 跳过购物车页面。
  • 防护措施

    • 在服务端维护流程状态(如使用Session跟踪步骤)。
    • 每一步操作前验证前置步骤是否完成。

竞争条件

Race Conditions,竞争条件。

  • 原理:并发请求导致数据不一致,通常因缺乏原子操作或锁机制。
  • 常见场景

    • 余额扣减:同时发起多次支付导致余额扣减未同步。
    • 优惠券重复使用:并发请求兑换同一优惠券。
    • 库存超卖:多个用户同时购买最后一件商品。
  • 示例:使用脚本并发提交订单,耗尽限量优惠。
  • 防护措施

    • 使用数据库事务锁(如SELECT FOR UPDATE)。
    • 在代码层实现原子操作(如Redis分布式锁)。

输入验证不足

Insufficient Input Validation,输入验证不足。

  • 原理:未对用户输入进行严格校验,导致业务规则被绕过。
  • 常见类型

    • 数值范围:输入负数或超大值(如转账金额为-1000)。
    • 业务规则绕过:例如上传非图片文件、绕过时间限制。
    • 参数篡改:修改订单ID、用户ID等参数(如 order_id=10011002)。
  • 示例:修改生日参数获取未成年人禁止的服务。
  • 防护措施

    • 服务端校验输入类型、范围、格式。
    • 避免依赖客户端传递敏感参数(如价格、用户ID)。

会话管理缺陷

Session Management Flaws,会话管理缺陷。

  • 漏洞类型

    • 会话固定(Session Fixation):攻击者强制用户使用已知会话ID。
    • 会话劫持:通过窃取Cookie或Token获取用户权限。
    • 超时缺失:会话长期有效,增加泄露风险。
  • 示例:未使旧会话失效,导致登录后的会话仍可被重用。
  • 防护措施

    • 使用安全的会话管理框架(如JWT+HTTPS)。
    • 设置会话超时,并在关键操作后刷新会话。

密码重置漏洞

Password Reset Flaws,密码重置漏洞。

  • 常见问题

    • 令牌未失效:重置链接可多次使用。
    • 安全问题可爆破:如“出生地”等低熵问题。
    • 邮件/SMS劫持:未验证用户对邮箱/手机的控制权。
  • 示例:通过修改HTTP请求中的邮箱参数,将密码重置链接发送至攻击者邮箱。
  • 防护措施

    • 使用一次性令牌且设置短有效期(如5分钟)。
    • 避免使用安全问题,改用多因素验证。

越权访问

Insecure Direct Object Reference, IDOR,越权漏洞。

  • 原理:通过修改参数直接访问未授权资源。
  • 类型

    • 垂直越权:低权限用户访问高权限接口(如普通用户调用管理员API)。
    • 水平越权:访问同角色其他用户的资源(如用户A查看用户B的订单)。
  • 示例:修改URL中的 document_id=123 访问他人文件。
  • 防护措施

    • 对每个请求进行权限校验(如RBAC模型)。
    • 使用UUID代替自增ID,增加预测难度。

业务规则滥用

Business Rule Abuse,业务规则滥用。

  • 原理:利用业务规则设计缺陷谋取利益。
  • 常见场景

    • 优惠券重复使用:未限制使用次数或范围。
    • 时间限制绕过:修改系统时间或篡改请求时间戳。
    • 薅羊毛:批量注册小号领取奖励。
  • 示例:通过脚本自动化注册新用户领取优惠券。
  • 防护措施

    • 限制关键操作频率(如IP限速、用户行为分析)。
    • 业务规则与服务端时间同步,避免客户端控制。

验证码绕过

  • 验证码:验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。
  • 验证码存在的意义:恶意破解密码、刷票、论坛灌水等。
  • 常见验证码绕过姿势:

    • 只有前端验证 验证码,没有在后端进行校验。
    • 验证码设置了但是没有进行校验,随便输入也能绕过验证。
    • 验证码重复使用。
    • 验证码空值绕过。
    • 验证码干扰过低,使用脚本轻松识别。
    • 验证码有规则。
    • 万能验证码,000000。
    • ......

任意文件下载漏洞

  • 原理:任意文件下载漏洞是指由于服务器配置不当或代码存在缺陷,导致攻击者可以通过构造特定的请求,绕过正常的身份验证和访问控制,从而下载服务器上的任意文件。
  • 成因:

    • 缺乏文件访问控制:应用程序没有对用户请求下载的文件进行严格的访问控制,导致攻击者可以请求下载服务器上的敏感文件。
    • 不安全的文件路径处理:应用程序在处理文件路径时,没有对用户输入的路径进行严格的验证和过滤,导致攻击者可以通过构造恶意路径来下载任意文件。
  • 防护措施:

    • 严格验证用户输入。
    • 实施访问控制。
    • 使用安全的文件处理方法。
    • 及时更新和修补。

常见防护措施策略

  • 最小权限原则:每个用户/服务仅拥有必要权限。
  • 服务端校验:所有关键逻辑(如支付、权限)必须在服务端完成。
  • 输入过滤与编码:严格校验数据类型、范围、格式。
  • 审计与日志:记录关键操作以便追溯异常行为。
  • 安全设计评审:在需求阶段分析业务逻辑风险。
  • 渗透测试:定期模拟攻击场景,发现潜在漏洞。

业务逻辑漏洞的隐蔽性高、危害大,需开发、测试与安全团队协作,通过威胁建模(Threat Modeling)和代码审查(Code Review)降低风险。

分类: WEB安全

评论

-- 评论已关闭 --

目录