← retour aux outils back to tools

# 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