subjack

Outil de détection de prise de contrôle de sous-domaine. Scanne une liste de sous-domaines pour identifier ceux pointant vers des services tiers désactivés (GitHub Pages, Heroku, AWS S3, etc.) pouvant être réclamés. Subdomain takeover detection tool. Scans a list of subdomains to identify ones pointing to defunct third-party services (GitHub Pages, Heroku, AWS S3, etc.) that can be claimed.

↗ https://github.com/haccer/subjack

Overview

subjack identifies subdomains vulnerable to takeover — subdomains whose DNS records point to third-party services that have been removed or unclaimed. An attacker who registers the account/resource can control content on that subdomain, enabling phishing, cookie theft, and CSP bypass.

Installation

go install github.com/haccer/subjack@latest

→ or download binary from releases

Basic Usage

Check subdomains for takeover

subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl

Quick check (no SSL verification)

subjack -w subdomains.txt -t 100 -o results.txt

With verbose output

subjack -w subdomains.txt -t 50 -o results.txt -v

Fingerprints File

# subjack uses fingerprints.json to identify services
# Default location: /usr/share/subjack/fingerprints.json

Specify custom fingerprints

subjack -w subdomains.txt -c /path/to/fingerprints.json -t 100

View fingerprints (shows which services are checked)

cat /usr/share/subjack/fingerprints.json | python3 -m json.tool | head -50

Services Checked

# Services subjack checks for takeover:
# GitHub Pages     — "There isn't a GitHub Pages site here"
# AWS S3           — "NoSuchBucket"
# Heroku           — "No such app"
# Shopify          — "Sorry, this shop is currently unavailable"
# Fastly           — "Fastly error: unknown domain"
# Azure (various)  — multiple patterns
# Tumblr           — "Whatever you were looking for doesn't live here"
# WordPress.com    — "Do you want to register..."
# Zendesk          — "Help Center Closed"
# Many more...

Generating Subdomain Lists

# Use subfinder/amass to get subdomains first
subfinder -d target.com -o subdomains.txt
amass enum -passive -d target.com >> subdomains.txt
sort -u subdomains.txt > unique_subdomains.txt

Then check for takeover

subjack -w unique_subdomains.txt -t 100 -o takeover_results.txt -ssl

Output Interpretation

# Results in output file:
# [VULNERABLE] dev.target.com — GitHub Pages
# [VULNERABLE] cdn.target.com — AWS S3 (NoSuchBucket)
# [Not Vulnerable] www.target.com

Verify manually:

curl -v http://dev.target.com

→ Look for the service-specific error message

Exploiting a Takeover

# Example: GitHub Pages takeover
# 1. dev.target.com CNAME → targetdev.github.io (unclaimed)
# 2. Register GitHub account "targetdev"
# 3. Create repository and enable GitHub Pages
# 4. dev.target.com now serves your content

# Impact: XSS, phishing, cookie theft (if sharing parent domain)

Tips

  • Run on all subdomains from passive recon — large orgs have many forgotten subdomains
  • HTTPS matters — always use -ssl to also check HTTPS responses
  • Takeovers on authentication subdomains (sso.target.com, login.target.com) are critical
  • Some CDN CNAMEs show takeover fingerprints intermittently — verify multiple times
  • Document all findings with screenshots before reporting
Help / Man page
subjack [options]

-w FILE      Subdomain list file
-t N         Threads (default: 10)
-timeout N   Timeout in seconds
-o FILE      Output file
-ssl         Also check HTTPS
-c FILE      Fingerprints file
-v           Verbose
-m           Only show vulnerable

Vue d’ensemble

subjack identifie les sous-domaines vulnérables à la prise de contrôle : des sous-domaines dont les enregistrements DNS pointent vers des services tiers qui ont été supprimés ou libérés. Un attaquant qui enregistre le compte/la ressource peut contrôler le contenu de ce sous-domaine, permettant du phishing, du vol de cookies, et du contournement de CSP.

Installation

go install github.com/haccer/subjack@latest

→ ou télécharger le binaire depuis les releases

Utilisation de base

# Vérifier des sous-domaines pour une prise de contrôle
subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl

# Vérification rapide (sans vérification SSL)
subjack -w subdomains.txt -t 100 -o results.txt

# Avec sortie verbeuse
subjack -w subdomains.txt -t 50 -o results.txt -v

Fichier d’empreintes

# subjack utilise fingerprints.json pour identifier les services
# Emplacement par défaut : /usr/share/subjack/fingerprints.json
# Spécifier des empreintes personnalisées
subjack -w subdomains.txt -c /path/to/fingerprints.json -t 100

# Visualiser les empreintes (montre quels services sont vérifiés)
cat /usr/share/subjack/fingerprints.json | python3 -m json.tool | head -50

Services vérifiés

# Services que subjack vérifie pour une prise de contrôle :
# GitHub Pages     : "There isn't a GitHub Pages site here"
# AWS S3           : "NoSuchBucket"
# Heroku           : "No such app"
# Shopify          : "Sorry, this shop is currently unavailable"
# Fastly           : "Fastly error: unknown domain"
# Azure (various)  : multiple patterns
# Tumblr           : "Whatever you were looking for doesn't live here"
# WordPress.com    : "Do you want to register..."
# Zendesk          : "Help Center Closed"
# Et bien d'autres...

Génération de listes de sous-domaines

# Utiliser subfinder/amass pour obtenir des sous-domaines d'abord
subfinder -d target.com -o subdomains.txt
amass enum -passive -d target.com >> subdomains.txt
sort -u subdomains.txt > unique_subdomains.txt

Puis vérifier la prise de contrôle

subjack -w unique_subdomains.txt -t 100 -o takeover_results.txt -ssl

Interprétation des résultats

# Résultats dans le fichier de sortie :
# [VULNERABLE] dev.target.com : GitHub Pages
# [VULNERABLE] cdn.target.com : AWS S3 (NoSuchBucket)
# [Not Vulnerable] www.target.com

Vérifier manuellement :

curl -v http://dev.target.com

→ Chercher le message d’erreur spécifique au service

Exploiter une prise de contrôle

# Exemple : prise de contrôle GitHub Pages
# 1. dev.target.com CNAME → targetdev.github.io (non réclamé)
# 2. Enregistrer le compte GitHub "targetdev"
# 3. Créer un dépôt et activer GitHub Pages
# 4. dev.target.com sert maintenant notre contenu

# Impact : XSS, phishing, vol de cookies (si le domaine parent est partagé)

Conseils

  • Lancer sur tous les sous-domaines issus de la reconnaissance passive : les grandes organisations ont beaucoup de sous-domaines oubliés
  • HTTPS compte : toujours utiliser -ssl pour aussi vérifier les réponses HTTPS
  • Les prises de contrôle sur des sous-domaines d’authentification (sso.target.com, login.target.com) sont critiques
  • Certains CNAME de CDN affichent des empreintes de prise de contrôle par intermittence : vérifier plusieurs fois
  • Documenter tous les résultats avec des captures d’écran avant le reporting
Aide / Page de manuel
subjack [options]

-w FILE      Subdomain list file
-t N         Threads (default: 10)
-timeout N   Timeout in seconds
-o FILE      Output file
-ssl         Also check HTTPS
-c FILE      Fingerprints file
-v           Verbose
-m           Only show vulnerable