The Breach2Alert project is a hands-on exploration of real-world web application hacking and threat detection. Leveraging the vulnerable OWASP Juice Shop running in a Docker container on Kali Linux, I simulate various attack scenarios using tools like Burp Suite to exploit common OWASP Top 10 vulnerabilities. This offensive approach is paired with defensive monitoring through Splunk, where logs and events generated by the attacks are collected, analyzed, and visualized. The project demonstrates how attackers operate and how security teams can detect and respond to threats in real time using a powerful Security Information and Event Management (SIEM) platform.
localhost:3000
.docker run --rm -p 3000:3000 bkimminich/juice-shop
127.0.0.1:8080
(default).127.0.0.1:8080
.chrome --proxy-server=http://127.0.0.1:8080
http://localhost:3000
. Burp Suite will now intercept traffic.docker run -d -p 8000:8000 -e SPLUNK_START_ARGS="--accept-license" \ -e SPLUNK_PASSWORD="changeme" --name splunk splunk/splunk:latest
http://localhost:8000
and log in as:<?xml version="1.0"?>
).juiceshop
(create if needed).burp:httphistory
or similar.index=juiceshop sourcetype=burp:httphistory | head 20
After you become familiar with the HTTP logs from Juice Shop and Burp Suite, the next steps are to perform targeted vulnerability testing. We will simulate attacks such as SQL injection, broken authentication, and more. Then, we'll ingest the corresponding logs into Splunk, build detailed SPL queries to detect these attacks in real-time, and configure alerts to mimic a real SOC environment — showing your expertise in both offense and defense. This comprehensive workflow will impress recruiters with your hands-on, end-to-end security monitoring skills.
SQL Injection (SQLi) is one of the most dangerous vulnerabilities, allowing attackers to manipulate database queries via unsanitized user inputs.
The website has a login form: SELECT * FROM users WHERE email='[user]' AND password='[pass]'; If we enter: Email: ' OR 1=1-- Password: anything The query becomes: SELECT * FROM users WHERE email='' OR 1=1--' AND password='anything'; 👉 OR 1=1 is always true, and -- comments out the rest. 💥 Result: Login bypassed without valid credentials.
1. Open Juice Shop in your browser. 2. Go to the login form. 3. Enter: Email: ' OR 1=1-- Password: anything 4. You’ll be logged in as admin without knowing credentials. 5. Congrats — you exploited SQL Injection! ✅ Challenge Solved: "Login Admin"
1. Intercept the login request in Burp Suite. 2. Forward the request to Repeater. 3. Modify the "email" field payload to: ' OR 1=1-- 4. Send the request. If the app is vulnerable, you'll receive a 200 OK and an authentication token. 👉 See image below showing the Repeater request & token response. 5. You can export the HTTP history to XML for log analysis in Splunk.
index=juiceshop sourcetype=burp | search "OR 1=1" OR "1=1--" OR "' OR '" | stats count by _time, host, ip
- Use Prepared Statements (e.g., parameterized queries). - Input validation: never trust user input. - Use ORM frameworks to abstract direct SQL. - Apply Web Application Firewalls (WAF) to detect common payloads. - Regularly test your app using DAST tools like OWASP ZAP or Burp.
This vulnerability demonstrates how attackers can access internal challenge metadata via an unauthenticated API endpoint in OWASP Juice Shop, revealing internal logic that should be hidden.
Juice Shop exposes an API endpoint at /api/challenges that returns sensitive internal data. Example: GET /api/challenges?sort=name This endpoint reveals: - Challenge names - Hints - Whether they’ve been solved - Logical internals used to score progress This data should be access-restricted or obfuscated, but is publicly exposed. 💡 This is a realistic Broken Access Control vulnerability because it allows attackers to programmatically map the app’s internal logic and scoring mechanism.
1. Open Juice Shop in your browser. 2. In DevTools → Network tab, refresh the page. 3. Find the request to: /api/challenges?sort=name 4. Right-click → Open in new tab OR copy as cURL. 5. Send it without authentication headers — you'll still get the full JSON response. 6. Parse the data to identify hidden or unsolved challenges and how the app internally scores them. ✅ Challenge Solved: "Access Score Board"
1. Open Burp Suite and intercept any request on Juice Shop. 2. Manually craft a new GET request to: /api/challenges?sort=name 3. Send it to Repeater. 4. Remove all auth headers. 5. Send the request and observe the JSON response revealing internal challenge metadata. 🧠 Pro Tip: This data can be used for automated challenge solving or recon scripting.
index=juiceshop sourcetype=burp | search "/api/challenges" | stats count by _time, host
- Implement strict access control on internal API endpoints. - Apply Role-Based Access Control (RBAC) to protect metadata routes. - Avoid exposing unnecessary internal logic to the frontend. - Use API gateway or middleware to verify auth tokens before serving responses. - Regularly audit and test your API for unauthorized access using tools like ZAP/Burp.
Note:
This project is still a work in progress and will be updated soon.