
Découverte rapide de paramètres HTTP pour les tests de sécurité autorisés

Découverte rapide de paramètres HTTP pour le bug bounty et les tests d'intrusion autorisés. ParamTrace envoie les entrées d'une wordlist en tant que paramètres et signale celles qui modifient la réponse par rapport à une référence de base.
Avis juridique : n'utilisez ParamTrace que sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test (par exemple, des cibles de bug bounty dans le périmètre). Vous êtes responsable de l'usage que vous en faites.
Des outils de découverte de paramètres existent déjà (Arjun, x8, Param Miner pour Burp). ParamTrace est une alternative petite et ciblée :
--tolerance gère les pages qui changent à chaque requête.Quand utiliser autre chose : si vous travaillez déjà dans Burp, Param Miner est plus adapté. Pour regrouper de nombreux paramètres par requête, des outils matures comme Arjun ou x8 sont aujourd'hui plus rapides. Le regroupement est au programme de ParamTrace.
Des binaires précompilés (Linux x86_64 et aarch64, macOS Apple Silicon, Windows) sont disponibles sur la page Releases, chacun accompagné d'un fichier de somme de contrôle .sha256. Par exemple, sous Linux (utilisez le fichier aarch64 pour Kali NetHunter sur un téléphone) :
tar -xzf paramtrace-*-linux-x86_64.tar.gz
sudo cp paramtrace-*-linux-x86_64/paramtrace /usr/local/bin/
Termux utilise la bibliothèque C d'Android, donc les binaires Linux ne fonctionneront pas dessus. Installez plutôt depuis les sources : cargo install --git https://github.com/CurioTrace/paramtrace
État des tests : le binaire Linux aarch64 (Kali NetHunter) et la compilation depuis les sources sous Termux ont été testés par l'auteur. Les binaires Linux x86_64, macOS et Windows sont compilés automatiquement à chaque version mais n'ont pas encore été exécutés par l'auteur, donc veuillez ouvrir un ticket si l'un d'eux ne fonctionne pas. Les binaires ne sont pas signés, donc Windows ou macOS peut afficher un avertissement au premier lancement ; vous pouvez vérifier un téléchargement avec son fichier .sha256.
Ou compilez depuis les sources :
git clone https://github.com/CurioTrace/paramtrace
cd paramtrace
cargo build --release
# binary: target/release/paramtrace
# optional: install it so you can just type `paramtrace`
cargo install --path .
Testé sur Termux (Android) et Kali NetHunter. Il devrait se compiler partout où Rust le fait (utilise rustls, pas besoin d'OpenSSL).

Les exemples ci-dessous supposent que
paramtraceest dans votre PATH (voircargo install --path .ci-dessus). Si vous avez seulement exécutécargo build --release, utilisez plutôt./target/release/paramtrace. Si la commande est introuvable après l'installation, ajoutez le dossier bin de Cargo à votre PATH :export PATH="$HOME/.cargo/bin:$PATH"
paramtrace -u https://example.com/search -w wordlists/common.txt
paramtrace -u https://example.com/api -w words.txt -m post -t 20
paramtrace -u https://example.com/ -w words.txt -H "Cookie: session=abc" --proxy http://127.0.0.1:8080
paramtrace -u https://example.com/ -w words.txt -o out.json -f json
| Option | Description |
|---|---|
-u, --url | URL cible |
-w, --wordlist | Liste de mots des paramètres |
-m, --method | get (par défaut) ou post |
-t, --threads | Requêtes simultanées (10 par défaut) |
-H, --header | En-tête supplémentaire, répétable |
--timeout | Délai d'expiration des requêtes en secondes (10 par défaut) |
--delay | Délai par requête en ms |
--tolerance | Ignore les différences de taille jusqu'à N octets (utile sur les pages dynamiques) |
--value | Valeur envoyée pour chaque paramètre (les valeurs de moins de 4 caractères désactivent la vérification de réflexion) |
--proxy | URL du proxy (Caido, Burp) |
-k, --insecure | Ignore la vérification TLS |
-q, --quiet | Masque la bannière de démarrage |
-o, --output / -f, --format | Enregistre les résultats au format text ou json |
Testé sur ma propre instance d'un laboratoire de la PortSwigger Web Security Academy : avec une liste de mots de 6 454 entrées (6 453 noms erronés plus le véritable paramètre productId), ParamTrace n'a signalé que productId, sans faux positifs, en environ 3 minutes avec 10 threads. Le serveur répondait 400 avec et sans le paramètre, donc une vérification basée uniquement sur le code de statut l'aurait manqué. ParamTrace l'a détecté en comparant les tailles des réponses.
La vitesse dépend fortement du réseau, et les noms de paramètres sont sensibles à la casse, donc la liste de mots doit contenir le nom exact attendu par le serveur.
--tolerance 0 pour comparer exactement.Une petite liste de départ se trouve dans wordlists/common.txt. Pour des listes plus grandes, voir
SecLists.
Pour de vraies cibles, téléchargez une liste plus grande (environ 6 000 noms) et scannez doucement :
curl -L -o wordlists/burp-params.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/burp-parameter-names.txt
paramtrace -u https://example.com/page -w wordlists/burp-params.txt -t 5 --delay 100
Les noms de paramètres sont sensibles à la casse. Un serveur qui attend productId ne réagira pas à productid, donc ParamTrace ne peut trouver que les noms présents dans votre liste de mots avec l'orthographe exacte utilisée par la cible. Beaucoup de listes sont entièrement en minuscules, alors vérifiez la vôtre d'abord, par exemple : grep -c -x productId yourlist.txt.