Crocodile

Dificultad: Very Easy - OS: Unix

Enumeración de puertos/servicios

┌──(root㉿kali)-[/home/kali]
└─# nmap -sCV -p- --open -T4 -v -n 10.129.6.25 
📌Parámetros
  • -sCV:

    • -sC: Ejecuta scripts de detección predeterminados → Usa los scripts de nmap ubicados en /usr/share/nmap/scripts/, los cuales buscan información adicional en los puertos abiertos.

    • -sV: Detección de versiones → Intenta identificar el software y su versión en los puertos abiertos.

  • -n: No resuelve nombres de dominio (reduce el tiempo del escaneo).

  • --open: Muestra solo puertos abiertos → Filtra la salida para no mostrar puertos cerrados o filtrados.

  • -T4: Ajusta la velocidad del escaneo → T4 es un nivel "agresivo" que acelera el escaneo, útil en redes rápidas.

  • -v: Modo verbose → Muestra más detalles sobre el progreso del escaneo.

Resultados:

PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to ::ffff:10.10.14.70
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--    1 ftp      ftp            33 Jun 08  2021 allowed.userlist
|_-rw-r--r--    1 ftp      ftp            62 Apr 20  2021 allowed.userlist.passwd
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-favicon: Unknown favicon MD5: 1248E68909EAE600881B8DB1AD07F356
|_http-title: Smash - Bootstrap Business Template
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Unix

Enumeración de recursos ftp con usuario anónimo

Si revisamos el resultado del análisis de nmap, el servidor FTP está configurado para permitir el inicio de sesión anónimo: ftp-anon: Anonymous FTP login allowed (FTP code 230) por lo que el siguiente paso es ingresar con ese usuario y buscar recursos expuestos para descargarlos en nuestro equipo:

Una vez que descargamos los recursos expuestos vamos a ver que se tratan de listas con usuarios y contraseñas:

Directory Fuzzing

Con estas listas podríamos autenticarnos en algún panel de login que esté expuesto en la página web del puerto 80, pero para encontrarlo tendremos que recurrir a la técnica de fuzzing de directorios web con gobuster:

📌Desglose del comando
  • gobuster dir → Indica que se usará el modo "dir" de Gobuster, que sirve para enumerar directorios y archivos en un servidor web.

  • -u http://10.129.6.25/ → Especifica la URL objetivo donde se realizará la enumeración.

  • -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt → Indica la wordlist a utilizar, en este caso, una lista de directorios y archivos comunes de DirBuster.

  • -x php,html → Especifica las extensiones de archivo a buscar. En este caso, buscará archivos con extensiones .php y .html.

De estos directorios el que nos interesa es el /login.php que se ve de la siguiente forma:

Ahora tenemos dos formas de ingresar al panel de login: la manual y la automática. Para la primera opción solo debemos probar cada usuario de la lista users con cada contraseña de la lista passwords hasta que encontremos la combinación correcta que nos mostrará el siguiente dashboard:

HTTP POST Password Brute-force with Hydra

Para la forma automatizada vamos a realizar un ataque de fuerza bruta con Hydra analizando el request y el response con Burpsuite para setear el comando correctamente:

  1. Generamos una petición de login y lo interceptamos con Burpsuite

  1. Analizamos el request para configurar la primera parte del comando de hydra y luego enviamos esta solicitud al Módulo Repeater para ver la respuesta del servidor

De este código nos interesan las siguientes líneas: 2 y 17

  1. Con la respuesta del responder podremos setear la segunda parte del comando de hydra

De este código nos interesan la linea 47

Con esta información el comando del hydra nos quedaría de la siguiente manera:

📌Desglose del comando

-t 64: Define el número de hilos (threads), en este caso, 64. Más hilos aumentan la velocidad, pero pueden sobrecargar el servidor -L allowed.userlist: Lista de nombres de usuario a probar. Cada línea del archivo contiene un usuario diferente. -P allowed.userlist.passwd: Lista de contraseñas a probar. Cada línea del archivo contiene una contraseña. 10.129.1.15: IP del servidor objetivo. -s 80: Especifica el puerto (80 en este caso, HTTP por defecto) -f: Fuerza bruta hasta encontrar un par válido, luego detiene el ataque.

Protocolo y solicitud HTTP

Este es el formato específico para un ataque de fuerza bruta en un formulario web de login.

Estructura general de http-post-form en Hydra:

Parte por parte:

  1. Ruta de la página de login: /login.php

    • Página donde se envían los datos de autenticación.

  2. Parámetros enviados en la petición POST:

    • ^USER^ → Será reemplazado por cada usuario del archivo allowed.userlist.txt.

    • ^PASS^ → Será reemplazado por cada contraseña del archivo allowed.userlist.passwd.txt.

  3. Condición de error o éxito:

    • F= significa que si Hydra encuentra este texto en la respuesta, la autenticación falló.

    • Si este texto no aparece, significa que el login fue exitoso

¿Por qué es importante incluir Submit=Login? En algunos formularios web, al hacer clic en el botón de login, se envía un campo adicional en la solicitud HTTP. En este caso, el campo es:

Si el servidor espera este parámetro para procesar correctamente la autenticación, debemos incluirlo en el ataque de fuerza bruta con Hydra.

¿Qué es http-post-form en Hydra?

En Hydra, http-post-form es un módulo de ataque diseñado para hacer fuerza bruta en formularios web que usan el método POST para enviar credenciales de login.

Función: Le indica a Hydra que el objetivo es un formulario web y que debe enviar las credenciales mediante una solicitud HTTP POST.

Last updated