API Endpoint Discovery
Hunt swagger.json / openapi.yml / GraphQL /graphql, robots.txt, JS bundles — map the API surface area.
§ Where this technique fits
W-RECON-API-DISCO is catalogued under the Reconnaissance tactic of the offensive-security kill-chain. It appears in 13 approved dossiers in the registry, typically at step 1.4 on average.
§ Dossiers chaining this technique
- step 1 / 5
Open MongoDB → dump every collection
Shodan-indexed MongoDB on 27017 with no auth. Connect, list databases, dump every collection. Often the second stage is a ransom note in a new 'README' collection.
- step 1 / 6
ESXiArgs — OpenSLP unauth RCE → ransomware
Internet-facing ESXi with SLP service on TCP/427 unpatched for CVE-2021-21974. Single ROP gadget chain yields root, then a small bash script encrypts every .vmdk on local datastores.
- step 1 / 5
Open MQTT broker → smart-estate takeover
Shodan-indexed MQTT broker on TCP/1883 with no auth. Subscribe to '#' to harvest every device topic; publish to relays/locks/lights/thermostats.
- step 1 / 4
Signature replay across chains → token drain
EIP-2612 permit() signed without chainId / domain separator binding. Capture the off-chain signature on one chain and replay it on another to drain ERC-20 approvals.
- step 1 / 6
XXE → SSRF → IMDS → cloud creds
XML parser configured with external entities resolution. Use XXE to make the server hit IMDS and exfiltrate cloud credentials via DTD trickery.
- step 1 / 5
Single-packet race → coupon stacking
Coupon redemption check happens before the apply step. Send 20 redemptions in a single TCP packet — the app validates each in parallel and applies all of them.
- step 1 / 6
SSRF → IMDS → cloud creds → lateral
An image-fetcher / link-preview endpoint fetches attacker-controlled URLs server-side. Pivot to the cloud metadata service and steal the instance role credentials.
- step 1 / 6
File upload bypass → webshell → RCE
Upload filter checks extension or MIME but not magic bytes / final path. Bypass via double extension, content-type spoof, or polyglot, then call the dropped script.
- step 1 / 8
OAuth redirect_uri misconfig → account takeover
Provider accepts loose redirect_uri matching (wildcard, partial, open-redirect chain). Steal the authorization code by redirecting it through an attacker host.
- step 1 / 6
GraphQL introspection → BOLA → mass enum
GraphQL endpoint exposes its full schema. Discover an unauth'd or under-authorized resolver, enumerate every user's data by iterating IDs.
- step 1 / 5
NoSQL injection → auth bypass → admin
Login endpoint passes user-supplied JSON into a MongoDB query. Send {"$ne": null} to bypass the password check.
- step 2 / 6
JWT RS256 → HS256 algorithm confusion → admin
Server verifies any algorithm declared in the JWT header. Sign an HS256 token using the public RSA key as the HMAC secret — server accepts it as legit.
- step 5 / 6
Root detection + SSL pinning bypass → MITM the API
Rooted test device with Frida. Hook the app's root-detection and OkHttp CertificatePinner; route traffic through Burp to expose the entire authenticated API surface.
§ What commonly comes next
- 01Blind XXE — Out-of-Band Exfilseen 1×W-XXE-BLIND-OOB · Lateral Movement
- 02Broken Object Level Authorization (API BOLA)seen 1×W-BOLA · Privilege Escalation
- 03Business Logic Flawseen 1×W-BUSINESS-LOGIC · Impact
- 04ESXi OpenSLP Unauth RCE (CVE-2021-21974)seen 1×HV-ESXI-SLP · Initial Access
- 05File Upload Filter Bypassseen 1×W-UPLOAD-BYPASS · Initial Access
- 06GraphQL Introspectionseen 1×W-GRAPHQL-INTRO · Discovery
- 07JWT — RS256 → HS256 Algorithm Confusionseen 1×W-JWT-ALG-CONFUSION · Credential Access
- 08MQTT Broker Open / No Authseen 1×IOT-MQTT-OPEN · Initial Access