
Rapide et précis, scanner de prise de contrôle de sous-domaines avec zéro faux positif. Détecte les sous-domaines vulnérables, collecte des métadonnées (IP, CNAME, titre, code de statut) et fournit une analyse assistée par IA pour la reconnaissance.
Subdosec
Scanner de prise de contrôle de sous-domaines et outil de reconnaissance.

Installation • Utilisation • Version Web • Contribution • Scan en ligne • Remerciements
Subdosec est un scanner de prise de contrôle de sous-domaines rapide et précis sans faux positifs, doté d'une base de données publique de sous-domaines vulnérables et de métadonnées non vulnérables détaillées (IP, CNAME, titre et code d'état) pour la reconnaissance.
Installer ou mettre à jour subdosec
pipx install git+https://github.com/xcapri/subdosec.git
pipx upgrade subdosec
Exécutez ensuite cette commande à chaque début de session de terminal (jusqu'à ce que « server started successfully » apparaisse).
$ subdosec -ins
Starting Node.js server...
Node.js server started successfully.
[AVERTISSEMENT] Ne prenez pas le contrôle de tous les sous-domaines dans test.txt, laissez tout le monde l'utiliser pour des démos.
[INFO] Consultez également la section Release. Vous pouvez y trouver des informations intéressantes.
$ subdosec -h
_____ __ __
/ ___/__ __/ /_ ____/ /___ ________ _____
\__ \/ / / / __ \/ __ / __ \/ ___/ _ \/ ___/
___/ / /_/ / /_/ / /_/ / /_/ (__ ) __/ /__
/____/\__,_/_.___/\__,_/\____/____/\___/\___/
usage: subdosec [-h] [-mode {private,public}] [-initkey INITKEY] [-vo] [-pe] [-ins] [-pf PF] [-subfng SUBFNG] [-lf LF] [-sfid] [-ks] [-o O] [-su] [-lu LU] [-lm] [-uf] [-unai UNAI] [-v] [-t THREADS]
Subdomain takeover scanner.
options:
-h, --help show this help message and exit
-mode {private,public}
Mode of operation (private/public)
-initkey INITKEY Initialize the API key
-vo VULN Only: Hide UNDETECT messages
-pe Print Error: When there are problems detecting your target
-ins Prepar node & start server
-pf PF Private Fingerprint: uses your local fingerprint. Example: -pf /path/to/tko.json
-subfng SUBFNG Submit fingerprint: submit local fingerprint to admin. Example: -subfng localfinger.json
-lf LF Fingerprint lock: to focus on one or multiple fingerprints. (-lf github.io,surge.sh) and leave this arg to scan all fingerprints
-sfid To view all available fingerprint ids.
-ks To shut down the server node if you want to not use subdosec for a long time.
-o O Save result locally to the specified path. Example: -o /path/to/dir
-su Skip undetect will not stored to server (https://subdosec.vulnshot.com/result/undetected)
-lu LU Undetec stored localy to the specified path. Example: -lu /path/to/dir
-lm Local Mode: Save vuln and undetect to default inside tools directory (auto -su)
-uf Update Fingerprint
-unai UNAI Analyze undetected subdomains using AI. Example: -unai /path/to/undetect.json
-v, --verbose Show progress count (e.g. [1/10])
-t THREADS, --threads THREADS
Number of threads to use for scanning (default: 10)
Préparer la liste
Prise en charge sans protocole
cat list
https://careers.rotacloud.com
http://creators.thinkorion.com
https://docs.polygon-nightfall.technology
a.anchorsawaytpt.com
help.oceges.com
CMD 1
Ignorer le stockage des non détectés sur le serveur et sauvegarder localement
cat test.txt | subdosec -lm
https://subdosec.vulnshot.com [UNDETECT]
http://feedback.bazoom.com [sleekplan.com] [VULN] [SAVED]
http://demodev.destinojet.co [meteor.com] [VULN] [SAVED]
http://creators.thinkorion.com [UNDETECT]
https://www.www.savillerow.status.lnt.cl [ohdear.app] [VULN] [SAVED]
https://careers.rotacloud.com [gohire.io] [VULN] [SAVED]
https://careers.rotacloud.com [gohire.io] [VULN] [SAVED]
https://ai.yooture.com [UNDETECT]
https://help.oceges.com [UNDETECT]
http://ftp.thiagolima.com [surge.sh] [VULN] [SAVED]
VULN DIRECTORY : /home/alice/.subdosec/vulns
UNDETECT FILE : /home/alice/.subdosec/undetect/undetect.json
Lire la sortie
~$ ls /home/alice/.subdosec/vulns
gohire.io_tko.txt meteor.com_tko.txt ohdear.app_tko.txt sleekplan.com_tko.txt surge.sh_tko.txt
~$ cat /home/alice/.subdosec/vulns/gohire.io_tko.txt
careers.rotacloud.com
Lire les non détectés et analyser automatiquement les nouvelles vulnérabilités potentielles avec -unai
cat /home/alice/.subdosec/undetect/undetect.json
[
{
"title": "No title found",
"status_code": 404,
"redirect_url": "No redirects",
"cname_records": [
"cname.redacted.com"
],
"a_records": [
"76.76.21.98",
"76.76.21.241"
],
"subdomain": "try.redacted.com",
"rootdomain": "redacted.com"
},
{
"title": "No title found",
"status_code": 200,
"redirect_url": "No redirects",
"cname_records": [
"cname.fermat.shop"
],
"a_records": [
"216.150.16.129",
"216.150.1.129"
],
"subdomain": "get.redacted.com",
"rootdomain": "redacted.com"
}
]
subdosec -unai /home/pd/.subdosec/undetect/undetect.json
[INFO] PURE UNDETECTED 0 | Subdomains are not detected as vulnerable even though they have passed the subdosec scan..
[INFO] Analyzing 8 items in 2 batches.
[INFO] Progress: 5/8 data analyzed.
NEW POTENTIAL :
Domain : try.redacted.com
CNAME : cname.redacted-service.com
A Record : 76.76.21.98, 76.76.21.241
Takeover : NOT
Reason : The redacted-service custom domain setup guide explicitly states the requirement of adding a TXT record (e.g., 'redacted-service-verification=<your_site_id>') for domain ownership verification. The presence of a TXT record verification step makes it not vulnerable.
Reference: https://www.redacted-service.com/blog/how-to-setup-custom-domain/
================================================================================
Domain : get.redacted.com
CNAME : cname.fermat.shop
A Record : 216.150.16.129, 216.150.1.129
Takeover : POSSIBLE
Reason : The service uses a static CNAME (cname.fermat.shop) for custom domain setup. Publicly available documentation for Fermat's custom domain setup does not clearly specify a requirement for a TXT record or any dynamic verification method for domain ownership. Without such verification, a static CNAME makes the subdomain potentially vulnerable if the corresponding Fermat account is deleted or becomes unlinked.
Reference: https://fermat.shop/
================================================================================
CMD 2
Utiliser un domaine racine et un outil de recherche de sous-domaines en pipeline (comme subfinder, assetfinder, amass, etc.)
cat list
example.com
cat list | subfinder -silent | subdosec -lm
https://subdosec.vulnshot.com [UNDETECT]
http://feedback.bazoom.com [sleekplan.com] [VULN] [SAVED]
http://demodev.destinojet.co [meteor.com] [VULN] [SAVED]
http://creators.thinkorion.com [UNDETECT]
https://www.www.savillerow.status.lnt.cl [ohdear.app] [VULN] [SAVED]
https://careers.rotacloud.com [gohire.io] [VULN] [SAVED]
https://careers.rotacloud.com [gohire.io] [VULN] [SAVED]
https://ai.yooture.com [UNDETECT]
https://help.oceges.com [UNDETECT]
http://ftp.thiagolima.com [surge.sh] [VULN] [SAVED]
VULN DIRECTORY : /home/alice/.subdosec/vulns
UNDETECT FILE : /home/alice/.subdosec/undetect/undetect.json
CMD 3
(Transférer le résultat vers notify)
cat list | subdosec -lm -vo | notify -silent
https://careers.rotacloud.com [100.00%] [gohire.io] [VULN] [SAVED]
CMD 4
Utiliser une empreinte privée, ce drapeau fusionnera automatiquement les empreintes publiques + privées
cat priv8.json
{
"fingerprints": [
{
"fid": 0,
"name": "Subdomain takeover - Pagedeck",
"rules": {
"cname": "cname.pagedeck.com",
"status_code": "404",
"in_body":"This page could not be found."
},
"status_fingerprint": 0,
"reference": "https://docs.pagedeck.com/getting-started/connecting-a-subdomain",
"service": "pagedeck.com",
"logo_service": "https://i.ytimg.com/vi/DY76Tjf1m-8/maxresdefault.jpg"
},
add more
]}
echo try.hugsleep.com | subdosec -pf privfinger.json -o testpriv -lu okgaslu
_____ __ __
/ ___/__ __/ /_ ____/ /___ ________ _____
\__ \/ / / / __ \/ __ / __ \/ ___/ _ \/ ___/
___/ / /_/ / /_/ / /_/ / /_/ (__ ) __/ /__
/____/\__,_/_.___/\__,_/\____/____/\___/\___/
https://try.hugsleep.com [pagedeck.com] [VULN] [SAVED]
VULN DIRECTORY : /home/pd/tko/testpriv
UNDETECT FILE : /home/pd/tko/okgaslu/undetect.json
Connaissant la fonction du web de subdosec, vous pouvez utiliser ici la fonctionnalité https://subdosec.vulnshot.com/result/undetected comme outil de reconnaissance, pour trouver IP, CNAME, TITLE, STATUS CODE, etc., comme information supplémentaire ou même pour découvrir de nouveaux sous-domaines à prendre le contrôle.
Elle a la même fonction que undetect.json, la différence est que vous et d'autres personnes la partagez entre vous.
Par exemple, vous recherchez un site qui n'est pas détecté comme vulnérable par subdosec avec le mot-clé 404, et il y a des informations sur cname.gohire.io et le titre GoHire, ce qui, si vous cherchez sur Google, il n'y a aucune information d'article sur la prise de contrôle de sous-domaine sur le service gohire.

Après avoir trouvé une nouvelle prise de contrôle de sous-domaine, que ce soit manuellement ou automatiquement (en utilisant -unai), vous pouvez nous soumettre les données en utilisant la commande subdosec -subfng.
Vous pouvez utiliser dynamiquement cet élément pour les règles :
title, cname, status_code, in_body, a_record, redirect
cat newvuln.json
{
"name": "Subdomain takeover - GoHire",
"rules": {
"cname": "custom.gohire.io",
"in_body": "Page not found",
"status_code": "404"
},
"status_fingerprint": 0,
"reference": "https://help.gohire.io/en/articles/3385288-setting-up-a-custom-domain",
"service": "gohire.io",
"logo_service": "https://gohire-website.s3.amazonaws.com/img/logos/gh-logo-main.gif"
}
subdosec -subfng newvuln.json
[Info] Submitting fingerprint ...
Imported fingerprint data successfully
Si vous n'êtes pas une personne ayant une formation en sécurité, peut-être un développeur web/programmeur et pas familier avec les outils en ligne de commande, vous pouvez utiliser la version web pour analyser tous vos sous-domaines avec un maximum de 10 sous-domaines par scan.

Les outils précurseurs qui ont inspiré la création des outils subdosec.
subdosec est distribué sous Licence MIT