Introduction

Un CTF para principantes. ¿Puedes rootearme?
Reconnaissance
Vamos a ir respondiendo a las preguntas:
- ¿Cuántos puertos hay abiertos?

Hay dos puertos abiertos.
- ¿Cuál es la versión de Apache corriendo?

La versión de Apache corriendo es Apache/2.4.41.
- ¿Qué servicio corre en el puerto 22?
En el puerto 22 corre el servicio SSH.
- Encuentra directorios en el servidor usando GoBuster.

- ¿Cuál es el directorio escondido?
El directorio "escondido" es /panel/.
Getting a Shell
En esta tarea se nos pide encontrar una manera de subir y conseguir una reverse shell.
Para ello vamos a empezar yendo a la página a ver qué hay.

Hay un directorio panel/, pues vamos a ver qué hay en él.

Un formulario de subida, justo lo que necesitamos. Vamos a subir una reverse shell en PHP.
Primero modificamos una reverse shell guardada en nuestra máquina.

Nos ponemos en escucha por el puerto especificado.

Subimos la shell.

Mirando el código fuente vemos que no está permitido, pero tampoco vemos ningún script .js del lado del cliente que esté bloqueando este tipo de archivos, por lo que vamos a mirar qué hace la petición con BurpSuite.

Parece que acepta imágenes, vamos a cambiar la extensión a ver.

La subimos y...

¡Bingo!
Vamos a cargarla yendo ahora al directorio uploads/.

Le damos click y esperamos la conexión.

Da un error, vamos a probar con la extensión .phtml:

Volvemos a cargarla:

Hemos obtenido la shell. Ahora la estabilizamos:

Como sabemos que la flag se llama user.txt la buscamos.

Privilege Escalation
En esta tarea nos piden tres cosas:
- Busca archivos con permisos SUID, ¿cuál es raro?

Hay muchos archivos pero python no suele tener permisos SUID, es raro.
- Encuentra una forma de escalar tus privilegios.
Buscamos por Python en el apartado SUID en la página GTFOBins.

Encontramos una forma de conseguir una shell. Como se ejecuta con SUID, obtendremos la shell de root.

Lo usamos y conseguimos la shell de root.

- La flag
root.txt.
Buscamos el archivo y lo leemos.

