pwntrol VAPTBOOSTER is reasoning…
ENGAGEMENT
TARGET
app.acmepay.io
Web application · authorized scope
Recon & surface mapping
Behavior modeling
Hypothesis forming
Controlled testing
Operator verification
Report compilation
1
CRITICAL
1
VERIFIED
[VAPTBOOSTER] REASONING LIVE

Mapped 38 endpoints behind authentication. Object identifiers are numeric and passed directly in the URL path — /api/orders/:id, /api/invoices/:id, /api/profiles/:id.

EXPECTED BEHAVIOR — INVARIANT

An authenticated user may read only objects owned by their own account. A request for another account's object must return 403 or 404 — never 200 with data.

HYPOTHESIS

If ownership is checked only at login and the URL id is trusted thereafter, substituting another account's id will return that object. Falsifiable in two requests.

GET /api/orders/1023  Authorization: Bearer <session-A>
200 OK account_id: A · total: 240.00  // baseline, owned
GET /api/orders/1198  Authorization: Bearer <session-A> ← owned by account B
200 OK account_id: B · total: 1,880.00
CRITICAL

Invariant violated. Session A read account B's order — ownership is never enforced server-side. This is BOLA, not a misconfiguration.

Re-testing sibling endpoints to establish blast radius: /invoices/:id and /profiles/:id share the pattern. 3 endpoints affected.

Escalating to senior operator with evidence bundle — 4 requests, 4 responses, account diff.
✓ Operator reproduced and confirmed — no false positive.

CRITICAL
Broken Object-Level Authorization
GET /api/orders/:id — cross-account read · 3 endpoints
✓ operator confirmed