
Una herramienta rápida para escanear vulnerabilidades CRLF escrita en Go
Una herramienta rápida para escanear vulnerabilidades CRLF escrita en Go
La instalación es fácil. Puedes descargar un binario precompilado desde la página de lanzamientos, descomprimirlo y ejecutarlo. O con:
▶ curl -sSfL https://git.io/crlfuzz | sh -s -- -b /usr/local/bin
Si tienes el compilador go1.13+ instalado y configurado:
▶ GO111MODULE=on go install github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest
Para actualizar la herramienta, puedes usar la bandera -u con el comando go get.
▶ git clone https://github.com/dwisiswant0/crlfuzz
▶ cd crlfuzz/cmd/crlfuzz
▶ go build .
▶ mv crlfuzz /usr/local/bin
Simplemente, CRLFuzz se puede ejecutar con:
▶ crlfuzz -u "http://target"
▶ crlfuzz -h
Esto mostrará la ayuda de la herramienta. Aquí están todos los parámetros que soporta.
Puedes definir un objetivo de 3 maneras:
▶ crlfuzz -u "http://target"
▶ crlfuzz -l /ruta/a/urls.txt
En caso de que quieras encadenarlo con otras herramientas.
▶ subfinder -d target -silent | httpx -silent | crlfuzz
Por defecto, CRLFuzz realiza solicitudes con el método GET.
Si quieres cambiarlo, puedes usar la bandera -X.
▶ crlfuzz -u "http://target" -X "GET"
También puedes guardar los resultados del fuzzing en un archivo con la bandera -o.
▶ crlfuzz -l /ruta/a/urls.txt -o /ruta/a/resultados.txt
Si deseas enviar una solicitud con datos usando POST, DELETE, PATCH u otros métodos, solo necesitas usar la bandera -d.
▶ crlfuzz -u "http://target" -X "POST" -d "data=body"
Quizás quieras usar cabeceras personalizadas para añadir cookies u otras partes de la cabecera.
▶ crlfuzz -u "http://target" -H "Cookie: ..." -H "User-Agent: ..."
Usando un proxy, la cadena del proxy se puede especificar con un prefijo protocolo:// para indicar protocolos de proxy alternativos.
▶ crlfuzz -u "http://target" -x http://127.0.0.1:8080
La concurrencia es el número de fuzzings simultáneos. El valor por defecto que proporciona CRLFuzz es 25, puedes cambiarlo usando la bandera -c.
▶ crlfuzz -l /ruta/a/urls.txt -c 50
Si activas este modo silencioso con la bandera -s, solo verás los objetivos vulnerables.
▶ crlfuzz -l /ruta/a/urls.txt -s | tee vuln-urls.txt
A diferencia del modo silencioso, mostrará los detalles de los errores si ocurre algún error con la bandera -v.
▶ crlfuzz -l /ruta/a/urls.txt -v
Para mostrar la versión actual de CRLFuzz con la bandera -V.
▶ crlfuzz -V
Puedes usar CRLFuzz como librería.
package main
import (
"fmt"
"github.com/dwisiswant0/crlfuzz/pkg/crlfuzz"
)
func main() {
target := "http://target"
method := "GET"
// Genera URLs potencialmente vulnerables a CRLF
for _, url := range crlfuzz.GenerateURL(target) {
// Escanea contra el objetivo
vuln, err := crlfuzz.Scan(url, method, "", []string{}, "")
if err != nil {
panic(err)
}
if vuln {
fmt.Printf("¡VULNERABLE! %s\n", url)
}
}
}
Si todavía estás confundido o encontraste un error, por favor abre un issue. Todos los reportes de errores son apreciados, algunas funcionalidades aún no han sido probadas debido a la falta de tiempo libre.
CRLFuzz se publica bajo MIT. Consulta LICENSE para más detalles.
La versión actual es 1.4.0 y todavía está en desarrollo.
| Banderas | Descripción |
|---|
| -u, --url | Define una URL única para fuzzear |
| -l, --list | Fuzzear URLs dentro de un archivo |
| -X, --method | Especifica el método de solicitud a usar (por defecto: GET) |
| -o, --output | Archivo para guardar resultados |
| -d, --data | Define datos de la solicitud |
| -H, --header | Pasa una cabecera personalizada al objetivo |
| -x, --proxy | Usa un proxy especificado para fuzzear |
| -c, --concurrent | Establece el nivel de concurrencia (por defecto: 25) |
| -s, --silent | Modo silencioso |
| -v, --verbose | Modo verboso |
| -V, --version | Muestra la versión actual de CRLFuzz |
| -h, --help | Muestra su ayuda |