An open educational resource covering all layers of penetration testing with an AI-assisted workflow, written for junior cybersecurity engineers operating under white-hat and bug bounty principles.
For authorized testing only. Always obtain written permission before testing any system. Never test systems you do not own or have explicit scope for.
A structured, layer-by-layer guide to ethical penetration testing — from reconnaissance to reporting. Every topic is framed around white-hat principles and includes ready-to-use AI prompt templates so you can work faster and learn as you go.
Built for junior security engineers who want a clear methodology, not a wall of jargon.
| Phase | Layer | Topics |
|---|---|---|
| 01 | Reconnaissance | Passive OSINT, subdomain enumeration, tech stack fingerprinting, Google dorking, stealth techniques |
| 02 | Network | Port scanning, service detection, firewall rule testing, SSL/TLS review |
| 03 | Application | SQL injection, XSS, auth flaws, API testing, business logic, misconfigurations |
| 04 | Authentication & Session | Login flow review, token handling, MFA bypass, session fixation |
| 05 | Business Logic | Race conditions, IDOR, price tampering, privilege escalation via feature chains |
| 06 | Infrastructure & Cloud | Cloud misconfiguration, metadata services, container escapes, server-side vulns |
| 07 | Reporting & Disclosure | CVSS scoring, finding templates, executive summaries, responsible disclosure |
- Astro — static site framework
- Vue 3 — interactive components (nav dropdown, theme toggle, mobile menu)
- Shiki — syntax highlighting with dual light/dark themes
- Mermaid — diagrams rendered client-side from code blocks
- Content authored in Markdown with YAML frontmatter
- Site-wide config driven by a single
src/content.ymlfile
Prerequisites: Node.js 18+
npm install
npm run dev # dev server at http://localhost:4321
npm run build # production build → dist/
npm run preview # preview the production build locally
npm run check # TypeScript / Astro type checkingThe site deploys to / by default. To host on a GitHub Pages subdirectory, change the base field in astro.config.mjs:
base: '/your-repo-name/',All internal links use the url() / layerUrl() helpers in src/utils/url.ts and will update automatically.
src/
├── content/
│ └── layers/ # one .md file per pentest layer
├── content.yml # all site copy, nav, layers config — edit here
├── components/ # Astro + Vue components
├── layouts/
│ └── BaseLayout.astro
├── pages/
│ ├── index.astro
│ ├── learn/
│ │ ├── index.astro
│ │ └── [layer].astro
│ └── contribute.astro
├── styles/
│ └── global.css
└── utils/
└── url.ts # base-aware link helpers
Contributions are welcome: new layer topics, improved AI prompt templates, tool references, ethical edge cases, or translations.
All content must maintain white-hat framing. Material that could facilitate unauthorized access, even framed as educational, will be rejected.
- Open the relevant file in
src/content/layers/ - Add a topic entry in the file's frontmatter (
topics:array) - Write the topic section in the Markdown body
- No changes to
astro.config.mjsor other files needed
- Create
src/content/layers/<id>.mdfollowing the existing format - Register it under
learn.layersinsrc/content.yml - Set
enabled: trueto make it visible
See CONTRIBUTING.md for the full code of conduct and PR checklist.
CC BY-NC-SA 4.0 — Share with attribution, non-commercial, same license.