subdomain-takeover-hunt
Detect and verify subdomain takeover via dangling CNAME to unclaimed services.
Install / Use
npx skills add uphiago/recon-skills --skill subdomain-takeover-huntInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of subdomain-takeover-hunt
subdomain-takeover-hunt scores 86/100 on our quality scale, 1744th of 4,259 Development & Engineering skills we index (top 41%).
Its SKILL.md is 5.7 KB long, well organised into 30 sections with 5 code examples: a solid amount of guidance for an agent.
With 1,280 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 29 days ago, so subdomain-takeover-hunt is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
subdomain-takeover-hunt compared with similar skills
All 4 of these similar skills score higher than subdomain-takeover-hunt; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| subdomain-takeover-hunt (this skill)by uphiago | 86 | 1.3k | 29d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 86.6k | 15d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.2k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 44.6k | 1d ago | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.7k | today | CLAUDE.md |
Frequently asked questions
- How do I install subdomain-takeover-hunt?
- Run
npx skills add uphiago/recon-skills --skill subdomain-takeover-hunt. The install tabs above show the steps for each supported agent. - Which AI agents does subdomain-takeover-hunt work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is subdomain-takeover-hunt safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is subdomain-takeover-hunt still maintained?
- The repository was last updated 29 days ago, so subdomain-takeover-hunt is actively maintained.
Skill content
View source on GitHubname: subdomain-takeover-hunt description: Detect and verify subdomain takeover via dangling CNAME to unclaimed services. version: 1.1.0 revision_date: 2026-07-25 license: MIT platforms: [linux] compatibility: Requires curl, python3, subfinder, dnsx tags: [recon, subdomain, takeover, CNAME, DNS, cloud, Heroku, S3, Azure] category: recon related_skills:
- subdomain-enumeration
- origin-ip-discovery
- port-service-discovery
Subdomain Takeover Detection
Detect subdomains pointing to unregistered or unclaimed third-party cloud services. When a CNAME record points to a service that no longer exists, an attacker can register that resource and serve arbitrary content under the target's subdomain — enabling phishing, cookie theft, and full origin impersonation.
When to Use
- Subdomain enumeration produces a large list — scan for lingering DNS records.
- Target uses cloud services with shared-namespace identifiers (Heroku, S3, Azure, Zendesk, Shopify).
- A subdomain returns NXDOMAIN, 404, or "no such app" error pages.
- The CNAME target is a service with user-registrable names.
Prerequisites
terminalwith curl, dnsx, subfinder.subzyorsubjackinstalled for automated detection.- List of alive subdomains from
subdomain-enumeration.
Quick Detection
# DNS resolution with CNAME extraction
dnsx -retry 3 -a -cname -resp -silent -l alive_subs.txt | tee dns_records.txt
# Automated takeover scan
subzy run --targets alive_subs.txt --hide_fails --vuln
Procedure
Phase 1 — Extract CNAME Records
# Get all CNAME records
cat alive_subs.txt | dnsx -silent -cname -resp-only > cname_targets.txt
# Filter to suspicious services
grep -iE "heroku|s3\.amazonaws|azure|zendesk|shopify|github\.io|bitbucket|surge\.sh|netlify|vercel|ghost\.io|readme|statuspage|pantheon|desk\.com|campaignmonitor|intercom|unbounce|wordpress\.com|cargo\.collective" \
cname_targets.txt > takeover_candidates.txt
Phase 2 — Automated Detection
# subzy — fast, shows vulnerable + fingerprint
subzy run --targets alive_subs.txt --hide_fails --vuln
# subjack — with custom fingerprints
subjack -w alive_subs.txt -t 100 -timeout 30 -o takeover_results.txt \
-ssl -c ~/subjack/fingerprints.json -v
# nuclei — takeover templates
nuclei -l alive_subs.txt \
-t nuclei-templates/takeovers/ \
-o nuclei_takeover_results.txt
Phase 3 — Manual Verification
# For each candidate, verify the service is claimable
CANDIDATE="api.target.com"
# Check what the CNAME points to
dig $CANDIDATE CNAME +short
# Check HTTP response
curl --max-time 30 --connect-timeout 10 -skI "https://$CANDIDATE" | head -10
# Key service-specific verification:
# Heroku: visit https://CANDIDATE — "no such app" = claimable
# S3: curl -s https://BUCKET_NAME.s3.amazonaws.com — 404 NoSuchBucket = claimable
# Zendesk: visit https://CANDIDATE — "account not found" = claimable
# GitHub Pages: dig CNAME returns user.github.io — 404 = claimable
# Azure: visit https://CANDIDATE — "tenant not found" = claimable
# Shopify: visit https://CANDIDATE — "Sorry, this shop is currently unavailable"
Phase 4 — S3 Takeover Pipeline
subfinder -d target.com -silent \
| dnsx -silent -cname \
| grep "s3.amazonaws" \
| while read line; do
sub=$(echo "$line" | awk '{print $1}' | sed 's/\.$//')
curl --max-time 30 --connect-timeout 10 -sk "https://$sub" | grep -q "NoSuchBucket" && echo "CLAIMABLE: $sub"
done
Phase 5 — Service Fingerprint Reference
| Service | Error message or indicator | Claimable signal | |---|---|---| | Heroku | "No such app" / "There's nothing here" | Yes | | S3 | "NoSuchBucket" / "The specified bucket does not exist" | Yes | | Azure | "tenant not found" / "This tenant is not found" | Yes | | Zendesk | "account not found" / "Help Center Closed" | Yes | | GitHub Pages | 404 "There isn't a GitHub Pages site here" | Yes | | Shopify | "Sorry, this shop is currently unavailable" | Yes | | Netlify | "Not Found" / "Site not found" | Yes | | Vercel | 404 — "DEPLOYMENT_NOT_FOUND" | Yes | | Bitbucket | "Repository not found" | Yes | | Surge.sh | "project not found" | Yes | | Readme.io | "Project not found" | Yes | | Statuspage | 404 — status page not found | Yes | | Desk.com | "This site is currently not available" | Yes | | Campaign Monitor | "Trying to get your email from" | Yes | | Intercom | "This page is reserved for Intercom customers" | Yes | | Unbounce | "The requested URL was not found" | Yes | | WordPress.com | "Do you want to register domain.wordpress.com?" | Yes |
Pitfalls
- Resolving CNAME to a CDN service is not a finding. Cloudflare/CloudFront/Akamai subdomains are not claimable.
- The CNAME may point to a valid, in-use service. Always verify the error page before claiming a finding.
- Some services block automated scanners. Visit the URL in a browser to confirm.
- Subdomain takeover requires registration of the target resource. Never register resources without explicit authorization.
- Wildcard DNS (
*.target.com→ IP) produces false positives. Filter out wildcard responses before scanning for takeover.
Verification
dig SUBDOMAIN CNAME +shortreturns a service with user-registrable namespace.curl --max-time 30 --connect-timeout 10 -sk https://SUBDOMAINreturns the service-specific error page indicating the resource is available.- The CNAME target is NOT resolving to a CDN or load balancer.
- Document the exact error message and service type before reporting.
Related Skills
subdomain-enumeration— Generate the subdomain list for takeover scanning.origin-ip-discovery— If takeover is found, check if the same IP hosts other services.port-service-discovery— Scan the CNAME-resolved IP for additional exposed services.
Related Skills
Agent-Reach
86.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
44.6kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
