¡Buenas! Primero daros las gracias por leer este primer artículo que publico en las redes de Hack by Security. En esta ocasión realizaré un write up de una máquina de Hack the Box que me enseñó algunos trucos nuevos en hacking de aplicaciones web y post explotación.
El primer paso tras establecer conexión en la VPN de Hack the box y haber activado dicha máquina virtual es comprobar la conectividad.
Tras haber confirmado que existe conectividad con el objetivo se procede a comprobar sus puertos y servicios.
Sabiendo que disponen de un servicio de aplicación web, simplemente se puede observar el contenido de su índice (index).
Debido a que el sitio web está "en construcción" se debe de pasar a hacer un descubrimiento de su estructura de directorios y ficheros.
Gracias a ese proceso se descubren dos rutas: feed y upload. Feed tan solo muestra la imagen del propio index. Pero en cambio upload…
Parece que hemos dado con un gestor de subida de lo que son ficheros XML. Para poder operar con este gestor de subida se debe de generar un fichero XML. A continuación, una estructura básica de los elementos que nos está pidiendo el sitio web (Autor, asunto y contenido).
Ahora es subir el fichero y probar si el gestor de subidas lo acepta (El proceso de ir probando el fichero XML hasta conseguir un formato que aceptase sin problemas).
Se puede observar cómo lo ha cogido sin problemas, y que, además de regalo me ha ofrecido un bonito nombre de usuario para seguir "tirando del hilo". Una vez ya se ha descubierto la estructura que sigue el fichero XML es hora de sumergirse en el fabuloso mundo de las inyecciones en XML external entity's (que es por lo que me encantó esta máquina, fue la primera vez que me topé con este tipo de vulnerabilidad).
La teoría indica que de tener una vulnerabilidad de inyección en XML external entity, se puede reproducir lo siguiente, para hacer la prueba de concepto se modificará el fichero generado anteriormente.
El hecho de que aparezca la cadena "PoC" significa que es vulnerable a una inyección XML external entity. Se pueden comprobar muchos ficheros locales con dicha vulnerabilidad.
El fichero passwd confirma la existencia de otros dos usuarios más, pero sospechando que la aplicación web tiene permisos de lectura y/o escritura sobre el usuario Roosa, este será la mejor baza para entrar al buscar ficheros sensibles de su ruta de directorio /home/ (como por ejemplo, llaves privadas para conectar con SSH sin necesitar de una contraseña ;) )
Ya disponemos de acceso a la máquina gracias al servicio legitimo SSH
Ahora que se tiene acceso a la máquina se puede leer la bandera de usuario si lo deseásemos
Para leer la bandera de root se debe de proceder con la post-explotación. Afortunadamente la máquina nos ofreció buenas pistas en el fichero etc/passwd, si se consulta el historial de comandos del usuario roosa y el log de git se observan más indicios.
Simplemente consultando el log de git se puede obtener lo que parece ser la llave privada RSA del usuario root.
Ahora es tan solo probar si funciona…
Y tras obtener dicho acceso, leer la bandera root.
Y esto ha sido todo, fácil ¿no?, si tienes alguna duda, dímelo, o mejor aun, inscríbete en nuestro curso CSIO
Nos leemos en el siguiente post