subdomain-takeover-check · git:20260529.0ab6ab0 · 2026-05-29 · sha256 9b89a3b880d7f9f4

subdomain-takeover-check git:20260529.0ab6ab0A

Immutable. This exact content is served forever at /api/v1/blob/9b89a3b880d7f9f4.

---
name: subdomain-takeover-check
description: Ground-truth subdomain takeover candidates by checking CNAME resolution, verifying service availability, and validating fingerprint matches against can-i-take-over-xyz before reporting. Use when an agent or scanner flags a potential subdomain takeover, dangling CNAME, or unclaimed cloud resource.
---

# Subdomain Takeover Ground-Truth Check

Validates subdomain takeover candidates against the canonical [can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz) service registry.

## Procedure

1. **Resolve DNS** — identify the target service:
   ```bash
   dig CNAME <subdomain> +short
   ```
   If no CNAME is returned, check for A/AAAA records with `dig A <subdomain> +short`. No DNS resolution at all suggests the record was already cleaned up — flag as INVESTIGATE but note DNS is clean.

2. **Fetch the registry** — pull the raw README and find the service row:
   ```bash
   curl -s https://raw.githubusercontent.com/EdOverflow/can-i-take-over-xyz/master/README.md | rg -i "<service_name>"
   ```
   If the registry fetch fails (network error, 404), note it and proceed with manual assessment.

3. **Check status** — is the service listed as `Vulnerable`, `Not Vulnerable`, or `Edge Case`?

4. **Match fingerprint** — fetch the subdomain and check for the documented fingerprint:
   ```bash
   curl -skL "https://<subdomain>" -o /tmp/takeover_body.txt 2>/dev/null
   rg -c "NoSuchBucket\|There isn't a GitHub Pages site here\|This page is reserved" /tmp/takeover_body.txt
   ```

5. **Credence check** — run `credence assess_confidence` with: service name, registry status, fingerprint match result, and raw evidence

## Output

Always log the result in the target's gadget-ledger and flag to the user. Format:

```
## Subdomain Takeover: <subdomain>
- CNAME: <target>
- Service: <service name>
- Registry status: Vulnerable | Not Vulnerable | Edge Case | Not Listed
- Fingerprint match: Yes | No | N/A
- Credence: <confidence level>
- Verdict: LIKELY VALID | INVESTIGATE | LIKELY FP
```

## Philosophy

**Prefer alerts over missed true positives.** This check adds confidence, not a gate. If the service is Not Listed or the fingerprint is ambiguous, flag it as INVESTIGATE — never silently drop.