🟠SoSimple
Write-up de la máquina SoSimple de Proving Grounds #writeup #walkthrough
Last updated
Write-up de la máquina SoSimple de Proving Grounds #writeup #walkthrough
Last updated
Vamos a comenzar la resolución del CTF SoSimple enumerando los puertos que tiene la máquina abiertos. Comenzamos por una enumeración rápida de los servicios.
Dos puertos abiertos: 22 y 80. Veamos que versiones se están ejecutando.
Servicios abiertos:
Puerto 22 -> SSH -> OpenSSH 8.2
Puerto 80 -> HTTP -> Apache httpd 2.4.41
La máquina víctima está ejecutando un servicio Web en el puerto 80. Vamos a ver el contenido del sitio Web.
No hay gran cosa en el sitio Web, más allá de esta imagen. El siguiente paso será la enumeración de directorios y archivos.
Existe un directorio /wordpress. Vamos a ver su contenido.
Parece que estamos ante un CMS WordPress. Podemos utilizar la herramienta wp-scan para tratar de extraer más infomración de este CMS.
Encontramos el nombre de dos usuarios del CMS: admin y max.
Vamos a realizar un ataque de fuerza bruta para tratar de encontrar la password de los usuarios admin y max. Para ello, volvemos a utilizar wp-scan.
La primera información interesante que nos devuelve es la ejecución del plugin social-warfare
También encontramos la contraseña del usuario max, opensesame.
Haciendo uso de las credenciales obtenenidas, vamos a tratar de iniciar sesión en el panel de administrador del CMS.
Una vez que proporcionamos las credenciales y pulsamos el botón de confirmación, logramos acceder al perfil de Max. Intentamos subir una shell desde este punto para tener control de los comandos del sistema objetivo, sin embargo, el intento no tuvo éxito.
Durante el proceso de enumeración, también encontramos algunos complementos vulnerables, así que intentemos identificar las vulnerabilidades en estos complementos. Buscamos la versión del complemento en Google y encontramos un exploit de ejecución de código remoto para el complemento instalado, como se puede ver en la captura de pantalla que aparece a continuación.
Investigamos el exploit y descubrimos que hay ciertos pasos que deben seguirse para ejecutarlo con éxito.
Creamos un archivo llamado payload.txt con el siguiente contenido.
El siguiente paso será levantar un servidor http con Python para poder enviar el archivo al sistema víctima.
También levantaremos un oyente nc en el puerto indicado en la shell.
Después de seguir todos estos pasos, deberemos ejecutar la URL que se indica en el exploit anterior, cargando el payload que hemos generado.
Después de ejecutar esto, ya tendremos conexión con la máquina objetivo.
Vamos a tratar de buscar la flag local.txt
Vamos al directorio /home, para ver que usuarios tiene el sistema.
Dos usuarios en el sistema. Vamos a enumerar el contenido de ambos usuarios de la siguiente manera:
Encontramos los siguientes archivos que pueden ser interesantes. Todos son rabbits hole exceptuando aquellos del usuario max relacionados con SSH. Vamos a copiar la id_rsa del usuario max para tratar de conectarnos a la máquina víctima con este usuario a través de SSH.
Ahora tratamos de conectarnos a través de SSH de la siguiente manera:
Ya tenemos conexión en la máquina objetivo como usuario max.
Una vez nos conectamos a la máquina como usuario max, vamos a tratar de elevar privielgios. Comenzamos con sudo -l para enumerar que puede ejecutar el usuario max como root sin contraseña.
Interesante, podemos ejecutar el binario service pero como usuario steven, lo que nos puede servir para pivotar hacia este usuario.
Ya como usuario steven, vamos a volver a enumerar vectores de elevación de privilegios.
El usuario steven puede ejecutar la aplicación server-health.sh como root. Veamos como podemos elevar privilegios aprovechando este vector.
Si tratamos de buscar el archivo, vemos que no existe.
Veamos los permisos de esa carpeta.
El usuario steven tiene acceso de escritura en el directorio /opt , por lo que únicamente debemos crear el archivo y luego, ejecutarlo como root.
Solo quedará buscar la flag root para finalizar la resolución de este CTF.