XUT_ / MACHINES / THM

0016

LazyAdmin

THMMACHINENONEEASY

Introduction

lazyadmin

Máquina de Linux fácil para practicar. Puede haber múltiples formas de conseguir acceso de usuario.

Getting the Flags

Enumeración Inicial

Como siempre, comenzaremos esta fase con un escaneo inicial de puertos.

lazyadmin

Después seguimos escaneando dichos puertos más en profundidad.

lazyadmin

Vamos ahora a listar directorios en el servicio web.

lazyadmin

Vemos que hay un directorio: /content/, así que vamos a listarlo también.

lazyadmin

Aquí parece que hay cosas más interesantes ya. Vamos a listar recursivamente:

lazyadmin

Más allá de lo que ya habíamos encontrado esto es lo único que sirve para algo:

lazyadmin

El resto de Directorios y archivos dan código 200 pero todos contienen lo mismo:


Profundización

Vamos a entrar en la página web a ver qué hay.

lazyadmin

Es el panel de Apache2 cuando no hay nada configurado. Vamos a mirar los directorios que encontramos en la fase de reconocimiento.

Primero vamos a /content/changelog.txt. Parece que hay varias cosas interesantes.

Con este archivo podemos ver que la versión que corre de SweetRice CMS es la 1.5.0.

lazyadmin

Vamos a seguir mirando, ahora vamos con /content/htaccess.txt:

lazyadmin

Después de esto vamos a /content/inc/cache/.

lazyadmin

No parece nada interesante:

lazyadmin

Si desde este directorio intentamos path traversal nos lleva al directorio padre.

lazyadmin

Ahí podemos ver un directorio llamado mysql_backup/:

lazyadmin

Es un documento de creación de la base de datos y tablas del CMS.

lazyadmin

Parece que hay credenciales en la información (está serializada en PHP, vamos a deserializarla primero de todo).

lazyadmin

Con un hash ya en nuestras manos vamos a intentar crackearlo.

lazyadmin

Parece que pudiera ser MD5 (sería lo más común en retos easy CTF).

lazyadmin

Vamos a probar.

lazyadmin

¡Crackeado!

Ahora vamos a ver si la versión que encontramos tenía alguna vulnerabilidad.


Explotación

Vamos a proceder con la explotación. Primero vamos a entrar al exploit de Exploit-DB a ver qué es.

lazyadmin

Lo del backup ya lo habíamos visto, vamos a ver qué es lo del .zip.

No hay nada. Vamos ahora al RCE exploit de GitHub. Esta persona nos explica como configurarlo y utilizarlo, así que vamos a seguir sus pasos.

  1. Primero clonamos el repo e instalamos las dependencias requeridas, listadas en requirements.txt. lazyadmin
  2. Ahora vamos a ponernos en escucha. lazyadmin
  3. Por último ejecutamos el exploit. lazyadmin

Y conseguimos una shell.

lazyadmin

Vamos a intentar estabilizarla.

lazyadmin

Y por último buscamos el archivo user.txt y lo leemos para obtener la flag del usuario.


Escalada de Privilegios

Vamos a buscar vectores de escalada de privilegios.

Empezamos con la técnica más básica: sudo -l.

lazyadmin

CAUTION: El comando que se puede ejecutar sin contraseña con sudo es /usr/bin/perl /home/itguy/backup.pl, no los dos por separado. Es un error que me costó bastante tiempo.

Parece que hay un par de comandos que podemos ejecutar con sudo. Lo de perl huele raro, es como si pudiéramos ejecutar pythoin con sudo. Vamos a mirar en GTFOBins.

lazyadmin

Efectivamente ahí está. Vamos a ejecutarlo.

lazyadmin

Después de intentar unas cuantas formas y que no funciones está claro que algo nos lo está impidiendo. El otro archivo que podemos ejecutar con sudo está en el directorio /home de itguy, vamos a ver si podemos modificarlo.

lazyadmin

Parece ser que este archivo ejecuta un script, vamos a ver qué es.

lazyadmin

Parece que es una reverse shell y encima cualquier usuario puede modificarlo. Vamos a meter nuestra IP.

lazyadmin

Parece que no hay un editor, vamos a redirigirlo con redirectores.

lazyadmin

Nos ponemos en escucha por el puerto 5554.

lazyadmin

Ejecutamos backup.pl con sudo.

lazyadmin

Seguía pasando lo mismo por lo que voy a intentar elevar la shell con python.

lazyadmin

Vamos a probar ahora.

lazyadmin

Ahora sí que hemos conseguido la shell de root.

lazyadmin

Ahora simplemente leemos la flag.

lazyadmin