A comprehensive, production-ready guide to understanding, identifying, and preventing Server-Side Request Forgery (SSRF) vulnerabilities in web applications.
- 20,000+ Words - Comprehensive coverage from basics to advanced exploitation
- 40+ Code Examples - Real-world examples in Python, Node.js, PHP, Java, and Go
- Interactive Syntax Highlighting - Copy-to-clipboard functionality for all code blocks
- Responsive Design - Mobile-first design with sticky table of contents
- 8 Major Sections:
- Introduction to SSRF
- Understanding SSRF Mechanics
- Identifying SSRF Vulnerabilities
- SSRF Exploitation Techniques
- Real-World Examples & Case Studies
- Prevention & Mitigation
- Advanced Topics
- Tools & Resources
- SEO Optimized - OpenGraph meta tags, Twitter cards, JSON-LD structured data
- Production Ready - Static site generation, optimized performance
- Accessibility - WCAG AA compliant with proper ARIA labels
- Node.js >= 18.18.0
- npm or yarn
# Clone the repository
git clone https://github.com/Wh1t3Fox/ssrf.page.git
cd ssrf.page
# Install dependencies
npm install
# Run development server
npm run devVisit http://localhost:3000 to see the guide.
# Create optimized production build
npm run build
# Preview the production build locally
npm startThe static site will be generated in the out/ directory.
The built site in the out/ directory can be deployed to any static hosting service:
- Vercel:
vercel deploy out - Netlify:
netlify deploy --dir=out - GitHub Pages: Push the
outdirectory to your gh-pages branch - Cloudflare Pages: Connect your repo and set build output to
out - AWS S3: Upload the
outdirectory to your S3 bucket
- Next.js 16.0.10 - React framework with static site generation
- React 19.2.3 - UI library with latest features
- Tailwind CSS 3.4.19 - Utility-first CSS framework
- react-syntax-highlighter 16.1.0 - Code syntax highlighting
- @heroicons/react 2.2.0 - Beautiful hand-crafted SVG icons
- PostCSS 8.5.6 - CSS transformations
- Autoprefixer 10.4.23 - Automatic vendor prefixing
ssrf.page/
βββ components/
β βββ common/ # Shared components (Head, Footer)
β βββ guide/ # Guide-specific components
β βββ Layout.js # Main layout with TOC
β βββ TableOfContents.js
β βββ Section.js
β βββ CodeBlock.js # Syntax-highlighted code
β βββ InteractiveExample.js
β βββ Callout.js
β βββ ProgressBar.js
βββ content/
β βββ ssrf-guide.js # Main guide content (~20,000 words)
βββ pages/
β βββ _app.js # Global app wrapper
β βββ _document.js # Custom HTML document
β βββ index.js # Main guide page
βββ public/
β βββ diagrams/ # SVG diagrams and assets
βββ styles/
β βββ globals.css # Global styles and Tailwind config
βββ utils/
β βββ clipboard.js # Clipboard utilities
β βββ scrollspy.js # Scroll tracking utilities
βββ next.config.js # Next.js configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ postcss.config.js # PostCSS configuration
Edit the main guide content in content/ssrf-guide.js. Each section is a JavaScript object with JSX content.
The design uses Tailwind CSS with custom theme colors:
- Primary: Blue shades (for headings and accents)
- Secondary: Cyan shades (for links and highlights)
Modify tailwind.config.js to customize the theme.
- Add a new section object to
content/ssrf-guide.js - The section will automatically appear in the table of contents
- Use the provided components (CodeBlock, Callout, etc.) for consistency
This project requires Node.js 18.18.0 or higher. The version is specified in:
.nvmrc- For NVM users.node-version- For platform compatibilitypackage.json-enginesfield
Key configuration in next.config.js:
output: 'export'- Static site generationtranspilePackages- ESM module compatibilityimages.unoptimized- Required for static export
Error: "Unexpected token '?'"
- Solution: Ensure Node.js version is >= 18.18.0
Error: "require() of ES Module not supported"
- Solution: This is fixed by the
transpilePackagesconfiguration innext.config.js
Error: "Module not found"
- Solution: Run
npm installto ensure all dependencies are installed
404 on routes
- Solution: Ensure
trailingSlash: trueis set innext.config.js
Images not loading
- Solution: Verify
images.unoptimized: trueis set for static export
Use the CodeBlock component:
<CodeBlock
language="python"
code={`your code here`}
filename="optional-filename.py"
/>Use the Callout component for important notes:
<Callout type="warning" title="Security Warning">
Important security information here
</Callout>Types: info, warning, danger, success, tip
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test locally (
npm run build && npm start) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- OWASP for SSRF vulnerability research and documentation
- The security research community for discovering and documenting real-world SSRF vulnerabilities
- All contributors to the referenced CVEs and bug bounty reports
For questions or feedback, please open an issue on GitHub.
Educational Purpose: This guide is intended for educational and authorized security testing purposes only. Always obtain proper authorization before testing for vulnerabilities.