Penetration Test Report - Sandbox99 Chronicles

AI-driven web pentest with human-in-the-loop review, guided by django-security skill checklist. Local and live verification completed. Browser security-tool integrations reviewed and remediated.

Applicationdjango-blog-site / Sandbox99 Chronicles
Dates2026-08-18 to 2026-08-20
Targetshttps://sandbox99.local
https://sandbox99.cc
StackDjango 5.2, Gunicorn, Caddy, SQLite, Cloudflare
TesterOpenCode AI, LLM: GPT 5.4 mini, Skill: django-security
0
Critical Open
0
High Open
0
Medium Open
2
Low Open
2
Functional Security Fixes Resolved

Scope

Out Of Scope

Methodology

Assessment followed Django-focused controls from django-security:

Executive Summary

Initial local audit found medium and low-risk issues in CSP, cookie flags, upload sanitization, clickjacking protection, and password-breach response shape. Those items were remediated. Follow-up live verification on sandbox99.cc passed with no new critical or medium findings.

Later browser verification of landing-page security tools found two integration issues: AJAX CSRF token retrieval broke after CSRF_COOKIE_HTTPONLY = True hardening, and CSP blocked third-party IP-detection APIs. Both issues were fixed without weakening core security posture.

Test Phases

Phase 1 - Local Pentest (sandbox99.local)

CategoryTestsResult
CSRF Protection3Pass
Stored XSS4Pass
SQL Injection5Pass
Path Traversal6Pass
Open Redirect3Pass
Auth Bypass4Pass
File Upload3Pass
Rate Limiting2Pass
Security Headers7Pass With Findings
Cookie Security2Findings
Session Management2Pass
Total4139 pass / 2 fail initially

Phase 2 - Live Verification (sandbox99.cc)

CategoryTestsResult
Security Headers8Pass
CSRF Protection2Pass
Stored XSS2Pass
SQL Injection4Pass
Path Traversal2Pass
Open Redirect2Pass
Host Header1Pass
Auth Bypass3Pass
Rate Limiting2Pass
Cookie Security2Pass
SSRF1Pass
Total2929 pass

Phase 3 - Browser Security Tool Verification (sandbox99.local)

Checked landing-page tools that call third-party services:

Result:

Findings And Status

Resolved Findings

IDFindingSeverityStatus
F-001Missing Content-Security-Policy headerMediumResolved
F-002CSRF cookie missing HttpOnlyMediumResolved
F-003CSRF cookie missing SecureMediumResolved
F-004X-Frame-Options overridden to SAMEORIGINLowResolved
F-005UploadedPage save() not re-sanitizing on updateLowResolved
F-008Password breach API returned exact breach countInfoResolved
F-009Browser AJAX CSRF token retrieval broken after HttpOnly hardeningInfo / Functional securityResolved
F-010CSP blocked external IP-detection APIsInfo / Functional securityResolved

Open Findings

IDFindingSeverityNotes
F-006UploadedPage extension validator checks extension onlyLowAdd magic-byte or MIME validation
F-007Comment form lacks dedicated IP-based rate limitingLowMath captcha present; abuse friction exists

Key Evidence

Security Controls Verified

Browser Tool Fixes Verified

Remediation Summary

Application Changes

Infrastructure Changes

Risk Assessment

Current residual risk is low.

Recommendations

  1. Add magic-byte or MIME validation for uploaded files.
  2. Add dedicated rate limiting for comment submission endpoint.
  3. Re-run authenticated/admin pentest before major release.
  4. Monitor third-party IP APIs; some IPv6 endpoints return 503 externally.
  5. Keep CSP allow-list minimal and review whenever new frontend integrations are added.

Conclusion

Pentest using django-security guidance found multiple hardening gaps and two browser-security integration issues. All medium findings were fixed. Live production verification passed. Remaining exposure is low and centered on optional hardening improvements, not active exploitable gaps in tested unauthenticated flows.

Standalone HTML report. Inline CSS only. No JavaScript.