Siphon
How It Works
⚠️ Authorized Testing Only
This tool interacts with live systems and must only be used for testing that has been explicitly authorized by the asset owner. Unauthorized use of this tool to probe, scan, exploit, or otherwise interact with systems you do not have written permission to test is illegal under computer fraud and abuse laws (CFAA, CMA, and international equivalents). pr0t31n does not condone or recommend any unauthorized use. Always obtain a signed Rules of Engagement (RoE) or Statement of Work (SoW) before beginning any assessment.
Siphon is an API penetration testing orchestrator that performs comprehensive security assessments against REST, GraphQL, SOAP/WS-Security, WebSocket, SSE, and gRPC APIs. It drives a 22-phase testing pipeline aligned to the OWASP API Security Top 10 2023, combining built-in Python testing logic with external discovery tools (Kiterunner, FFUF, Feroxbuster, dirsearch, Katana) to cover both documented and undocumented API endpoints.
The assessment begins with Phase 0 — OpenAPI/Swagger specification discovery and endpoint enumeration using multiple brute-forcing tools. If the API has a spec file (OpenAPI, Swagger, GraphQL, Postman, Insomnia, HAR), Siphon parses it to extract every endpoint, parameter, and schema definition; undocumented endpoints discovered by the discovery tools are flagged as potential rogue endpoints. A request chaining engine (Phase 0c) supports ordered execution with automatic value capture (IDs, tokens) for stateful API coverage. Wildcard/catch-all detection prevents false positives by identifying APIs that respond identically to all paths — when detected, brute-forcing (Phase 0) and fuzzing (Phase 2) phases are skipped entirely.
Testing progresses through API fingerprinting and framework detection, HTTP method fuzzing with parameter fuzzing, multi-vector injection attacks (SQLi, NoSQLi, SSTI, XXE, LDAP, XSS, CMDi, CRLF, path traversal), JWT algorithm confusion attacks, user enumeration via response differential analysis, rate limiting bypass, mass assignment, SSRF, excessive data exposure analysis, GraphQL introspection and query depth testing, and business flow abuse (workflow skip, race conditions, value manipulation). Authenticated phases test BOLA/IDOR, BFLA, cross-user data leakage, advanced JWT attacks (jku, kid injection, HMAC cracking), session/token management, and multi-credential access matrices. Siphon also covers SOAP/WS-Security (WSDL enumeration, WS-Security bypass, SOAP injection), HTTP verb tampering, sensitive file exposure, TLS/SSL analysis, unsafe API consumption patterns (webhook SSRF, open redirect, deserialization), file upload endpoint detection, and non-HTTP protocol testing (WebSocket, SSE, gRPC).
Siphon implements a mandatory environment gate: the operator must declare production vs. non-production. Production mode restricts testing to read-only operations (no write-method state changes, no business-flow/mass-assignment tests). The tool features adaptive concurrency with hardware-aware scaling (CPU/RAM monitoring daemon adjusts thread pool in real time), per-subprocess 2 GB memory limits, and an OOM watchdog that kills the largest tracked subprocess when system memory exceeds 90%. A checkpoint/resume system persists completed phases to checkpoint.json for scan resumption after interruption.
All findings are auto-mapped to the OWASP API Security Top 10 2023 categories with CVE enrichment from title keywords. Output follows the pr0t31n universal directory structure with findings.json, findings.csv, api_inventory.json, api_map.json, summary.json, authentication_status.json, and per-phase evidence files with .log siblings. When running under Crucible (CRUCIBLE_MANAGED=1), Siphon emits __CRUCIBLE_LOG__, __CRUCIBLE_ERR__, __CRUCIBLE_STATUS__, and __CRUCIBLE_ACTION_ITEM__ protocol tokens. Pause/resume is supported via the shared pr0t31n_pause module.
Phase Pipeline
- Phase 0 — OpenAPI/Swagger discovery + Kiterunner/FFUF/Feroxbuster/dirsearch
- Phase 1 — API fingerprinting, server headers, CORS, framework detection
- Phase 2 — HTTP method fuzzing, FFUF parameter fuzzing
- Phase 3 — SQLi, NoSQLi, SSTI, XXE, LDAP, XSS, CMDi, CRLF, Path Traversal
- Phase 4 — JWT algorithm confusion, none-alg, key confusion
- Phase 5 — Rate limit detection and bypass techniques
- Phase 6 — Mass assignment / over-posting attack testing
- Phase 7 — SSRF via API URL parameters
- Phase 8 — Excessive data exposure in API responses
- Phase 9 — GraphQL introspection and query fuzzing
- Phase 10 — BOLA/IDOR — cross-user object access (auth required)
- Phase 11 — BFLA — function-level authorization bypass (auth required)
- Phase 12 — Cross-user data leakage (auth + auth2 required)
- Phase 13 — API session / token management analysis (auth required)
- Phase 14 — JWT advanced attacks — jku, kid, HMAC cracking (auth required)
- Phase 15 — Sensitive file exposure — .env, config, git, swagger (API9)
- Phase 16 — TLS/SSL analysis — deprecated protocols, weak ciphers (API8)
- Phase 17 — HTTP verb tampering — method override header bypass
- Phase 18 — SOAP/WS-Security — WSDL enum, WS-Security bypass, SOAP injection
- Phase 19 — File upload endpoint detection — accepted types (informational)
- Phase 20 — Multi-credential access matrix — per-role endpoint access, BFLA, unauthenticated access
- Phase 21 — Non-HTTP protocols — WebSocket / SSE / gRPC detection + passive checks
Security
Siphon enforces a mandatory environment declaration (production vs. non-production) before any testing begins. In production mode, write-method state changes and destructive tests (business-flow abuse, mass assignment) are disabled to prevent unintended data modification. SSL certificate verification is intentionally disabled (verify=False) by default since the tool must probe self-signed and internal APIs, but a verify_ssl setting can re-enable it. Per-subprocess memory limits (2 GB virtual address space cap via RLIMIT_AS) and an OOM watchdog daemon prevent runaway child processes from exhausting system resources. Authentication credentials are never logged to findings output — only authentication status is recorded in authentication_status.json. The pause manager integrates with Crucible's process control, allowing graceful interruption with a configurable grace period.
Features
Advanced
Authentication
Authorization
Data
Discovery
Fuzzing
Injection
Output
Performance
Protocols
Rate Limiting
Reconnaissance
Resilience
TLS
Use Cases
OWASP API Top 10 Assessment
Systematically test a REST API against all 10 categories of the OWASP API Security Top 10 2023, generating evidence-backed findings with compliance mappings and OWASP category references.
API Spec vs. Reality Audit
Compare a published OpenAPI specification against the actual API surface -- discover undocumented (rogue) endpoints, hidden parameters, and shadow functionality that the specification does not declare.
JWT Security Assessment
Comprehensively test JWT-based authentication: algorithm confusion (none-alg, RS256-to-HS256), key confusion, jku/x5u injection, kid path traversal, and HMAC key cracking.
Microservices API Gateway Testing
Test rate limiting enforcement, CORS configuration, and authorization boundaries across microservice API endpoints behind a gateway.
Multi-Role Authorization Testing
Provide credentials for multiple roles (admin, user, viewer) to build a complete access matrix (Phase 20) and identify BOLA, BFLA, and privilege escalation paths across all endpoints.
SOAP / Legacy API Security Review
Assess SOAP-based APIs and WS-Security implementations for WSDL exposure, XML injection, and authentication bypass vulnerabilities.
GraphQL API Penetration Test
Test GraphQL endpoints for introspection exposure, query depth/complexity abuse, batch query attacks, and field-level authorization failures.
Production API Safety Audit
Run Siphon in production mode (--environment production) for read-only testing that avoids state-changing operations while still covering reconnaissance, authentication, TLS, rate limiting, and data exposure analysis.
CLI Reference
Command Examples
Run with Settings
Run full API assessment with settings specifying base URL, OpenAPI spec, and auth tokens.
Generate Template
Create a template settings.json.
Resume
Resume from the last checkpoint.
Third-Party Tool Invocations
Commands and flags used when this tool invokes third-party dependencies during operation.
Finding Nomenclature
Siphon findings use the SI- prefix in the findings catalogue (e.g., SI-001, SI-002). Each finding includes:
- Catalogue ID — Unique identifier mapped to a specific API vulnerability detection pattern
- OWASP API Mapping — Automatic mapping to the OWASP API Security Top 10 2023 category (API1:2023 through API10:2023) with a URL reference to the relevant OWASP page. The auto-mapper uses keyword matching against finding titles to assign the most appropriate category.
- Risk Level — CRITICAL, HIGH, MEDIUM, LOW, or INFO (always uppercase)
- API Context — The specific endpoint path, HTTP method, and whether the endpoint was from the API spec or discovered via brute-forcing (rogue endpoint flag)
- Evidence Files — Request/response captures, tool output, and
.logtranscripts underevidence/and tool-specific directories - CVE Enrichment — Automatic CVE association based on title keyword matching for known vulnerability patterns (JWT flaws, TLS vulnerabilities, framework-specific CVEs)
Key finding categories mapped to OWASP API Top 10 2023:
- API1 — BOLA/IDOR, cross-user object access, insecure direct object references
- API2 — JWT flaws, broken authentication, credential weaknesses, token management issues
- API3 — Excessive data exposure, mass assignment, object property level authorization failures
- API4 — Rate limiting absence, unrestricted resource consumption
- API5 — BFLA, function-level authorization bypass, unauthorized HTTP methods
- API6 — Business flow abuse, workflow skip, race conditions
- API7 — SSRF, open redirect
- API8 — Security misconfiguration (injections, headers, CORS, TLS, framework exposure)
- API9 — Improper inventory management, rogue endpoints, sensitive file exposure, wildcard routing
- API10 — Unsafe API consumption, webhook SSRF, supply chain
Action Items
Siphon generates action items emitted as __CRUCIBLE_ACTION_ITEM__ protocol tokens for display in the Crucible management console and persisted to action_items.json in the output directory. Each action item includes a unique ID, type, recommended tool, target, priority, and description. The recommended tools include:
- fracture — Follow-up web application testing for findings that indicate broader web vulnerabilities beyond the API surface (e.g., injection findings that warrant deeper exploitation testing, endpoints needing full web app assessment)
- isotope — Cryptographic analysis follow-up for JWT key material, TLS configuration anomalies, or certificate chain issues
- Manual Verification — Findings that require human judgment, domain knowledge, or multi-step manual testing
Common action item scenarios:
- Rogue endpoint discovery — undocumented endpoints found via brute-forcing that are not in the API specification and need manual review for sensitivity and access control
- Potential BOLA/IDOR candidates — object identifiers that appear to be incrementable or predictable, requiring cross-user verification with a second credential set
- JWT implementation anomalies — cases where the JWT validation behaviour is ambiguous (e.g., accepts both RS256 and HS256 but key confusion exploit did not fully succeed)
- Rate limiting gaps — specific endpoints that lack rate limiting where business logic suggests they should have it (e.g., login, password reset, payment endpoints)
- Business flow abuse leads — workflow steps that can be skipped or reordered but require domain knowledge to assess the business impact
- Injection indicators that warrant deeper exploitation with Fracture's full web testing pipeline
Output Files
| File | Format | Description |
|---|---|---|
meta.json |
JSON | Tool identity and engagement metadata |
findings.json |
JSON | Universal findings array v1.1 |
findings.csv |
CSV | CSV mirror of findings |
summary.json |
JSON | Aggregated statistics |
scan.log |
TXT | Human-readable timestamped log |
scan.log.json |
JSONL | Machine-readable JSON log events |
errors.log |
TXT | ERROR-level entries only |
checkpoint.json |
JSON | Resumable scan checkpoint |
api_inventory.json |
JSON | API endpoint inventory |
api_map.json |
JSON | API surface map |
Invocation Methods
| Method | Usage |
|---|---|
| CLI — Direct |
cd /opt/pr0t31n/Siphon && python3 siphon.py [OPTIONS]
Run directly with command-line arguments. |
| Crucible-Managed |
Launched and managed by Crucible (port 5100). Crucible handles start/stop/pause, log streaming, findings aggregation, and status tracking. |
Integration
Depends On
- AuthProbe (auth detection)
Used By
- Crucible (manages)
- Prometheus (reports)
Third-Party Dependencies & Credits
| Tool / Library | Developer | Type | Link |
|---|---|---|---|
| Nuclei | ProjectDiscovery | system | https://github.com/projectdiscovery/nuclei |
| sslscan | rbsec | system | https://github.com/rbsec/sslscan |
| testssl.sh | Dirk Wetter | system | https://github.com/drwetter/testssl.sh |
| ffuf | joohoi (Joona Hoikkala) | system | https://github.com/ffuf/ffuf |
| requests | Kenneth Reitz / Python Software Foundation | python | https://github.com/psf/requests |
| PyYAML | Kirill Simonov (xi) | python | https://github.com/yaml/pyyaml |
| grpcurl | FullStory | system | https://github.com/fullstorydev/grpcurl |
Metadata
| Name | Siphon |
| Category | Exploitation |
| Version | 2.34.6 |
| Install Path | /opt/pr0t31n/Siphon |
| Main File | siphon.py |
| GitHub | https://github.com/pr0t31n/Siphon.git |