Outbound Interaction & OOB Detection
Purpose
Use this skill for outbound interaction and out-of-band validation when the hypothesis requires callback evidence rather than an immediate in-band response.
Primary use cases:
- SSRF callback confirmation
- Blind XSS beacons
- Blind XXE
- Webhook delivery validation
- DNS, HTTP, or HTTPS callback correlation
- Asynchronous server-side interaction proof
- Reverse-shell-adjacent egress testing where the goal is callback validation, not shell handling
Use an in-band validation skill instead when the finding can be confirmed fully in-band.
Operating Rules
- Treat OOB validation as evidence collection, not only payload delivery.
- Generate a unique correlation token for every test case.
- Keep control and test payloads separate.
- Correlate events by token, subdomain or path, and timestamp before confirming a finding.
- Preserve session state and callback logs on disk.
- Keep the listener running long enough for delayed interactions.
- Use the minimum protocol set that can validate the hypothesis.
- Do not claim confirmation from background traffic or uncorrelated callbacks.
- Do not send real secrets in callback payloads.
Activation Triggers (Positive)
Use this skill when the request or observed behavior includes:
ssrf callback
blind xss
webhook abuse
oob
dns interaction
asynchronous callback
xxe out of band
blind xxe
http callback
https callback
egress validation
Handoff Criteria
- Hand off to
pentest-xss for XSS context, browser sink analysis, and payload construction before OOB callback correlation.
- Hand off to
pentest-input-protocol-manipulation for parser, XXE, SSRF, or request mutation work.
- Hand off to
pentest-exploit-execution-payload-control only after deterministic outbound behavior is confirmed.
Validation Standard
Only confirm the finding if all of the following are true:
- A unique per-test token was generated before payload delivery.
- The payload under test embedded the expected callback identifier.
- An interaction was observed in the allowed test window.
- The observed interaction matches the token plus path or subdomain plus timestamp.
- Control cases do not explain the same signal.
Verdicts:
confirmed: deterministic correlation exists
inconclusive: partial signal without enough correlation
not confirmed: no matching interaction or controls invalidate the claim
Instructions
- Generate unique per-test correlation identifiers before sending payloads.
- Ensure callback listener scope and retention are sufficient for delayed events.
- Correlate callbacks by token, path, and time window before confirmation.
- Differentiate noisy background traffic from test-linked interactions.
- Use control payloads to reduce false positives.
- Pass confirmed primitives to exploit or logic skills with full correlation evidence.
Verification Gate
- Treat OOB validation as evidence discipline, not only payload dispatch.
- Preserve immutable callback logs for auditability.
- Include both positive and negative control outcomes.
- Confirm only with deterministic correlation.
- Use fresh tokens for unrelated tests.
- Keep real secrets out of callback payloads.
Standard Workflow
- Define the hypothesis and expected outbound behavior.
- Choose the smallest callback mechanism that can validate it.
- Start one listener session for the assessment run.
- Generate one unique token per probe.
- Embed the tokenized callback endpoint into the payload.
- Send the payload and record the timestamp and source context.
- Monitor for matching interactions during the expected window.
- Compare with controls before reaching a verdict.
- Pass confirmed primitives to exploit or logic-abuse workflows with full evidence.
Listener Component
Use interactsh-client or an equivalent controlled callback service for DNS, HTTP, and HTTPS callback validation when available.
Reference startup pattern:
RUN_DIR="/tmp/interactsh-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$RUN_DIR"
interactsh-client \
-json \
-o "$RUN_DIR/interactions.jsonl" \
-sf "$RUN_DIR/session.txt" \
-ps \
-psf "$RUN_DIR/payloads.txt" \
-pi 5 \
>"$RUN_DIR/stdout.log" 2>&1 &
echo $! > "$RUN_DIR/interactsh.pid"
sleep 2
cat "$RUN_DIR/payloads.txt"
Listener handling rules:
- Start one background listener per assessment run unless isolation requires a separate session.
- Persist
interactions.jsonl, session state, generated payload domains, and stdout logs.
- Keep the listener active for the full validation window.
Per-Test Token Generation
Generate one unique token for each test case:
TEST_TOKEN="$(tr -dc 'a-z0-9' </dev/urandom | head -c 10)"
BASE_DOMAIN="$(head -n1 "$RUN_DIR/payloads.txt" | tr -d '\r\n')"
CALLBACK_FQDN="${TEST_TOKEN}.${BASE_DOMAIN}"
echo "$TEST_TOKEN $CALLBACK_FQDN $(date -Iseconds)" >> "$RUN_DIR/test_tokens.log"
printf '%s\n' "$CALLBACK_FQDN"
Rules:
- Never reuse a token across unrelated tests.
- Record token, payload target, source vector, and timestamp.
- Use path-based correlation in addition to subdomain-based correlation when useful.
Protocol Selection
Choose the protocol that matches the hypothesis:
- DNS: egress proof, resolver behavior, low-friction SSRF or XXE validation
- HTTP: webhook delivery, SSRF, application-layer callback verification
- HTTPS: when the target is likely to enforce TLS-only egress
Prefer the smallest useful set. Do not spray all protocols unless the test requires it.
Reverse-Shell-Adjacent Egress Checks
Use this skill for reverse-shell-adjacent validation only when the objective is to determine whether the target can reach an external endpoint over common egress channels such as 80 or 443.
Rules:
- Use this skill for outbound reachability and protocol behavior validation, not shell handling.
- If shell-capable execution is later confirmed, hand off to the exploit execution workflow.
Evidence to Capture
For each test case, record:
- hypothesis
- payload vector
- generated token
- callback endpoint
- request timestamp
- control payloads
- observed callback timestamp
- protocol observed
- source context
- verdict
Output Schema
Return:
- Correlation table with
token, payload path or subdomain, timestamp, source context
- Validation verdict:
confirmed, not confirmed, or inconclusive
- Follow-on opportunities based only on confirmed outbound behavior
- Reproduction steps with enough detail for another operator to rerun the test
Tooling Notes
- If
interactsh-client or an equivalent listener is missing, state that clearly, recommend the missing tool for the next run, and stop short of confirming OOB claims.
- Do not replace deterministic correlation with assumption.
- Preserve logs so callback-based claims remain auditable.
1---2name: pentest-outbound-interaction-oob-detection3description: Outbound interaction and OOB validation for SSRF callbacks, blind XSS beacons, webhook abuse, XXE/OOB behavior, DNS/HTTP/HTTPS callback correlation, asynchronous server-side interaction proof, and egress validation.4---56# Outbound Interaction & OOB Detection78## Purpose910Use this skill for outbound interaction and out-of-band validation when the hypothesis requires callback evidence rather than an immediate in-band response.1112Primary use cases:13- SSRF callback confirmation14- Blind XSS beacons15- Blind XXE16- Webhook delivery validation17- DNS, HTTP, or HTTPS callback correlation18- Asynchronous server-side interaction proof19- Reverse-shell-adjacent egress testing where the goal is callback validation, not shell handling2021Use an in-band validation skill instead when the finding can be confirmed fully in-band.2223## Operating Rules2425- Treat OOB validation as evidence collection, not only payload delivery.26- Generate a unique correlation token for every test case.27- Keep control and test payloads separate.28- Correlate events by token, subdomain or path, and timestamp before confirming a finding.29- Preserve session state and callback logs on disk.30- Keep the listener running long enough for delayed interactions.31- Use the minimum protocol set that can validate the hypothesis.32- Do not claim confirmation from background traffic or uncorrelated callbacks.33- Do not send real secrets in callback payloads.3435## Activation Triggers (Positive)3637Use this skill when the request or observed behavior includes:38- `ssrf callback`39- `blind xss`40- `webhook abuse`41- `oob`42- `dns interaction`43- `asynchronous callback`44- `xxe out of band`45- `blind xxe`46- `http callback`47- `https callback`48- `egress validation`4950## Handoff Criteria5152- Hand off to `pentest-xss` for XSS context, browser sink analysis, and payload construction before OOB callback correlation.53- Hand off to `pentest-input-protocol-manipulation` for parser, XXE, SSRF, or request mutation work.54- Hand off to `pentest-exploit-execution-payload-control` only after deterministic outbound behavior is confirmed.5556## Validation Standard5758Only confirm the finding if all of the following are true:591. A unique per-test token was generated before payload delivery.602. The payload under test embedded the expected callback identifier.613. An interaction was observed in the allowed test window.624. The observed interaction matches the token plus path or subdomain plus timestamp.635. Control cases do not explain the same signal.6465Verdicts:66- `confirmed`: deterministic correlation exists67- `inconclusive`: partial signal without enough correlation68- `not confirmed`: no matching interaction or controls invalidate the claim6970## Instructions71721. Generate unique per-test correlation identifiers before sending payloads.732. Ensure callback listener scope and retention are sufficient for delayed events.743. Correlate callbacks by token, path, and time window before confirmation.754. Differentiate noisy background traffic from test-linked interactions.765. Use control payloads to reduce false positives.776. Pass confirmed primitives to exploit or logic skills with full correlation evidence.7879## Verification Gate8081- Treat OOB validation as evidence discipline, not only payload dispatch.82- Preserve immutable callback logs for auditability.83- Include both positive and negative control outcomes.84- Confirm only with deterministic correlation.85- Use fresh tokens for unrelated tests.86- Keep real secrets out of callback payloads.8788## Standard Workflow89901. Define the hypothesis and expected outbound behavior.912. Choose the smallest callback mechanism that can validate it.923. Start one listener session for the assessment run.934. Generate one unique token per probe.945. Embed the tokenized callback endpoint into the payload.956. Send the payload and record the timestamp and source context.967. Monitor for matching interactions during the expected window.978. Compare with controls before reaching a verdict.989. Pass confirmed primitives to exploit or logic-abuse workflows with full evidence.99100## Listener Component101102Use `interactsh-client` or an equivalent controlled callback service for DNS, HTTP, and HTTPS callback validation when available.103104Reference startup pattern:105```bash106RUN_DIR="/tmp/interactsh-$(date +%Y%m%d-%H%M%S)"107mkdir -p "$RUN_DIR"108109interactsh-client \110 -json \111 -o "$RUN_DIR/interactions.jsonl" \112 -sf "$RUN_DIR/session.txt" \113 -ps \114 -psf "$RUN_DIR/payloads.txt" \115 -pi 5 \116 >"$RUN_DIR/stdout.log" 2>&1 &117118echo $! > "$RUN_DIR/interactsh.pid"119sleep 2120cat "$RUN_DIR/payloads.txt"121```122123Listener handling rules:124- Start one background listener per assessment run unless isolation requires a separate session.125- Persist `interactions.jsonl`, session state, generated payload domains, and stdout logs.126- Keep the listener active for the full validation window.127128## Per-Test Token Generation129130Generate one unique token for each test case:131```bash132TEST_TOKEN="$(tr -dc 'a-z0-9' </dev/urandom | head -c 10)"133BASE_DOMAIN="$(head -n1 "$RUN_DIR/payloads.txt" | tr -d '\r\n')"134CALLBACK_FQDN="${TEST_TOKEN}.${BASE_DOMAIN}"135136echo "$TEST_TOKEN $CALLBACK_FQDN $(date -Iseconds)" >> "$RUN_DIR/test_tokens.log"137138printf '%s\n' "$CALLBACK_FQDN"139```140141Rules:142- Never reuse a token across unrelated tests.143- Record token, payload target, source vector, and timestamp.144- Use path-based correlation in addition to subdomain-based correlation when useful.145146## Protocol Selection147148Choose the protocol that matches the hypothesis:149- DNS: egress proof, resolver behavior, low-friction SSRF or XXE validation150- HTTP: webhook delivery, SSRF, application-layer callback verification151- HTTPS: when the target is likely to enforce TLS-only egress152153Prefer the smallest useful set. Do not spray all protocols unless the test requires it.154155## Reverse-Shell-Adjacent Egress Checks156157Use this skill for reverse-shell-adjacent validation only when the objective is to determine whether the target can reach an external endpoint over common egress channels such as `80` or `443`.158159Rules:160- Use this skill for outbound reachability and protocol behavior validation, not shell handling.161- If shell-capable execution is later confirmed, hand off to the exploit execution workflow.162163## Evidence to Capture164165For each test case, record:166- hypothesis167- payload vector168- generated token169- callback endpoint170- request timestamp171- control payloads172- observed callback timestamp173- protocol observed174- source context175- verdict176177## Output Schema178179Return:180- Correlation table with `token`, `payload path or subdomain`, `timestamp`, `source context`181- Validation verdict: `confirmed`, `not confirmed`, or `inconclusive`182- Follow-on opportunities based only on confirmed outbound behavior183- Reproduction steps with enough detail for another operator to rerun the test184185## Tooling Notes186187- If `interactsh-client` or an equivalent listener is missing, state that clearly, recommend the missing tool for the next run, and stop short of confirming OOB claims.188- Do not replace deterministic correlation with assumption.189- Preserve logs so callback-based claims remain auditable.