---
title: Recon pipeline
description: "Enchaîner subfinder, httpx, katana et nuclei pour transformer une racine de domaine en surface d'attaque."
category: recon
kind: tool
tags: [subdomains, httpx, katana, nuclei, automation]
level: intermediate
updated: 2026-11-09
order: 2
aliases: ["subdomain enumeration", "bug bounty recon"]
---

## Boucle de base

```bash
# 1. Énumération passive de sous-domaines
subfinder -d example.com -all -silent | anew subs.txt

# 2. Résolution + probe HTTP
httpx -l subs.txt -silent -status-code -title -tech-detect -follow-redirects \
  -o live.txt

# 3. Crawl des URLs et paramètres
katana -list live.txt -jc -kf all -d 3 -silent | anew urls.txt

# 4. Scan de vulnérabilités ciblé
nuclei -l live.txt -severity critical,high,medium -rl 40 -o nuclei.txt
```

> [!TIP]
> `anew` (de tomnomnom) n'écrit que les lignes absentes du fichier. Indispensable pour relancer un pipeline sans dupliquer les résultats.

## Découverte de sous-domaines

```bash
# Passif multi-sources
subfinder -d example.com -all -recursive -silent

# Brute force DNS avec résolveurs publics
puredns brut force.txt example.com -r resolvers.txt -w found.txt

# Certificate Transparency
curl -s "https://crt.sh/?q=%25.example.com&output=json" \
  | jq -r '.[].name_value' | sed 's/\*\.//g' | sort -u

# Zone transfer (si mal configuré)
dig axfr @ns1.example.com example.com
```

| Outil | Usage |
| --- | --- |
| `subfinder` | Sources passives, rapide, peu de bruit |
| `amass enum -passive` | Graphe plus large, plus lent |
| `puredns` | Brut force massif avec wildcard filtering |
| `dnsx` | Résolution et records en pipeline |

## Probe et fingerprint

```bash
# Statut, titre, tech, CDN, TLS
httpx -l subs.txt -silent -sc -title -td -cdn -cl -location -favicon

# Screenshots (nécessite chromium)
httpx -l live.txt -silent -ss -srd screenshots/

# Réponse brute d'un host précis
httpx -u https://dev.example.com -silent -include-response
```

## Crawl et collecte d'URLs

```bash
# Crawl headless + parsing JS
katana -u https://app.example.com -jc -d 4 -kf all -silent -o crawl.txt

# URLs historiques
gau --subs example.com | anew crawl.txt
waybackurls example.com | anew crawl.txt

# Garder les endpoints avec paramètres
grep -E '\?[^=]+=' crawl.txt | sort -u > params.txt

# Extraire les chemins uniques
sed -E 's#https?://[^/]+##; s#\?.*##' crawl.txt | sort -u
```

## Scan ciblé

```bash
# Tech-specific, sans templates destructifs
nuclei -l live.txt -tags cve,exposure,misconfig -severity critical,high -rl 30

# Fuzzing de répertoires sur les hosts vivants
ffuf -u https://app.example.com/FUZZ -w /wordlists/content.txt \
  -mc 200,204,301,302,307,401,403 -fs 0

# Vérifier les panneaux d'admin et APIs
nuclei -l live.txt -t http/exposures/ -t http/misconfiguration/
```

> [!WARNING]
> Les rate limits sont la première cause de bannissement d'IP et de bruit inutile en bug bounty. Commence à `-rl 10`, surveille les 429, puis augmente. Respecte toujours le scope du programme.
