Recolección de información:

Lancemos nmap para descubrir qué puertos están abiertos y cuales son los servicios que corren por ellos.

Encontramos el puerto 22 y el puerto 80 abiertos. Veamos que tenemos en el puerto 80, en principio se trata de la página principal del «grupo de topología de la Universidad de Miskatonic»; Recolectamos todo tipo de información comenzando por el equipo, del cual conseguiremos hacernos a la idea de sus direcciones de correo.

No esta de más recabar información sobre la construcción de la página para aumentar las probabilidades de encontrar un vector de ataque.

Vamos a profundizar un poco más en el contenido de la página, encontramos «LaTex Equation Generator».

«LaTeX es un sistema de composición de textos, orientado especialmente a la creación de libros, documentos científicos y técnicos que contengan fórmulas matemáticas.»

Observamos en el código fuente que el enlace nos lleva a un subdominio, http://latex.topology.htb/equation.png, lo que nos hace pensar que el servidor cuenta con más de un subdominio, o por lo menos, que existan más de un directorio en el mismo.

Agregamos la nueva dirección para que nuestra máquina pueda resolver el subdominio.

Ahora tenemos acceso a la misma.

Lo primero que hacemos el tratar de averiguar cuantos directorios existen. A pesar de no contar con acceso los archivos .htpasswd y .htaccess estos sin duda, son los mas importantes.

Una vez en el directorio raíz podemos comprobar, que efectivamente, no vemos los archivos que deseamos.

Intentemos el envió de una shell para ver el comportamiento de la página. Como suele ser normal, la shell no obtiene la ejecución.

Vemos que el comando ingresado en el cajón de creación, es tratado y convertido, pero no se ejecuta por contener errores.

Analisis de vulnerabilidades:

Intentamos extraer información confidencial a modo RCE (Remote Code Execution), solicitando que nos muestre el archivo passwd. El servidor nos muestra como respuesta que hemos ingresado comandos no permitidos…Interesante…luego volveremos sobre estos pasos.

Antes de inclinarnos hacia un ataque debemos comprobar si existen otros vectores a tener en cuenta, tal es el caso de los subdominios. Hagamos uso de FFuF.

En un primer momento vemos como todos los payloads son tratados como positivos, bien, si todos son positivos el o los que no sean iguales a la devolución de información, serán los payloads válidos, tal y como podemos ver con el payload stats. Teniendo eso en cuenta filtramos por palabras, indicando que no nos muestre la que dé como devolución 1612 palabras.

Asi obtenemos dos nuevos subdominios, los cuales serán añadidos al archivo /etc/hosts .

En stats no encontramos nada de interés para continuar progresando.

Pero en dev. encontramos un formulario de validación de credenciales.

Ingresamos cualquier user/pass para ver como se comporta….nada.

Bien, sabemos hacia donde queremos ir, pero debemos regresar sobre nuestros pasos para conseguir unas credenciales, es el momento de volver con la inyección de comandos en el subdominio latex.

Basta con una búsqueda rápida para encontrar lo que andamos buscando.

Comenzamos por algo sencillo, como que nos muestre un archivo en blanco.

El problema comienza cuando solicitamos que nos muestre contenido de archivos escritos.

Tras muchos y muchos fallos sin encontrar la razón del porque nuestros comandos eran rechazados, encontramos en el encabezado la solución…debía de incluir uno de estos símbolos [ o $ .

El primero de ellos nos mostraba el mismo error….

Pero el segundo de ellos nos muestra el archivo que deseamos.

Ahora podremos visualizar el archivo .htpasswd que nos estaba restringido.

Pero hacia donde nos dirigimos? por lo que hemos visto hasta ahora, el servidor parece disponer de varios hosts virtuales a modo de subdominios. Por lo tanto debemos encontrar el archivo de configuración donde se especifique cuales son esos hosts y su ruta principal.

Encontramos el archivo de configuración para la creación de hosts virtuales, pero al introducirlo nos da error. Al volver a google para continuar nuestra búsqueda encontramos esto…

Pues resuelto el misterio. Volvemos a ingresar el comando pero con la diferencia /sites-enabled/ en lugar de /sites-avariable/

Probamos cada una de las direcciones hasta dar con la que alberga el archivo .htpasswd

Copiamos el mismo, podríamos extraerlo mediante herramientas web, pero a mí me falló, así que opte por copiar tal cual.

Miramos que tipo de hash es.

Aquí atencion porque esto me trajo de cabeza un buen tiempo!!

Al realizar la copia del hash lo incluí todo en la misma línea. Pues bién, hemos de dejar un salto de linea tal y cómo se muestra en la imagen, ya que si no, el hash no podrá ser leído en su totalidad.

Explotación:

Con el hash ya crackeado, nos logeamos en el servicio SSH.

Leemos la flag de usuario desde el mismo directorio.

Escalada de privilegios:

De lo primero que comprobamos es si existe algún binario que nos permita su ejecución con privilegios elevados, pero en esta ocasión no ha habido suerte.

Pasamos linpeas a nuestro archivo raiz, intentamos por todos los medios de lanzarlo desde el directorio /tmp, pero era imposible.

Encontramos un archivo que nos podria ser de ayuda. Pero primero veamos de que se trata:

«Gnuplot es una utilidad gráfica portátil basada en línea de comandos para Linux, OS/2, MS Windows, OSX, VMS y muchas otras plataformas. El código fuente tiene derechos de autor pero se distribuye libremente (es decir, no es necesario pagar por él). Fue creado originalmente para permitir a los científicos y estudiantes visualizar funciones y datos matemáticos de forma interactiva, pero ha crecido hasta admitir muchos usos no interactivos, como secuencias de comandos web. También se utiliza como motor de trazado en aplicaciones de terceros como Octave. Gnuplot ha recibido apoyo y se encuentra en desarrollo activo desde 1986.»

Navegamos hasta el directorio mostrado por linpeas.

Se trata de un directorio sobre el cual no tenemos privilegios de lectura (R) pero sí de escritura (W) y ejecución(X), por lo que optamos por escribir un archivo en el formato correcto .plt

El archivo en cuestión contiene un comando en el cual se solicita que visualice mediante «echo» el comando chmod u+s /bin/bash, esto hará que se lance una terminal con permisos de root pero para poder ser ejecutado por el usuario en ejecución.

Si ejecutamos /bin/bash, no obtenemos la escalada de privilegios puesto que continúa empleando la variable $ENV del usuario, pero si ejecutamos /bin/bash -p, se ejecutará la shell pero sin usar la variable del usuario, usando sín embargo, la variable del propietario real, en este caso root.

Tan solo nos resta buscar la flag de root y listo!!

Happy Hacking!!

Referencias:

https://desarrolloweb.dlsi.ua.es/cursos/2015/herramientas-investigacion/que-es-latex

https://book.hacktricks.xyz/pentesting-web/formula-csv-doc-latex-ghostscript-injection

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-18-04-es

https://stackoverflow.com/questions/5497889/is-there-a-standard-file-extension-for-gnuplot-files

https://www.linuxquestions.org/questions/programming-9/what-does-p-do-in-bin-bash-p-809364

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *