Skip to content

Penetration Testing Guide

Component Description Port
HTTP/HTTPS server Main application server 8080 (configurable)
WebSocket endpoint /ws upgrade path Same as HTTP
SSE endpoint /events streaming Same as HTTP
Health endpoints /health, /live, /ready Same as HTTP
Metrics endpoint /metrics Same as HTTP
OpenAPI docs /docs, /redoc, /scalar Same as HTTP
  • JWT forgery: malformed, expired, algorithm-confusion, none-algorithm tokens
  • Missing auth: access protected routes without Authorization header
  • Token replay: capture and replay from different IP
  • CORS bypass: cross-origin requests not in allow list
  • JSON injection: malformed, deeply nested, duplicate keys, large payloads
  • SQL injection: parameterized queries via sqlx (should be safe)
  • Path traversal: ../ sequences, URL-encoded variants
  • Parameter pollution: duplicate query parameters
  • Global rate limit: flood from single IP (expect 429 + Retry-After)
  • Per-IP rate limit: exceed per-IP burst (expect 429)
  • Bulkhead saturation: concurrent connections (expect 503)
  • Slow loris: slow data send (expect 504 timeout)
  • Resource exhaustion: large allocations
  • Downgrade attack: TLS 1.1 or 1.0 (should fail — rustls only supports 1.2/1.3)
  • Weak cipher suites: NULL, EXPORT, RC4 ciphers (should fail)
  • Certificate validation: self-signed, expired, wrong-domain
  • Host header injection
  • Stack traces: trigger unhandled errors (should return generic 500)
  • Debug endpoints: verify /metrics doesn’t leak sensitive data
  • Server header: verify not present or generic
  • Timing attacks: measure response time differences
Terminal window
# Install cargo-fuzz (nightly)
rustup toolchain install nightly
cargo install cargo-fuzz
# Run fuzz targets (300 seconds each)
cargo fuzz run fuzz_jwt -- -max_total_time=300
cargo fuzz run fuzz_headers -- -max_total_time=300
cargo fuzz run fuzz_body -- -max_total_time=300
cargo fuzz run fuzz_router -- -max_total_time=300
cargo fuzz run fuzz_query_params -- -max_total_time=300
cargo fuzz run fuzz_file_paths -- -max_total_time=300
Tool Purpose
cargo audit Vulnerability scanning
cargo deny License/advisory checks
curl Manual request testing
oha Load testing
nmap Port/service discovery
testssl.sh TLS configuration test
jwt_tool JWT attack toolkit
sqlmap SQL injection detection

Use CVSS 3.1 for severity scoring:

Title: <brief description>
Severity: CVSS 3.1 <score> (<Critical/High/Medium/Low>)
Endpoint: <method> <path>
Type: <OWASP category>
## Description
## Steps to Reproduce
## Impact
## Recommended Fix