arjun
Outil de découverte de paramètres HTTP. Trouve les paramètres GET et POST cachés en comparant les réponses du serveur avec et sans paramètres. Fonctionne sur les APIs et les applications web. HTTP parameter discovery tool. Finds hidden GET and POST parameters by comparing server responses with and without parameters — works on APIs and web apps.
↗ https://github.com/s0md3v/ArjunOverview
arjun discovers HTTP parameters that a web server accepts but doesn’t advertise. It sends requests with many parameters at once and uses response differences (length, status code, content) to identify which ones are handled. Invaluable for finding hidden API parameters and forgotten endpoints.
Basic Usage
Find GET parameters
arjun -u https://example.com/api/endpoint
Find POST parameters
arjun -u https://example.com/api/endpoint -m POST
Find JSON body parameters
arjun -u https://example.com/api/endpoint -m JSON
Find XML body parameters
arjun -u https://example.com/api/endpoint -m XML
With custom headers (e.g., auth)
arjun -u https://example.com/api/endpoint -H "Authorization: Bearer TOKEN"
Wordlist and Threading
Custom wordlist
arjun -u https://example.com/ -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt
Number of parameters to test per request (higher = faster but more detectable)
arjun -u https://example.com/ --chunk-size 500
Threads
arjun -u https://example.com/ -t 10
Delay between requests (seconds)
arjun -u https://example.com/ --delay 1
Bulk Scanning
Scan multiple URLs from file
arjun -i urls.txt -m GET
Output to JSON file
arjun -u https://example.com/ -oJ results.json
Output in Burp format
arjun -u https://example.com/ --stable
Useful Combinations
Find params then test for SQLi
arjun -u https://target.com/api/v1/search -m GET -oJ params.json
→ Then fuzz identified params with sqlmap
Authenticated parameter discovery
arjun -u https://target.com/api/users \
-H "Cookie: session=abc123" \
-H "Authorization: Bearer eyJ..." \
-m GET
Test for hidden debug parameters
arjun -u https://target.com/admin -m GET \
-w /usr/share/seclists/Discovery/Web-Content/api/api-endpoints.txt
Tips
- Arjun is particularly effective on REST APIs that don’t return errors for unknown parameters
- Use
--chunk-size 250for more accurate detection on sensitive servers - Check for parameters like
debug=1,admin=true,verbose=1that change app behavior - Combine with nuclei parameter fuzzing templates after discovery
Help / Man page
arjun [options]
-u URL Target URL
-i FILE File with list of URLs
-m METHOD HTTP method: GET, POST, JSON, XML (default: GET)
-w FILE Custom wordlist
-H HEADER Add header (repeatable)
-d DATA POST data
-t N Threads (default: 5)
--chunk-size N Parameters per request (default: 250)
--delay N Delay between requests (seconds)
-oJ FILE JSON output file
--stable Avoid false positives (slower)
--passive Use passive sources only
Vue d’ensemble
arjun découvre les paramètres HTTP qu’un serveur web accepte mais n’annonce pas. Il envoie des requêtes avec de nombreux paramètres à la fois et utilise les différences de réponse (longueur, code de statut, contenu) pour identifier ceux qui sont traités. Inestimable pour trouver des paramètres d’API cachés et des endpoints oubliés.
Utilisation de base
# Trouver les paramètres GET
arjun -u https://example.com/api/endpoint
# Trouver les paramètres POST
arjun -u https://example.com/api/endpoint -m POST
# Trouver les paramètres de corps JSON
arjun -u https://example.com/api/endpoint -m JSON
# Trouver les paramètres de corps XML
arjun -u https://example.com/api/endpoint -m XML
# Avec des en-têtes personnalisés (par exemple auth)
arjun -u https://example.com/api/endpoint -H "Authorization: Bearer TOKEN"
Wordlist et threads
# Wordlist personnalisée
arjun -u https://example.com/ -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt
# Nombre de paramètres à tester par requête (plus haut = plus rapide mais plus détectable)
arjun -u https://example.com/ --chunk-size 500
# Threads
arjun -u https://example.com/ -t 10
# Délai entre les requêtes (secondes)
arjun -u https://example.com/ --delay 1
Scan en masse
# Scanner plusieurs URLs depuis un fichier
arjun -i urls.txt -m GET
# Sortie vers un fichier JSON
arjun -u https://example.com/ -oJ results.json
# Sortie au format Burp
arjun -u https://example.com/ --stable
Combinaisons utiles
# Trouver les paramètres puis tester la SQLi
arjun -u https://target.com/api/v1/search -m GET -oJ params.json
# → Puis fuzzer les paramètres identifiés avec sqlmap
# Découverte de paramètres authentifiée
arjun -u https://target.com/api/users \
-H "Cookie: session=abc123" \
-H "Authorization: Bearer eyJ..." \
-m GET
# Tester la présence de paramètres de debug cachés
arjun -u https://target.com/admin -m GET \
-w /usr/share/seclists/Discovery/Web-Content/api/api-endpoints.txt
Conseils
- Arjun est particulièrement efficace sur les APIs REST qui ne renvoient pas d’erreur pour les paramètres inconnus
- Utilisez
--chunk-size 250pour une détection plus précise sur les serveurs sensibles - Cherchez des paramètres comme
debug=1,admin=true,verbose=1qui changent le comportement de l’application - Combinez avec les templates de fuzzing de paramètres de nuclei après la découverte
Aide / Page de manuel
arjun [options]
-u URL Target URL
-i FILE File with list of URLs
-m METHOD HTTP method: GET, POST, JSON, XML (default: GET)
-w FILE Custom wordlist
-H HEADER Add header (repeatable)
-d DATA POST data
-t N Threads (default: 5)
--chunk-size N Parameters per request (default: 250)
--delay N Delay between requests (seconds)
-oJ FILE JSON output file
--stable Avoid false positives (slower)
--passive Use passive sources only