Introduction

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.

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

Vamos ahora a listar directorios en el servicio web.

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

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

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

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.

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.

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

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

No parece nada interesante:

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

Ahí podemos ver un directorio llamado mysql_backup/:

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

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

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

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

Vamos a probar.

¡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.

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.
- Primero clonamos el repo e instalamos las dependencias requeridas, listadas en
requirements.txt.
- Ahora vamos a ponernos en escucha.

- Por último ejecutamos el exploit.

Y conseguimos una shell.

Vamos a intentar estabilizarla.

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.

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.

Efectivamente ahí está. Vamos a ejecutarlo.

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.

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

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

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

Nos ponemos en escucha por el puerto 5554.

Ejecutamos backup.pl con sudo.

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

Vamos a probar ahora.

Ahora sí que hemos conseguido la shell de root.

Ahora simplemente leemos la flag.

