Kitty

tryhackme room Kitty

Vamos c omenzar haciendo un nmap:

Parece que solo tiene abierto el 22 de ssh y el 80 , vamos a acceder:

Y vamos a hacer el tipico ataque de injeccion sql:

y vemos que ha funcionado asi que tiene pinta de que vamos a poder hacer algun tipo de injeccion.Asi que ahora vamos a probar a registrarnos con un usuario legitimo en la web:

Una vez creado vamos a meter un concepto nuevo que es hacer peticiones a traves de curl para verificar si cambi algo al hacer peticiones con usuario que existen y con usuarios que no:

Si hacemos una peticion con un usuario que si existe ya que lo acabamos de crear da un codigo 302(redireccion)
Si lo hacemos con un usuario que no existe devuelve un codigo 200(ok)

De aqui podemos comprobar que podemos hacer un ataque de injeccion sql boolean , siendo 302 true y el codigo 200 false.

Lo siguiente que vamos a hacer es ver el numero de columnas que tiene la base de datos:

Como podemos ver empezamos por ORDER BY 1 hasta el 5 que es donde dice true , es decir tenemos 4 columnas.

Una vez que sabemos el numero de columnas queremos saber el nombre de la base de datos , para ello haremos una peticion parecida a esta :

En esta peticion le decimos a la base de datos que si el nombre de la base de datos empieza por a , de esta forma si nos da un 302 sabemos que es true y que la base de datos empieza por esa letra.

Vamos a sacar la primera letra:

Como podemos ver tras probar con a y b vemos que no hubo suerte , con la m si que la hubo por lo que sabemos que el nombre de la base de datos comienza con m.

Ahora que ya sabemos como funciona de forma manual vamos a utilizar un script en python que automaitza este proceso:

Lo configuramos y lo lanzamos:

Y parece que tenemos el nombre de la base de datos: mywebsite

Tambien podemos deducir que el dbms que esta utilizando es mysql ya que la funcion database() ha funcionado.

Ahora que sabemos el nombre de la base de datos vamos a averiguar el nombre de la tabla:

Ahora lo añadimos al script modificando la peticion y lo lanzamos:

Una vez sacado el nombre de la tabla vamos a sacar el del primer usuario que seguramente sea el admin , le añadimos esta sentencia sql al script:

Y nos da el usuario kitty

Luego modificamos la query para averiguar la contraseña:

Y conseguimos la contraseña

Una vez tenemos todo esto vamos a conectarnos por ssh con estas credenciales y vamos a ver que tenemos:

Y aqui tenemos user flag

ESCALADA de PRIVILEGIOS

Vamos a comenzar haciendo una enumeracion basica:

y vemos como esta corriendo localmente algo en el puerto 8080.

Como sabemos que un apache esta corriendo vamos a ver si hay otra web en el directorio /etc/apache2/sites-enabled/:

Como podemos ver parece que en la ruta /var/www/development hay otra web

Podemos ver como en /var/www hay dos carpetas html y development si entramos en la html y revisamos vemos como en la de html hace referencia al puerto 80:

Una vez sabemos esto vamos a crear un tunel con ssh para acceder a traves de nuestro propio navegador:

El login es muy parecido asi que vamos a hacer un diff para ver la diferencia.

Parece que a traves del header X Forwarded for guarda la ip del visitante en una variable y se la pasa al archivo logged que esta en ese directorio cada vez que hay una inyeccion sql.

Vamos a probar desde nuestro localhost:

Si vamos al archivo vemos como se ha guardado.

Ahora sabemos que podemos controlar lo que entra en este archivo , pero como lo podemos aprovechar.. Vamos a utilizar pspy64 para ver los procesos activos del sistema:

Al poco de comenzar vemos como se ejecuto un archivo llamado log_checker.sh

si lo visualizamos:

Aqui podemos ver como el script va revisando el archivo logged y lo va metiendo en otro archivo.Aqui la vulnerabilidad estaria en la linea sh -c "echo $ip

Ahora lo que tendremos que hacer es crear una webshell e insertarla en el header que vimos antes X FORWARDED FOR:

Aqui creamos el reverse shell , que lo creamos en el directorio /tmp

Una vez creado ejecutamos la injeccion:

Y por ultimo miramos en la terminal donde abrimos el listener en el puerto 9001:

Last updated