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/Arjun

Overview

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 250 for more accurate detection on sensitive servers
  • Check for parameters like debug=1, admin=true, verbose=1 that 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 250 pour une détection plus précise sur les serveurs sensibles
  • Cherchez des paramètres comme debug=1, admin=true, verbose=1 qui 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