caido-shift
Replicate Caido Shift Agents-style passive proxy passes inside the existing caido-replay/caido-idor flow (T3.6). Stub — wraps micro-agents for open-redirect, IDOR-by-id-rotation, and JS-asset map insi
SKILL.md.claude/skills/caido-shift/SKILL.md
GitHubcaido-shift
Purpose
Caido Shift Agents (the commercial product) ships micro-agents that
auto-classify proxy traffic and surface targeted bug classes. We
replicate three of the highest-yield ones inside the existing
bin/caido-mcp.py so they trigger automatically on every captured
request without buying Shift.
Status
Stub. The skill scaffold is in place; the micro-agent
implementations are queued under bin/caido-mcp.py extension —
see "Implementation TODO".
Inputs
bin/caido-mcp.pyrunning with project scoped to current target.caido-capturepopulatedcaido_historywith ≥1 request.
Steps (when implemented)
- For each captured request that matches an in-scope host, dispatch
to the relevant micro-agent:
- open_redirect_agent — every URL/Location header param;
enumerates
?next=,?redirect=,?return_to=, etc., and replays with attacker-controlled value to detect 30x to external host. - idor_id_rotation_agent — every numeric/UUID path segment
gets rotated to a borrowed ID from the
caido-idorrole matrix; flag 200 OK on borrowed IDs. - js_asset_map_agent — every JS response gets diffed against
the previous capture for the same asset; new endpoints +
handlers in the diff feed
js-harvest.
- open_redirect_agent — every URL/Location header param;
enumerates
- Each finding writes to
targets/<name>/findings/shift_<agent>_<request_id>/draft.jsonwithauto_submit: false, requires_user_review: true.
Implementation TODO
- New MCP tools in
bin/caido-mcp.py:caido_shift_open_redirect_sweep(scope_id)caido_shift_idor_rotation_sweep(scope_id, role_matrix_id)caido_shift_js_asset_diff(asset_url)
- Per-agent regex/tax id list under
bin/shift_agents/<agent>.py.
Outputs
targets/<name>/findings/shift_<agent>_<request_id>/draft.jsonstatus.json.phases.caido_shift
Failure modes
- Caido project not scoped → out-of-scope hosts flagged + skipped.
- Mass IDOR rotation triggers WAF / 429 → respect
caido-replayrate-limit; back off. - Open-redirect agent on a single-page app with hash-based routing
→ false-positive prone; gate by checking
Locationheader is present.
Result block
"phases": { "caido_shift": {
"status": "stub|done", "ts": "<iso>",
"agents_run": [...],
"drafts_written": N } }