从 OWASP Top 10 到业务漏洞挖掘:安全攻防实习复盘

一、前言

很多安全攻防实习岗位都会写:

1
2
熟悉 OWASP Top 10 漏洞原理与防御技术
基于攻防视角挖掘内部系统漏洞

这说明岗位不只是要求会复现 CTF payload,更希望候选人能理解真实业务系统中的漏洞产生原因、验证方法和修复建议。

本文整理从 OWASP Top 10 到业务漏洞挖掘的学习思路。

二、OWASP Top 10 怎么理解

OWASP Top 10 不是十个固定 payload,而是十类常见 Web 风险。

常见方向:

1
2
3
4
5
6
7
8
9
10
访问控制失效
加密机制失效
注入
不安全设计
安全配置错误
易受攻击和过时组件
身份认证失败
软件和数据完整性失败
日志和监控失败
SSRF

在真实测试中,最常见、最容易出成果的通常是:

  • 越权访问
  • 接口未授权
  • SQL 注入
  • 文件上传
  • SSRF
  • 敏感信息泄露
  • 认证逻辑缺陷

三、访问控制失效

访问控制失效是业务系统中最常见的问题之一。

常见参数:

1
2
3
4
5
6
7
8
userId
uid
orderId
fileId
projectId
teamId
role
isAdmin

测试方式:

1
2
3
4
1. 使用 A 账号创建资源
2. 记录资源 ID
3. 使用 B 账号访问或修改该资源
4. 判断是否存在越权

常见漏洞:

  • 查看他人订单
  • 下载他人文件
  • 修改他人资料
  • 越权进入管理页面
  • 普通用户修改角色字段

修复建议:

  • 服务端基于当前登录用户做权限判断。
  • 不信任客户端传入的用户 ID。
  • 敏感字段不允许批量赋值。
  • 管理接口单独鉴权。

四、注入漏洞

注入不只包括 SQL 注入,还包括:

  • 命令注入
  • 模板注入
  • LDAP 注入
  • NoSQL 注入
  • SpEL 表达式注入

测试思路:

1
2
3
4
5
输入特殊字符
观察报错
判断语句结构
构造最小化验证 payload
证明影响即可

SQL 注入测试时,不要直接拖库。只需要证明:

  • 输入进入 SQL 语句。
  • 能改变查询逻辑。
  • 能读取当前库名或有限测试数据。

报告要写清楚:

1
2
3
4
5
6
注入参数
请求方法
影响接口
数据库类型
风险影响
修复建议

五、SSRF

SSRF 常出现在:

1
2
3
4
5
6
图片抓取
URL 预览
Webhook
在线截图
文件下载
RSS 订阅

测试重点:

  • 服务端是否发起请求。
  • 是否能访问内网地址。
  • 是否能访问云元数据。
  • 是否支持危险协议。

低风险验证:

1
让目标请求自己的 DNSLog 或测试服务器

修复建议:

  • URL 白名单。
  • DNS 解析后检查最终 IP。
  • 禁止访问内网和元数据地址。
  • 禁止危险协议。
  • 禁止跟随跳转到内网。

六、文件上传

文件上传测试要看完整链路:

1
2
3
4
5
上传入口
-> 文件校验
-> 保存路径
-> 访问路径
-> 是否解析执行

常见绕过:

  • 前端校验绕过
  • MIME 修改
  • 大小写后缀
  • 双后缀
  • 图片马
  • 压缩包解压风险

真实业务测试中,验证到风险即可,不要上传破坏性 WebShell。

修复建议:

  • 后端白名单校验。
  • 上传目录禁止执行。
  • 文件重命名。
  • 图片重新编码。
  • 文件存储与代码目录隔离。

七、认证与会话问题

常见问题:

  • JWT 未验签。
  • JWT 弱密钥。
  • Session 固定。
  • 找回密码 token 可预测。
  • 验证码可爆破。
  • OAuth 回调校验不严。

测试时重点看:

1
2
3
4
5
token 是否可篡改
过期时间是否生效
退出登录后 token 是否仍可用
重置密码链接是否一次性
验证码是否绑定用户和场景

修复建议:

  • 严格校验 JWT 签名。
  • token 设置过期时间。
  • 服务端维护关键状态。
  • 密码重置 token 一次性使用。
  • 验证码增加频率限制。

八、安全配置错误

常见配置问题:

  • Swagger 暴露
  • Actuator 暴露
  • .git 泄露
  • 备份文件泄露
  • Debug 模式开启
  • 目录列表开启
  • 默认账号密码

新手 SRC 很适合从这类问题练手,因为风险相对容易证明,也不需要破坏业务。

修复建议:

  • 生产环境关闭调试接口。
  • 管理页面加鉴权。
  • 清理备份文件。
  • 禁止目录列表。
  • 删除默认账号。

九、从漏洞到业务影响

真实报告不能只写:

1
2
3
存在 XSS
存在 SQL 注入
存在越权

还要写清楚业务影响:

1
2
3
4
5
可查看他人订单
可下载他人发票
可修改用户地址
可读取接口文档
可辅助进一步攻击

面试官更关注你是否能把技术漏洞转化成业务风险。

十、我的测试方法论

一个比较稳的测试流程:

1
2
3
4
5
6
7
8
9
1. 明确测试范围
2. 收集资产和功能点
3. 注册两个测试账号
4. 抓包梳理接口
5. 标记关键 ID 参数
6. 测未授权和越权
7. 测上传、搜索、URL 抓取等高危功能
8. 记录证据
9. 输出修复建议

对于内部系统,可以重点关注:

  • 管理后台
  • 数据导出
  • 文件下载
  • 权限角色
  • 工单系统
  • 用户管理
  • 配置中心
  • 插件系统

十一、报告模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
漏洞标题:
某接口存在水平越权,可查看其他用户订单信息

漏洞类型:
访问控制失效

影响接口:
GET /api/order/detail?orderId=xxx

复现步骤:
1. 使用 A 账号登录并获取订单 ID
2. 使用 B 账号登录
3. 将 B 账号请求中的 orderId 替换为 A 的订单 ID
4. 服务端返回 A 账号订单详情

影响:
攻击者可越权查看其他用户订单信息,造成用户隐私泄露。

修复建议:
服务端根据当前登录用户校验订单归属关系,不允许仅根据 orderId 返回数据。

十二、总结

OWASP Top 10 是基础,但真正的攻防能力体现在:

1
2
3
4
能不能从业务流程中发现漏洞
能不能低风险验证漏洞
能不能讲清楚影响
能不能给出可落地修复建议

对安全攻防实习来说,建议多写这类复盘文章,把单个漏洞和业务场景结合起来。这样面试官看到博客时,会更容易判断你具备真实测试思维。