Ssrf - Juice Shop
http://localhost:3000/solve/challenge/ssrf
If the server responds with a successful fetch (even an error from the local service), the SSRF exists. Juice Shop's base configuration has no whitelist. But in hardened real-world apps, you might see filters. Practice bypass techniques:
Using a tool like curl or Burp Repeater: juice shop ssrf
| Defense | Bypass Technique | |---------|------------------| | Block localhost | Use 127.0.0.1 , 0.0.0.0 , [::1] , or localhost.me | | Block IP addresses | Use decimal IP: http://2130706433/ (for 127.0.0.1) | | Block internal subnets | Register a domain internal.yourlab.com that resolves to 10.0.0.1 | | Protocol restriction ( http:// only) | Use file:///etc/passwd or gopher:// or dict:// | The specific Juice Shop SSRF challenge requires you to fetch an image from a non-existent internal service to trigger an error message containing a flag.
); );
"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin" This would return the server's temporary AWS keys. Using the gopher:// protocol (if enabled in the request library or http module):
(Note: Exact path varies by version; check the challenge description in Juice Shop). SSRF is rarely an end in itself. In Juice Shop, it's a proof-of-concept, but in real systems, combine SSRF with other vulnerabilities: 1. Cloud Metadata Extraction If Juice Shop were deployed on AWS with a misconfigured IMDSv1: Practice bypass techniques: Using a tool like curl
const dns = require('dns').promises; const ip = await dns.lookup(urlObj.hostname); if (isPrivateIP(ip.address)) throw new Error('Blocked'); The SSRF vulnerability in OWASP Juice Shop is small but elegant. It demonstrates a single line of missing validation leading to a complete breach of network segmentation. For penetration testers, mastering SSRF means understanding that the server is just another user—one with far more privileges.