
Un outil rapide pour scanner la vulnérabilité CRLF écrit en Go
Un outil rapide pour scanner les vulnérabilités CRLF écrit en Go
L'installation est simple. Vous pouvez télécharger un binaire précompilé depuis la page des releases, le décompresser et l'exécuter ! ou avec
▶ curl -sSfL https://git.io/crlfuzz | sh -s -- -b /usr/local/bin
Si vous avez un compilateur go1.13+ installé et configuré :
▶ GO111MODULE=on go install github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest
Pour mettre à jour l'outil, vous pouvez utiliser le drapeau -u avec la commande go get.
▶ git clone https://github.com/dwisiswant0/crlfuzz
▶ cd crlfuzz/cmd/crlfuzz
▶ go build .
▶ mv crlfuzz /usr/local/bin
Simplement, CRLFuzz peut être exécuté avec :
▶ crlfuzz -u "http://target"
▶ crlfuzz -h
Ceci affichera l'aide de l'outil. Voici tous les commutateurs qu'il supporte.
Vous pouvez définir une cible de 3 manières :
▶ crlfuzz -u "http://target"
▶ crlfuzz -l /path/to/urls.txt
Au cas où vous voudriez l'enchaîner avec d'autres outils.
▶ subfinder -d target -silent | httpx -silent | crlfuzz
Par défaut, CRLFuzz effectue des requêtes avec la méthode GET.
Si vous souhaitez la modifier, vous pouvez utiliser le drapeau -X.
▶ crlfuzz -u "http://target" -X "GET"
Vous pouvez également enregistrer les résultats du test dans un fichier avec le drapeau -o.
▶ crlfuzz -l /path/to/urls.txt -o /path/to/results.txt
Si vous souhaitez envoyer une requête avec des données en utilisant POST, DELETE, PATCH ou d'autres méthodes, il vous suffit d'utiliser le drapeau -d.
▶ crlfuzz -u "http://target" -X "POST" -d "data=body"
Vous pouvez vouloir utiliser des en-têtes personnalisés pour ajouter des cookies ou d'autres parties d'en-tête.
▶ crlfuzz -u "http://target" -H "Cookie: ..." -H "User-Agent: ..."
En utilisant un proxy, la chaîne de proxy peut être spécifiée avec un préfixe protocol:// pour spécifier des protocoles proxy alternatifs.
▶ crlfuzz -u "http://target" -x http://127.0.0.1:8080
La concurrence correspond au nombre de tests simultanés. La valeur par défaut fournie par CRLFuzz est 25, vous pouvez la modifier en utilisant le drapeau -c.
▶ crlfuzz -l /path/to/urls.txt -c 50
Si vous activez ce mode silencieux avec le drapeau -s, vous ne verrez que les cibles vulnérables.
▶ crlfuzz -l /path/to/urls.txt -s | tee vuln-urls.txt
Contrairement au mode silencieux, il affichera les détails des erreurs s'il y en a avec le drapeau -v.
▶ crlfuzz -l /path/to/urls.txt -v
Pour afficher la version actuelle de CRLFuzz avec le drapeau -V.
▶ crlfuzz -V
Vous pouvez utiliser CRLFuzz comme une bibliothèque.
package main
import (
"fmt"
"github.com/dwisiswant0/crlfuzz/pkg/crlfuzz"
)
func main() {
target := "http://target"
method := "GET"
// Generates a potentially CRLF vulnerable URLs
for _, url := range crlfuzz.GenerateURL(target) {
// Scan against target
vuln, err := crlfuzz.Scan(url, method, "", []string{}, "")
if err != nil {
panic(err)
}
if vuln {
fmt.Printf("VULN! %s\n", url)
}
}
}
Si vous êtes encore confus ou avez trouvé un bug, veuillez ouvrir un ticket. Tous les rapports de bugs sont appréciés, certaines fonctionnalités n'ont pas encore été testées par manque de temps libre.
CRLFuzz publié sous licence MIT. Voir LICENSE pour plus de détails.
La version actuelle est 1.4.0 et toujours en développement.
| Option | Description |
|---|
| -u, --url | Définir une URL unique à tester |
| -l, --list | Tester les URL dans un fichier |
| -X, --method | Spécifier la méthode de requête à utiliser (défaut: GET) |
| -o, --output | Fichier pour enregistrer les résultats |
| -d, --data | Définir les données de requête |
| -H, --header | Transmettre un en-tête personnalisé à la cible |
| -x, --proxy | Utiliser le proxy spécifié pour le test |
| -c, --concurrent | Définir le niveau de concurrence (défaut: 25) |
| -s, --silent | Mode silencieux |
| -v, --verbose | Mode bavard |
| -V, --version | Afficher la version actuelle de CRLFuzz |
| -h, --help | Afficher son aide |