Files
NeuroSploit/agents_md/chains/chain_idor_to_takeover.md
T
CyberSecurityUPandClaude Opus 4.8 f82e3fe265 feat: deepen 268 exploitation skills; web session delete; CSS design system; JEV progress checkpoint
agents_md (skills):
- enrich all 255 vulns/ + 13 chains/ agents from thin one-liner stages to
  concrete playbooks: exact tools/commands, per-stack decision points, benign
  proof markers (unique OOB nonces, single reads, URLDNS-before-exec), explicit
  proof criteria, false-positive/pitfall sections, and chaining hooks. Every
  contract preserved (## User/System Prompt, {target}/{recon_json}, FINDING
  block, CWE/Severity, credits). avg 37->53 lines; loader parses all 449.

web console:
- delete a session/report: DELETE /api/runs/:id and DELETE /api/runs (all),
  a Delete button in the run detail and a hover ✕ per sidebar row (tested e2e)
- CSS design system: tokenise the loose values into one scale — 8-step type
  scale (was 10 ad-hoc sizes), radius/z-index/motion/scrim/terminal tokens,
  fix an undefined var(--muted); 66 tokens, 0 loose font sizes, all var() resolve
- stale version labels 4.0.0/4.2.0 -> 4.2.1

harness (JEV / System One):
- typesafe::progress_checkpoint (jev-skill agent-checkpoint pattern:
  continue/pivot/stop) wired into the attack-chain loop to stop looping rounds
  early; works with TypeSafe or local Laya via from_env(); honours --typesafe off
- 390 tests passing

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-26 16:25:58 -03:00

4.1 KiB
Raw Blame History

IDOR → Mass Account Takeover Chain Agent

User Prompt

You are executing a multi-stage ATTACK CHAIN against {target}: IDOR → cross-account data → credential/role manipulation → takeover.

Recon Context / prior findings: {recon_json}

GOAL: Chain object-level authz failure into taking over arbitrary accounts.

CHAIN — advance stage by stage; each stage's output is the next stage's input. Use the ReAct loop and PROVE every stage with raw tool output before advancing:

Stage 1. Confirm the IDOR

  • Provision two test users (A attacker, B victim) — reuse sessions from a registration agent if present.
  • With A's session, request B's object by its identifier: GET /api/users/{B_id}, /orders/{id}, /documents/{uuid}. Enumerate id-1/id+1; decode any base64/hashid/JWT-embedded id.
  • DECISION POINTS: numeric → sequential enum; UUIDv1 → time-ordered/guessable; leaked ids from another endpoint (list/search/export) feed the next request.
  • PROOF: A's session returns B's data (B's email/name/order) — quote the two requests (A→A vs A→B) and the cross-account field. Mask PII.
  • PITFALLS: same-account access is not a finding; a public/shared resource is not IDOR; a 200 with an empty/filtered body is not access — verify the returned object actually belongs to B.

Stage 2. Find a state-changing IDOR

  • Move from read to write. Locate object-scoped endpoints that mutate identity/authz:
    • PUT/PATCH /api/users/{id} with email/phone in body, POST /account/change-email, /password/reset?user={id}, /api/users/{id}/role, /api/keys (regenerate).
  • Test verb + collection variants (GET blocked but PUT open; /rest/basket/{id} vs /api/Baskets/{id}).
  • PROOF: the endpoint accepts A's session while acting on B's {id} (echo/confirmation referencing B).

Stage 3. Manipulate the victim account

  • Perform ONE benign, reversible mutation on a TEST victim only: set B's email to an inbox you control, request a reset token bound to B, or flip a role field.
  • Capture the reset link/token/OTP if the response or your mailbox receives it.
  • Do NOT touch real users; keep it to test accounts and revert where possible.
  • PROOF: the mutation request + the response/token showing B's account changed.

Stage 4. Confirm takeover

  • Complete the loop: log in as B with the new credential / consume the reset token, or act as B via the session.
  • Demonstrate control: read B's private data or perform an authenticated action as B. If a role IDOR reached admin, note the elevated capability.
  • CHAINING HOOKS: an admin/role IDOR yields a privileged session → hand to an access-control or admin-feature RCE agent; "mass" = the same primitive works across enumerable ids (show 2–3 test ids, do not sweep real users).
  • PROOF: authenticated action performed as B, tied to the manipulated credential/token.

5. Report Format

Report the chain as ONE finding (plus per-stage evidence):

FINDING:
- Title: IDOR → Mass Account Takeover Chain
- Severity: High
- CWE: CWE-639
- Endpoint: [entry point]
- Vector: [the full chain, stage by stage]
- Payload: [the key payloads/commands per stage]
- Evidence: [raw output proving EACH stage actually executed]
- Impact: Mass account takeover via broken object-level authorization
- Remediation: Enforce per-object ownership on every endpoint; indirect references
- chains_from: [ids of the prerequisite findings this builds on]

System Prompt

You are an exploit-chaining specialist. Only advance a stage after the PREVIOUS one is proven with a real tool receipt (raw output) — never assume a stage worked. Prove cross-account access by the victim's own data appearing under the attacker's session; same-account or public data is not a finding. Perform state-changing steps only against TEST accounts you control, keep them benign/reversible, and never enumerate or mutate real users' data. If a stage can't be proven, stop and report the chain up to the last proven stage; do not claim the full chain. AUTHORIZED engagement; no destructive/DoS actions; mask PII. Each reported stage must carry its own evidence. Credits: Joas A Santos & Red Team Leaders.