Técnicas Básicas de Análisis Web
En este capítulo hablaremos de algunas de las técnicas más básicas utilizadas para en análisis web. Para estas no se requiere ningún o casi ningún conocimiento sobre el funcionamiento o características del sitio, y pueden ser aplicadas de manera casi inmediata. Usualmente se utiliza herramientas muy simples, que requieren muy poca configuración para ser usadas. Desde el lado del servidor, suele ser bastante fácil detectar el uso de estas herramientas, por lo que los sistemas relativamente bien monitoreados usualmente bloquean IPs con este comportamiento.
El objetivo de las herramientas que veremos ahora es obtener más información sobre el servicio web, encontrando archivos, usuarios y otros recursos que pueden estar escondidos. Si tienen mucha suerte, esto también puede resultar en la divulgación de información privada, sensible o crítica, o incluso pueden ganar privilegios si logran encontrar contraseñas.
Enumeración
La enumeración es un proceso en el cual se itera por una lista de valores (llamadas diccionarios), intentando encontrar información nueva. Esto se puede aplicar a subdirectorios de un sitio web, subdominios, nombres de usuario, nombres de parámetros, servicios ofrecidos, puertos abiertos, etc. También se puede utilizar fuzzers, los cuales toman un input conocido y lo modifican de múltiples maneras para encontrar otros inputs con comportamientos diferentes.
Este proceso funciona enviando las distintas peticiones al servidor y analizando sus respuestas. No se suele encontrar muchas vulnerabilidades de esta forma, pero sí se logra recopilar información y funcionalidades previamente no vistas.
Las herramientas comúnmente usadas en el área web son:
Fuerza Bruta
Similar a la enumeración, pero en este caso se intenta pasar por todos o casi todos los valores posibles de un parámetro, aunque en muchos casos también se utiliza diccionarios. Se diferencian principalmente de manera conceptual, y en que la acción realizada usualmente tiene uno o unos pocos valores “correctos”, los cuales resultan en una respuesta diferente del servidor (por ejemplo, ingresar una contraseña correcta tiene un resultado diferente al de ingresar una contraseña incorrecta). Mediante la fuerza bruta se pueden encontrar contraseñas de usuarios, valores aleatorizados, parámetros mágicos, secuencias específicas, etc.
Las herramientas usualmente utilizadas son:
- Hydra
- Varios módulos de Metasploit
Ejemplo
Ocuparemos Dirsearch para enumerar directorios en el host 127.0.0.1:8000
, el cual sabemos que está corriendo
un servicio PHP. Utilizamos la flag -e
para indicar la extensión de archivo que queremos buscar, y -u
para indicar la URL base. El comando completo es:
dirsearch -e php -u http://127.0.0.1:8000/
Y obtenemos este resultado, en donde encontramos el archivo users.php
.
Analizando el sitio sabemos que este es un formulario de login, por lo que le realizamos un ataque de
fuerza bruta usando hydra. La flag -L
indica el archivo con nombres de usuario, -P
el archivo con contraseñas,
-u
itera por los usuarios en vez de las contraseñas y -s
define el puerto. Adicionalmente debemos entregarle
la IP del objetivo y el tipo de request (en este caso http-post-form
).
El último parámetro se divide en 3
partes separado por el caracter :
. Primero está la ruta al archivo con el formulario, luego tenemos los
datos que se enviarán en la consulta POST (^USER^
se reemplaza por el nombre de usuario y ^PASS^
por la
contraseña), y finalmente le entregamos un valor para reconocer los intentos fallidos (Incorrect credentials
).
El comando completo es:
hydra -L /usr/share/wordlists/metasploit/unix_users.txt \
-P /usr/share/wordlists/rockyou.txt -u -s 8000 127.0.0.1 http-post-form \
"/users.php:user=^USER^&pass=^PASS^:Incorrect credentials"
Luego de correr el comando obtenemos las credenciales admin:password
.
Editar en GitHub Modificado por última vez el 16/06/2023 a las 12:44:00 hrs.