⚠️ 故意存在漏洞。仅限本地运行。切勿暴露到互联网或共享网络。
其他语言版本: Português (Brasil)
里程碑 — v1.0: web 系列现已覆盖 OWASP Top 10 2021 全部十个类别(A01–A10),共 38 个原子。参见 v1.0 发布。
atomicvulns 是一组原子化的 Web 应用集合——每一个都小巧、隔离,并专注于 OWASP Top 10 中的单一漏洞。每个原子都附带漏洞应用、修复版本、两者之间带注释的 diff,以及动手实操的漏洞利用演练。
这不是又一个 DVWA 或 Juice Shop。单体漏洞应用早已存在。atomicvulns 的独特之处在于彻底的原子化:每个缺陷一个应用,阅读快、探索快。你无需先理解整个应用,就能梳理出代码成因 → 请求/响应 → 漏洞利用的完整链路。
web 系列(Python/Flask)覆盖 OWASP Top 10 2021 全部十个类别——共 38 个原子:
| 类别 | 原子 |
|---|---|
| A01 — 失效的访问控制 | idor-numeric-id、path-traversal-basic、idor-uuid-guessable、bola-rest、csrf-basic、open-redirect、mass-assignment |
| A02 — 加密机制失效 | jwt-none-alg、jwt-weak-secret、jwt-key-confusion、crypto-weak-hash、crypto-ecb-mode |
| A03 — 注入 | sqli-union-basic、xss-reflected、sqli-blind-boolean、sqli-blind-time、xss-stored、command-injection-basic、ssti-jinja、xss-dom、nosql-injection-mongo、ldap-injection、sqli-second-order |
| A04 — 不安全的设计 | race-condition-basic |
| A05 — 安全配置错误 | xxe-basic、xxe-blind-oob、debug-enabled、cors-wildcard |
| A06 — 易受攻击和过时的组件 | cve-demo |
| A07 — 身份识别和身份验证失败 | session-fixation、weak-password-reset |
| A08 — 软件和数据完整性失效 | deserialization-pickle、prototype-pollution、deserialization-node |
| A09 — 安全日志记录和监控失效 | logging-failures-demo |
| A10 — 服务端请求伪造(SSRF) | ssrf-basic、ssrf-blind-oob、ssrf-cloud-metadata |
API 系列(TypeScript/Express)针对 OWASP API Security Top 10 2023。其第一阶段——授权:对象与功能——已发布:涵盖两个类别的五个原子,补齐了对象级和功能级授权两个维度。完整的有序计划见其 ROADMAP。
| 类别 | 原子 |
|---|---|
| API1 — 失效的对象级授权 | bola-sequential-id、bola-uuid-leaked、bola-nested-resource |
| API5 — 失效的功能级授权 | bfla-admin-function、bfla-method-based |
已掌握 HTTP 和终端基础知识、使用(或正在学习使用)Burp Suite,并希望拥有一个专注实验环境的渗透测试学生和 AppSec 学习者——其中每个练习都足够短,可以一次坐完。本材料面向将在渗透测试职业生涯中应用这些知识的人——Burp 是主要工具,UI 只是背景。
每个 atom 都位于自己的文件夹中——Web 系列为 atoms/web/A0X-<category>/<atom-id>/,API 系列为 atoms/api/APIX-<category>/<atom-id>/——并附带一个 docker-compose.yml。根目录下的包装脚本 ./atom 负责驱动它们:
./atom list # show all available atoms
./atom up <atom-id> # start the vulnerable + fixed pair
./atom down <atom-id> # stop and remove containers
./atom doctor # sanity-check your local setup
例如:
./atom up sqli-union-basic # web series
# vulnerable → http://127.0.0.1:8001
# fixed → http://127.0.0.1:8101
./atom up bola-sequential-id # API series
# vulnerable → http://127.0.0.1:8201
# fixed → http://127.0.0.1:8301
每个 atom 仅绑定到 127.0.0.1。切勿更改这一点——这些应用是故意设计为存在漏洞的。
基于 MIT License 发布。如果你 fork 本仓库用于教学材料,必须注明出处。