逻辑漏洞

2281 字
11 分钟
逻辑漏洞

一、逻辑漏洞概述#

1.1 什么是逻辑漏洞?#

逻辑漏洞是指业务逻辑层面的设计缺陷,属于”业务安全”范畴。与 SQL 注入、XSS 等技术型漏洞不同,逻辑漏洞是开发人员对业务规则理解不准确或设计不严谨导致的。

1.2 逻辑漏洞分类#

类别典型场景
重装漏洞CMS 重装页面可被访问,或结合任意文件删除
口令漏洞弱口令、密码爆破
验证码漏洞前端校验、重复使用、空值绕过
越权漏洞水平越权、垂直越权
支付逻辑修改金额、数量、顺序绕过
未授权访问绕过认证直接访问资源
任意文件读写目录穿越导致文件泄露或写入

二、重装漏洞#

2.1 原理#

安装时填写的配置被存入 PHP 文件中,导致可以注入 PHP 代码实现 RCE。

2.2 利用条件#

  • 安装页面可被直接访问(未删除 install 目录)
  • 配置参数写入文件时可被注入恶意代码
  • 大部分情况需要任意文件删除配合(删除锁文件后重装)

2.3 挖掘方法#

1. 直接访问 /install 或 /install.php
2. 如被限制,寻找任意文件删除漏洞(删除安装锁文件)
3. 重装并注入恶意配置

三、任意文件读写及目录穿越#

3.1 任意读取文件#

可导致: 源代码泄露、配置文件读取、密码/密钥泄露

挖掘方法:

1. 寻找文件读取功能点(预览、下载、包含)
2. 文件名参数是否可控,是否存在路径穿越
3. 使用 ../../../ 尝试读取敏感文件
4. 使用高亮插件/代码审计工具辅助挖掘

3.2 任意写入文件#

可导致: Webshell 写入、配置文件篡改

挖掘方法:

1. 寻找文件编辑功能点
2. 文件名参数是否可控制
3. 使用 ../ 进行目录穿越
4. 尝试写入 Webshell
5. SQLi 也可能导出 Webshell(如 INTO OUTFILE)

3.3 知名历史漏洞#

漏洞编号说明
Tomcat PUT 任意写入CVE-2017-12615通过 PUT 方法上传 Webshell
WebLogic 任意文件上传CVE-2018-2894文件上传导致 RCE
FlowiseAI 任意文件写入CVE-2025-26319AI 工具链漏洞

四、口令漏洞#

类型说明
弱口令123456、admin、password 等常见密码
密码爆破社工字典构建,使用 Burp Suite 爆破
默认凭证系统默认账号密码未修改
空密码密码字段为空可登录

五、验证码漏洞#

5.1 验证码漏洞统计(乌云 63 个案例)#

5.2 验证码漏洞分类#

编号漏洞类型说明
1前端验证无后端校验验证码只在前端校验,抓包后可直接爆破
2验证码形同虚设乱输验证码也能成功登录
3验证码可重复使用登录失败后验证码不变,同一验证码可多次使用
4验证码空值绕过删除验证码参数名即可绕过
5验证码干扰过低简单验证码可被脚本识别
6验证码在 HTML 源码输出验证码在源码中直接暴露
7验证码可控制验证码是 URL 参数,可被修改
8验证码有生成规则如时间戳后 N 位、rand() 可预测
9存在默认验证码如输入 000000 可绕过
10验证码在 Cookie 中Cookie 中存在验证码参数
11图片类型太少验证码图片数量有限,可制作特征库

5.3 挖掘方法#

┌─ 判断验证码是否后端校验 ─┐
│ │
├── 否:直接抓包爆破 │
│ │
├── 是:尝试以下方式 │
│ ├── 1. 删除变量参数对再爆破
│ ├── 2. 测试默认验证码(如 000000)
│ ├── 3. 找发送验证码包中的凭证
│ ├── 4. 响应包(Cookie/响应体)中找验证码
│ ├── 5. HTML源码/隐藏表单中找验证码
│ ├── 6. 简单验证码工具识别
│ ├── 7. 图片集数量少 → 制作特征库
│ ├── 8. 猜测验证码生成算法
│ │ └── 如时间戳后6位、md5()
│ │ └── 生成字典,在字典中查询验证码
│ └── 9. 爆破验证码
│ └── 绕过请求频繁限制:手机号后加空格等
│
└─ 任意密码重置
├── 未授权绕过:直接构造请求跳过中间步骤
├── 授权错误:替换身份 token 或 UID
└── 接收自己验证码,修改他人密码

5.4 验证码绕过脑图(核心)#

┌─ 验证码功能中的校验点
│
┌──────────┼──────────┐
│ │ │
发送验证码 验证验证码 重置密码
│ │ │
凭证泄露 可预测/ 未授权绕过
劫持 可绕过 授权错误

5.5 任意密码重置(账户劫持)#

方式说明
未授权绕过先走常规流程,发现规律后直接构造请求跳过中间步骤
授权错误请求包中身份 token 有规律,替换其他用户 ID 或 token

六、越权漏洞#

6.1 分类#

类型说明
水平越权普通用户以其他普通用户身份操作资源
垂直越权普通用户以管理员身份操作资源

6.2 挖掘方法#

1. 准备 2 个账号互相测试
2. 找认证参数(关键)
└── 每次请求服务器凭什么认为你是合法用户?
3. 修改关键参数为其他用户 ID 或管理员
4. 尝试越权访问

核心难点: 认证参数的生成原理 → 需要反复尝试和猜测,生成对应的其他用户信息。

6.3 典型场景#

  • 查看/修改用户资料
  • 查看/取消订单
  • 添加/删除用户
  • 查看/导出数据

6.4 靶场#

  • Pikachu: 水平越权(查看其他用户信息)、垂直越权(普通用户添加用户)

七、支付逻辑漏洞#

7.1 边界值攻击#

类型示例
负数购买数量设为 -1,总额变为负数
超大数金额设为 999999999 导致溢出
超小数金额设为 0.001 绕过最低支付

7.2 其他参数篡改#

商品单价 → 改为 0.01
商品数量 → 改为负数
总价 → 改为任意值
商品编号 → 替换为更贵的商品
优惠金额 → 改为最大值
优惠券/卡币 → 任意使用
积分/货币 → 任意修改
结算类别 → 替换
折扣 → 改为 0(免费)
用户身份信息 → 替换(手机号、邮箱、账号 ID)

7.3 顺序执行缺陷#

1. 跳过中间逻辑(如审核、验证步骤)
2. 直接进入发货流程(省略支付)
3. 重放发货请求 → 多次发货
4. 获取支付 key → 不支付直接发货

示例:

  • 正常流程:下单 → 支付 → 发货
  • 利用方式:下单后,直接访问发货 URL(跳过支付)

八、未授权漏洞#

无需登录即可访问需要认证的资源。

典型场景:

  • 后台目录可被直接访问
  • API 接口无认证校验
  • 通过修改 UID/role 参数绕过
  • 通过响应包篡改绕过登录

九、登录页面渗透思路#

测试点说明
短信/邮箱轰炸重复发送验证码
密码爆破字典攻击
用户名爆破枚举有效用户
验证码安全前端校验、重复使用、空值绕过
HTML 源码泄露测试账号在注释中
SQL 注入登录框注入
XSS用户名/密码字段
撞库社工机器人
空密码尝试空密码登录
认证凭证替换修改返回包中的账号字段
Cookie 仿冒修改 Cookie 中的身份标识

十、密码找回功能逻辑漏洞#

漏洞类型说明
短信/邮箱轰炸重复发送验证码
短信/邮箱劫持接收其他用户的验证码
验证码与用户未绑定用自己验证码修改他人密码
跳过验证步骤直接访问重置密码页面
验证码返回到前端在响应包中直接返回验证码
弱 Token重置密码 Token 可预测
Session 覆盖通过 Session 猜测他人身份
爬虫批量修改自动遍历用户 ID 重置密码

📌 快速参考卡片#

验证码绕过速查#

Terminal window
# 1. 删除验证码参数
user=admin&pwd=123 # 删除 &code=xxx
# 2. 默认验证码
000000 / 111111 / 888888
# 3. 重复使用
验证码不变,多次尝试
# 4. 前端绕过
直接抓包重放
# 5. 生成规则预测
时间戳后6位 / rand(1000,9999)

越权测试流程#

1. 用用户A登录 → 抓取请求
2. 识别身份标识参数(uid、userid、token)
3. 将参数改为用户B的值
4. 观察响应是否有变化
5. 尝试更改为 admin/1/0 测试垂直越权

支付逻辑测试点#

1. 修改数量为负数
2. 修改单价为小数
3. 修改总价为 0.01
4. 替换商品编号
5. 跳过支付步骤
6. 重放发货请求

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

逻辑漏洞
https://blog.emberlag.com/posts/logic-vulnerability/
作者
3mb3rl4g
发布于
2026-09-25
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
3mb3rl4g
一名现实世界的沉默观察员
公告
把零散的思绪归档,我不着急写完,写得慢一点,刚好能让很久以后,还能在此刻的文字里找回共鸣。
分类
标签
最新动态
站点统计
文章
21
分类
2
标签
13
总字数
33,455
运行时长
0 天
最后活动
0 天前
文章目录