Chemistry (WIP)
En esta ocasión vamos a hacer el writeup de la máquina Chemistry de Hack the Box, una máquina Linux de dificultad easy.
Última actualización
En esta ocasión vamos a hacer el writeup de la máquina Chemistry de Hack the Box, una máquina Linux de dificultad easy.
Última actualización
Añadimos la IP 10.10.11.38
a nuestro /etc/hosts
y accedemos través del navegador.
Esta máquina no tiene abierto el puerto 80 por lo que vamos a comprobar los puertos y servicios que tiene corriendo.
Nos encontramos varios puertos abiertos. Nos interesa el puerto 5000, por lo que vamos a escanearlo más en detalle con Nmap:
Encontramos que el puerto 5000 usa una versión de Werkzeug/3.0.3 que puede ser vulnerable.
Es el puerto típico SSH. Aqui podríamos:
Realizar ataques de fuerza bruta para probar credenciales de acceso (Hydra, Medusa, CrackMapExec)
Comprobar versiones de SSH para vulnerabilidades conocidas (Nmap, ssh-audit)
Enumerar usuarios o configuraciones inseguras (Enum4linux, Nmap)
Al acceder por el puerto 5000 nos encontramos un frontal con 2 CTAs: login y registro. En la pantalla de login podríamos probar a hacer un bruteforce con Hydra, pero vamos a intentar registrarnos:
Al registrarnos en la página llegamos a un dashboard donde podríamos subir un archivo .CIF y encima nos da un link a un archivo CIF de ejemplo:
Vamos a abrir el archivo .cif
a ver que contiene:
Un archivo .cif
(Crystallographic Information File) es un formato de texto utilizado principalmente en la química y la cristalografía para almacenar información estructural de cristales. El archivo .cif
contiene datos sobre la estructura de una molécula o un cristal, incluidos detalles como las dimensiones de la celda unitaria, los ángulos, las posiciones de los átomos y otros parámetros relacionados con la cristalografía.
Si un servidor permite subir archivos .cif
, es posible que un atacante intente explotar vulnerabilidades relacionadas con la forma en que el servidor procesa y analiza estos archivos. Aquí tienes algunos posibles vectores de ataque:
Algunos sistemas pueden procesar los archivos .cif
mediante scripts de shell o lenguajes como Python o PHP. Si el sistema no sanitiza correctamente los valores de los campos dentro del archivo, podrías intentar insertar comandos en uno de los campos de metadatos.
Por ejemplo, podrías modificar uno de los valores de tu archivo .cif
para inyectar un comando de shell, como una reverse shell en Bash:
Al abrir un listener con netcat por el puerto 4444 y subir el archivo al servidor, vemos que en principio no nos devuelve ninguna conexión, y al abrir el archivo da un error del servidor:
Vamos a buscar el directorio de subidas donde se almacenan los archivos subidos.
Haciendo fuzzing nos encontramos unos pocos directorios, entre ellos el directorio de subidas /upload
:
El estatus 405 hace referencia a un código de error en el protocolo HTTP, específicamente "405 Method Not Allowed" (Método No Permitido). Este error ocurre cuando un cliente realiza una solicitud utilizando un método HTTP que el servidor no permite para el recurso solicitado.
Por ejemplo si un cliente intenta realizar una solicitud POST a una URL que solo acepta GET, el servidor puede responder con un código 405, indicando que el método POST no está permitido en esa ruta.
Buscando cif exploit
no encontramos este repositorio en Github que nos podría servir:
Revisando el código del repo con detenimiento, podemos modificar un archivo cif para inyectarle un reverse shell de la siguiente manera:
Importante cambiar nuestra IP y puerto al final de la línea