OWASP Top 10 学习导读与实验对照表
admin
2026-10-27 01:16
165人看过
免费
# OWASP Top 10 学习导读与实验对照表
> 当前主流版本:**OWASP Top 10:2021**(2017版已淘汰,但很多企业仍按2017考核,本文两版都标注)
> 学习方法:每个条目按「原理 → 攻击场景 → 复现实验 → 防御 → 代码审计点」五步走,配合Vulhub动手复现。
## 一、2021版十大类总览(速记)
|编号|类别|一句话核心|2017对应|
|---|---|---|---|
|A01|失效的访问控制|越权/未授权,最容易被利用|A5|
|A02|加密机制失效|明文传输/弱加密/硬编码密钥|A3|
|A03|注入|SQL/命令/XPath注入|A1|
|A04|不安全设计|架构设计缺陷(业务逻辑漏洞)|新增|
|A05|安全配置错误|默认口令/目录列出/调试开启|A6|
|A06|易受攻击和过时的组件|依赖库有漏洞(Log4j/Fastjson)|A9|
|A07|身份识别和认证失败|弱口令/会话固定/爆破|A2+A7|
|A08|软件和数据完整性故障|反序列化/CI/CD流水线篡改|A8|
|A09|安全日志和监控失败|日志不记/告警不响|A10|
|A10|服务端请求伪造SSRF|服务器帮攻击者发请求|新增(2017为A10)|
---
## 二、逐条导读 + Vulhub实验对照
### A01 失效的访问控制(Insecure Access Control)
**核心**:服务器没有真正校验"你是谁、你能访问什么"
- 典型场景:水平越权(改user_id看别人订单)、垂直越权(普通用户调管理员接口)、未授权访问后台、JWT未校验签名
- **Vulhub实验**:
- `broken-access-control/`(官方靶场)
- 各类未授权访问:SpringBoot Actuator未授权 `spring/springboot-spel`
- **代码审计点**:所有带ID参数的接口、所有admin路由
- **防御**:服务端强制鉴权 + 资源归属校验 + 白名单拒绝默认
---
### A02 加密机制失效(Cryptographic Failures)
**核心**:敏感数据没加密,或加密方式弱
- 典型场景:HTTP明文传密码、MD5存密码、硬编码密钥、TLS1.0、敏感数据未加密存储
- **Vulhub实验**:无专门靶场,配合抓包看明文传输;MD5彩虹表破解
- **代码审计点**:搜索MD5/SHA1/ECB/硬编码密钥
- **防御**:全站HTTPS、密码用bcrypt/Argon2id、TLS1.2+、密钥用KMS管理
---
### A03 注入(Injection)
**核心**:用户输入被解释成代码/命令
- 子类:SQL注入、命令注入、XSS、LDAP注入、NoSQL注入、ORM注入
- **Vulhub实验**:
- SQLi:`sqli/`(环境多,经典 Less-1~Less-17)
- 命令注入:`command-injection/`
- XSS:`xss/`
- NoSQL注入:`nodejs/nosql-injection`
- **代码审计点**:`Statement.execute`、`eval`、`system`、`exec`、MyBatis `${}`
- **防御**:参数化预编译、白名单校验、输出编码
---
### A04 不安全设计(Insecure Design)
**核心**:架构设计层面就有问题,后期补不回来
- 典型场景:支付金额前端传、密码重置链接可遍历、验证码无次数限制、业务逻辑竞态条件
- **Vulhub实验**:无现成靶场,需自建或参考OWASP Juice Shop(电商逻辑漏洞靶场)
- **学习重点**:威胁建模(Threat Modeling)、STRIDE模型
- **防御**:设计阶段做威胁建模、业务规则服务端校验
---
### A05 安全配置错误(Security Misconfiguration)
**核心**:默认配置、过度暴露、调试模式
- 典型场景:Tomcat后台弱口令、目录列出、`.git`泄露、调试模式开、默认账号admin/admin
- **Vulhub实验**:
- `tomcat/tomcat-manager`(后台部署war)
- `spring/springboot-env`(env接口泄露配置)
- 目录列出:`nginx/nginx-index`
- **代码审计点**:检查生产配置、默认文件、示例代码
- **防御**:基线加固、删除默认样例、关闭调试、最小权限
---
### A06 易受攻击和过时的组件(Vulnerable & Outdated Components)
**核心**:你用的第三方库有已知漏洞
- 典型场景:Log4j2、Fastjson、Shiro、Struts2、Spring4Shell、Log4shell
- **Vulhub实验(重灾区,Vulhub就是为这些而生)**:
- `log4j/CVE-2021-44228`
- `fastjson/` 全系列
- `shiro/` 550/721
- `struts2/` S2-045/S2-061
- `spring/spring4shell`
- `weblogic/` 反序列化
- **代码审计点**:SCA扫描(依赖包版本)
- **防御**:定期升级、依赖锁定、移除无用组件
---
### A07 身份识别和认证失败(Identification & Authentication Failures)
**核心**:登录、会话、密码体系不靠谱
- 典型场景:弱口令爆破、会话固定、Cookie无HttpOnly、JWT密钥弱、凭证存储不当、无MFA
- **Vulhub实验**:
- 暴力破解:`http/basic-auth-brute`
- JWT:`jwt/` 相关靶场
- **代码审计点**:Session创建销毁、Cookie属性、密码哈希
- **防御**:MFA、强密码策略、登录失败锁定、安全Cookie属性
---
### A08 软件和数据完整性故障(Software & Data Integrity Failures)
**核心**:数据/代码在传输、更新时没验证完整性
- 典型场景:不安全反序列化(Java/PHP)、CI/CD流水线被投毒、CDN被劫持、自动更新未签名
- **Vulhub实验**:
- 反序列化:`fastjson/`、`shiro/`、`ysoserial`链
- `php/ unserialize` 相关
- **代码审计点**:`readObject`、`unserialize`、`pickle.loads`
- **防御**:类白名单、数字签名、CI流水线加审批
---
### A09 安全日志和监控失败(Security Logging & Monitoring Failures)
**核心**:被打穿了都不知道
- 典型场景:不记录登录、日志明文存、不告警、无集中日志
- **实验对照**:无Web靶场,对应蓝队SOC:Wazuh/ELK/SIEM搭建
- **学习重点**:日志留存6个月、告警规则、SOAR
- **防御**:集中日志、关键行为审计、告警闭环
---
### A10 服务端请求伪造(SSRF)
**核心**:服务器被诱导帮攻击者发请求
- 典型场景:图片URL参数、Webhook、远程文件拉取、云元数据169.254.169.254
- **Vulhub实验**:
- `ssrf/` 基础环境
- 配合Redis:`ssrf/redis-gopher`(gopher打Redis)
- **代码审计点**:`curl_exec`、`file_get_contents`、`HttpClient`
- **防御**:URL白名单、禁内网IP、禁file/gopher协议
---
## 三、学习路线(建议顺序)
1. **先Web基础**:A03注入(SQL/XSS/命令)→ A01越权 → A05配置错误
2. **再组件漏洞**:A06(Vulhub重头戏:Log4j/Fastjson/Shiro/Struts2)
3. **再高级**:A08反序列化 → A10 SSRF → A02加密 → A04业务逻辑
4. **最后蓝队视角**:A07认证 + A09日志监控
## 四、配套靶场推荐(除Vulhub外)
|靶场|用途|
|---|---|
|OWASP Juice Shop|现代Web全漏洞练习(含A04业务逻辑)|
|DVWA|经典PHP漏洞靶场|
|PortSwigger Web Security Academy|官方免费在线实验(XSS/SSRF/CSRF最权威)|
|Vulhub|组件/CVE漏洞复现|
|HackTheBox / TryHackMe|综合渗透实战|
## 五、一句话学习心法
> OWASP Top10不是10个孤立漏洞,是**10类失败模式**;每个类别的根源都是"信任了不该信任的输入/默认配置"。
版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载或以其他方式使用本站原创内容。