Dirb – Herramienta para descubrimiento de contenido web
Dirb es un escáner de contenidos web que utiliza el mecanismo de fuerza bruta para descubrir directorios y archivos ocultos en servidores web.
El objetivo principal de DIRB es ayudar en la auditoría profesional de aplicaciones web, especialmente en pruebas relacionadas con la seguridad
página oficial:
página oficial: https://dirb.sourceforge.net/
¡Dirb no es un escáner de vulnerabilidades!
COMANDOS DE DIRB
Cuando se instala dirb, este paquete proporciona 3 herramientas como ser:
- dirb
- dirb-gendict
- html2dic
Comando dirb
Este comando permite ejecutar una lista de palabras (diccionario) a un objetivo especifico
Comando dirb-gendict
Este comando permite generar diccionarios utilizando, para ver las opciones, simplemente ejecute “dirb-gendict”
Comando html2dic
html2dic permite dumpear todas las palabras de un archivo hmtl, el siguiente ejemplo se muestra la salida de palabras filtradas de un archivo HTML
CÓDIGO HTTP
Este fragmento define códigos de estado HTTP y sus correspondientes descripciones en formato de cadena.
archivo: http_codes.h
#include "global.h"
// HTTP Code
#define HTTP_CONTINUE 100
#define HTTP_SWITCHING_PROTOCOLS 101
#define HTTP_OK 200
#define HTTP_CREATED 201
#define HTTP_ACCEPTED 202
#define HTTP_NON_AUTHORITATIVE 203
#define HTTP_NO_CONTENT 204
#define HTTP_RESET_CONTENT 205
#define HTTP_PARTIAL_CONTENT 206
#define HTTP_MULTIPLE_CHOICES 300
#define HTTP_MOVED_PERMANENTLY 301
#define HTTP_MOVED_TEMPORARILY 302
#define HTTP_SEE_OTHER 303
#define HTTP_NOT_MODIFIED 304
#define HTTP_USE_PROXY 305
#define HTTP_BAD_REQUEST 400
#define HTTP_UNAUTHORIZED 401
#define HTTP_PAYMENT_REQUIRED 402
#define HTTP_FORBIDDEN 403
#define HTTP_NOT_FOUND 404
#define HTTP_METHOD_NOT_ALLOWED 405
#define HTTP_NOT_ACCEPTABLE 406
#define HTTP_PROXY_AUTHENTICATION_REQUIRED 407
#define HTTP_REQUEST_TIME_OUT 408
#define HTTP_CONFLICT 409
#define HTTP_GONE 410
#define HTTP_LENGTH_REQUIRED 411
#define HTTP_PRECONDITION_FAILED 412
#define HTTP_REQUEST_ENTITY_TOO_LARGE 413
#define HTTP_REQUEST_URI_TOO_LARGE 414
#define HTTP_UNSUPPORTED_MEDIA_TYPE 415
#define HTTP_INTERNAL_SERVER_ERROR 500
#define HTTP_NOT_IMPLEMENTED 501
#define HTTP_BAD_GATEWAY 502
#define HTTP_SERVICE_UNAVAILABLE 503
#define HTTP_GATEWAY_TIME_OUT 504
#define HTTP_VERSION_NOT_SUPPORTED 505
#define HTTP_VARIANT_ALSO_VARIES 506
// HTTP Code Strings
static struct code code2message[] = {
{ HTTP_OK, "Ok" },
{ HTTP_MOVED_PERMANENTLY, "Moved Permanently" },
{ HTTP_MOVED_TEMPORARILY, "Moved Temporarily" },
{ HTTP_BAD_REQUEST, "Bad Request"},
{ HTTP_UNAUTHORIZED, "Auth Required" },
{ HTTP_FORBIDDEN, "Forbidden" },
{ HTTP_NOT_FOUND, "Not Found" },
{ HTTP_UNSUPPORTED_MEDIA_TYPE, "Unsupported Media Type" },
{ HTTP_METHOD_NOT_ALLOWED, "Method Not Allowed" },
{ HTTP_INTERNAL_SERVER_ERROR, "Internal Server Error" },
{ HTTP_SERVICE_UNAVAILABLE, "Service Temporarily Unavailable" },
{ 0xff, "Unknown"},
};
Ejemplo de diccionario
Dirb utiliza un diccionario de palabras para complementar la URL y así descubrir contenidos web interesante es decir:
Ejemplo del diccionario “small.txt” , este diccionario cuenta con aprox. 959 palabras:
Algunas palabras utilizadas que utiliza para identificar las URL
$ tail small.txt
~mail
~operator
~root
~sys
~sysadm
~sysadmin
~test
~user
~webmaster
~www
tail es un comando que nos permite ver las ultimas lineas de un archivo (default: 10)
Como funciona
Dirb utiliza este mecanismo simple pero efectivo:
TARGET = http://example.com
DIC = small.txt
phpmyadmin <- esta palabra esta en el diccionario
# Combina la URL + PALABRA
http://example.com/phpmyadmin
# Valida la URL según su código HTTP
http://examplecom/phpmyadmin = 200
# Si el código es 200, entonces quiere decir que la URL es valida
Fuente
https://www.kali.org/tools/dirb/
https://salsa.debian.org/pkg-security-team/dirb
Resumen
Esta herramienta es muy útil para quienes estén aprendiendo a meterse en el área de seguridad informática o ramas a fines, conocer esta herramienta nos permite comprender como funcionan su mecánicos internos usando que son simples pero útiles, en este capitulo se aprendió varios puntos, atentos al siguiente capitulo!