Como hacer un DIRB simple con bash scripting (DIRBASH)
Hola a todos, el anterior post se hablo sobre una herramienta interesante que permite descubrir contenido web “oculto”, en esta ocación se va explicar con información técnica de como realizar un dirb utilizando bash scripting
Requerimientos
- Linux
- Bash
- Curl
- Diccionario
Como instalar curl
Este comando permite enviar o recibir información de un servidor
sudo apt update
sudo apt install curl -y
Código HTTP 200
Una explicación simple del significado del código 200 de HTTP es: La solicitud tuvo éxito.
DirBash
A continuación se mostrara un simple script que se escribió para realizar el mismo mecanismo de dirb
#!/bin/bash
TARGET=$1
WORDLIST=$2
if [ -z "$TARGET" ]; then
echo "La variable TARGET está vacía."
exit 1
fi
if [ ! -f "$WORDLIST" ]; then
echo "El archivo $WORDLIST no existe."
exit 1
fi
while IFS= read -r WORD
do
STATUS_CODE=$(curl -o /dev/null -L -s -w "%{http_code}\n" "${TARGET}/${WORD}")
if [ "$STATUS_CODE" -eq 200 ];then
echo "(CODE: 200) ${TARGET}/${WORD}"
fi
done < "$WORDLIST"
Explicación
Shebang
Indica que el script debe ser ejecutado con el intérprete de Bash.
#!/bin/bash
Asignación de Variables
TARGET=$1
: Asigna el primer argumento de la línea de comandos a la variableTARGET
.WORDLIST=$2
: Asigna el segundo argumento de la línea de comandos a la variableWORDLIST
.
Verificación de la Variables
if [ -z "$TARGET" ]; then
: Verifica si la variable TARGET
está vacía.
echo "La variable TARGET está vacía."
: Imprime un mensaje siTARGET
está vacía.exit 1
: Termina el script con un código de salida 1 siTARGET
está vacía.
if [ ! -f "$WORDLIST" ]; then
: Verifica si el archivo WORDLIST
no existe.
echo "El archivo $WORDLIST no existe."
: Imprime un mensaje si el archivoWORDLIST
no existe.exit 1
: Termina el script con un código de salida 1 si el archivoWORDLIST
no existe.
Lectura del Archivo WORDLIST
while IFS= read -r WORD
: Lee el archivo WORDLIST
línea por línea, asignando cada línea a la variable WORD
.
IFS=
: Establece el Internal Field Separator (IFS) a una cadena vacía para preservar los espacios en blanco.read -r WORD
: Lee cada línea del archivo, asignándola a la variableWORD
.
Nota.- Se va reutilizar el diccionario de “dirb”
Construcción de la URL y Verificación del Código de Estado HTTP
STATUS_CODE=$(curl -o /dev/null -L -s -w "%{http_code}\n" "${TARGET}/${WORD}")
:
curl
: Utiliza curl para realizar una solicitud HTTP.-o /dev/null
: Descarta el contenido de la respuesta.-L
: Sigue las redirecciones.-s
: Ejecuta curl en modo silencioso, sin mostrar el progreso.-w "%{http_code}\n"
: Muestra el código de estado HTTP de la respuesta."${TARGET}/${WORD}"
: Construye la URL combinandoTARGET
yWORD
.
Verificación del Código de Estado HTTP
if [ "$STATUS_CODE" -eq 200 ]; then
: Verifica si el código de estado HTTP es 200.echo "(CODE: 200) ${TARGET}/${WORD}"
: Imprime un mensaje indicando que la URL existe y tiene un código de estado 200.
Como usar
Sintaxis:
bash dirbash [TARGET] [WORDLIST]
ej:
bash dirbash http://localhost /ruta/del/diccionario/wordlist.txt
Resumen
Este script en Bash emula la funcionalidad de dirb al verificar la existencia de diferentes rutas en un servidor web. Toma una URL base y una lista de palabras, construye URLs combinando ambos, y utiliza curl para identificar aquellas rutas que existen (código HTTP 200). Es una herramienta sencilla y efectiva para pruebas de seguridad web.
Fuente
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#successful_responses
https://nucleolinux.org/2024/06/25/dirb-herramienta-para-descubrimiento-de-contenido-web/