Titulo: TryHackMe - Empline |
Fecha: 21-09-2021 |
Descripcion: Enumeracion - Fuzzing - MySQL - Capability |
TryHackMe - Empline Writeup
## Ping:
ping -c1 10.10.24.77
Mediante el comando ping vamos a trazar una ruta ICMP para ver si la maquina esta activa y ante que tipo de sistema operativo estamos
Podemos ver que la respuesta del ttl es 63 , el TTL en maquinas Linux es 64 y en maquinas Windows 128 , en este caso es 63 porque pasa por un nodo intermediario.
## Enumeracion :
Ahora vamos a proceder a ver que servicios tiene esta maquina abiertos para ello vamos a realizar una enumeracion de puertos:
Mediante el parametro --min-rate 5000 va a emitir paquetes no mas lento que 5000 paquetes por segundo
Podemos observar que tenemos el puerto 80 abierto , mediante la herramienta WhatWeb vamos a inspeccionar si estamos ante algun gestor de contenido
Vamos a realizar un escaneo mas profundo aplicando scripts basicos de enumeracion , y nos descubre abierto otro puerto de MySQL
## Reconocimiento Web :
Vamos abrir el navegador y inspeccionar el codigo y buscar algun directorio web potencial , si hacemos "hovering" sobre la seccion "Employment" , vamos a ver un dominio llamado "job.empline.thm"
Vamos añadir ese dominio a nuestro /etc/hosts por si se esta aplicando virtual hosting
Como tenemos el puerto de MySQL activo , podemos abrirlo en el navegador para ver si cuenta con algun PhPmyAdmin
Si abrimos el dominio que habiamos insertado en nuestro /etc/hosts , podemos ver un panel de inicio de sesion de una plataforma llamada "Opencats"
Podemos buscar informacion sobre este servicio y podemos ver que cuenta con varias vulnerabilidades reportadas
Como no tenemos credenciales de acceso al panel de inicio , podemos realizar un fuzzing para ver directorios web que tengamos permiso sin tener que usar cuenta
Podemos ver unos cuantos directorios interesantes entre ellos los siguientes:
Podemos ir investigando uno por uno y nos encontraremos que el que mas potencial tiene es /careers un directorio que sirve para buscar ofertas de trabajo
Si pinchamos en la oferta que tenemos , podemos ver que nos deja subir un archivo normalmente el CV , pero aqui nosotros vamos a subir una Shell Reversa , ya que parece que no aplica tecnicas de evasion de archivos potenciales
Antes de enviar la peticion , vamos a capturar los datos que se envian al servidor mediante Burp Suite
Y vamos a cambiar el tipo de contenido como si fuera una imagen
Content-Type: image/jpg
Y vamos a poner los magic numbers de GIF
GIF87a
Mediante Burp Suite podemos observar que se va a guardar en la ruta /upload/careerportaladd , por lo que tenemos que abrir el directorio web y ejecutar la Shell Reversa mientras que estamos a la escucha en el puerto que hemos configurado
## Acceso como WWW-DATA :
Ya tenemos acceso remoto a la maquina como el usuario www-data , y vamos a proceder abrir el fichero config.php para obtener las credenciales del usuario de MySql
Podemos ver todos los ficheros , a nosotros nos interesa el fichero de config.php que es donde se almacenan las credenciales
## Acceso a MySQL :
Mediante las credenciales que tenemos vamos a proceder autentificarnos en el servicio de base de datos y proceder a ver las Bases de Datos que contiene
Podemos ver la Base de Datos llamada "opencats" , la cual contiene una tabla llamada User , con todos los campos de informacion de los usuarios registrados
Nosotros vamos hacer una query de el user_name , email y password de la tabla user
Nos reportara el nombre de los usuarios con las diferentes contraseñas encriptadas en lo que parece MD5
Podemos tirar de Rainbow tables para descifrar la contraseña , para ello usaremos https://crackstation.net/
Y nos reporta la contraseña del usuario George , por lo que vamos a intentar auntentificarnos en el servicio SSH que teniamos abierto
## Escalada de Privilegios :
Una vez que podemos ver el flag del usuario , nos quedaria escalar privilegios para poder ver el flag de Root , para ello vamos a ir inspeccionando la maquina para ver la forma en la que escalar privilegios
Si vemos las "Capability" que son grupos de kernel que pretenden delimitar las acciones que puedes hacer como el usuario Root
Las Capability se aplican sobre ficheros y procesos , utilizaremos una serie de comandos como Getcap para obtenerlas
getcap -r / 2>/dev/null
Podemos observar la capability "cap_chown"
Podemos abusar de esta capability para darnos permisos de la carpeta de Root a nuestro usuario y asi poder ver el flag
/usr/local/bin/ruby -e 'require "fileutils"; FileUtils.chown "george","george","/root/"'
Ya tendriamos permiso para poder acceder al directorio de Root y poder mirar el flag de Root
Y tendriamos la maquina Empline explotada!!