Wakanda
✍️ Autor: xMagass🔍 Dificultad: Intermedio📅 Fecha de creación: 05/08/2019
Last updated
✍️ Autor: xMagass🔍 Dificultad: Intermedio📅 Fecha de creación: 05/08/2019
Last updated
En primer lugar, tras conectarnos a la máquina, utilizamos el comando:
para verificar la conectividad de red.
A continuación, se realiza el comando:
para realizar un escaneo de puertos y servicios detallado en la dirección IP.
Como podemos observar durante el escaneo, los puertos 80, 111, 3333 y 35263 están abiertos. El puerto 80 pertenece al servicio HTTP, lo que indica la presencia de un servidor web. El puerto 111 está asociado con el servicio rpcbind, comúnmente utilizado para gestionar servicios RPC (Remote Procedure Call). El puerto 3333 corresponde al servicio dec-notes, mientras que el puerto 35263 está identificado como un servicio desconocido.
Se utiliza el comando:
para obtener más información sobre ese puerto específicamente.
Seguimos indagando más sobre los puertos y ahora exploramos el servicio HTTP. Se ingresó la dirección IP en el navegador, lo que llevó a que la página web sobre una página de una tienda de Vibranium.
Ahora buscaremos directorios con la herramienta Gobuster a través de:
Vemos que hay un archivo secret.txt
por lo que accederemos a él aunque no hay nada interesante solo nos estaban vacilando. También muchos directorios tienen tamaño 0 así seguimos indagando.
Ahora buscaremos exploits con la herramienta Searchsploit a través de:
No obtenemos algo relevante por lo que probamos indagar SSH. No tuvimos suerte probando contraseñas comunes.
Revisamos el código fuente por si hay alguna información relevante que se nos haya escapado.
Hay una sección de código comentada que incluye un parámetro ?lang=fr
, que probablemente se utiliza para cambiar el idioma a francés. Vamos a probar esto.
Una vez que el texto se ha convertido correctamente al francés, procederemos a verificar si el parámetro lang
es vulnerable a la inclusión de archivos locales (LFI), con el objetivo de acceder al archivo index.php
. Para obtener más información y técnicas sobre cómo realizar este tipo de pruebas, puedes consultar la siguiente página: Guía sobre Inclusión de Archivos.
Después de numerosos intentos, logramos explotar la vulnerabilidad de inclusión de archivos locales (LFI) utilizando la función php://filter/convert.base64-encode/resource=index
, lo que nos permitió acceder a la página de índice.
Creamos un archivo utilizando la cadena codificada y luego procedemos a decodificarlo empleando un decodificador Base64.
Al decodificar la cadena codificada en Base64, descubrimos la contraseña la cual, junto con la información de que mamadou es el autor, nos permite iniciar sesión a través de SSH en la máquina objetivo.
Al acceder, obtenemos un aviso del IDE de Python. Para cambiar a un shell Bash, importamos el módulo pty
y lanzamos un shell de /bin/bash
.
Esta es la primera flag pero nos faltan dos.
Sin embargo, no podemos acceder al archivo porque está propiedad de otro usuario llamado devops
. Necesitamos elevar nuestros privilegios al usuario devops
para poder acceder al archivo.
Primero, examinemos los tipos de usuarios presentes en el sistema.
Para escalar privilegios, debemos identificar un archivo que sea propiedad del grupo devops
y que pueda ser ejecutado por el usuario mamadou
. Si existe tal archivo, podríamos usarlo para elevar nuestros privilegios.
Primero, obtengamos información sobre el sistema:
Ahora, busquemos todos los archivos que sean propiedad del usuario devops
.
Hemos encontrado un archivo interesante llamado /srv/.antivirus.py
al que podemos acceder, además de los archivos que ya hemos encontrado. Procedamos con su análisis.
Editamos el archivo ".antivirus.py"
para que contenga lo siguiente:
Hicimos un intento de modificar el script de Python para acceder a flag2.txt
, pero actualmente no tenemos los permisos necesarios para el directorio /tmp/test
.
Sin embargo, dado que podemos ejecutar el script con éxito, procederemos a intentar una shell reversa en Python.
El script se ejecutó con éxito, pero solo obtuvimos conexiones como el usuario mamadou
. Es posible que el script se ejecute automáticamente como un trabajo cron bajo el usuario devops
. Vamos a esperar un breve periodo de tiempo mientras escuchamos las conexiones.
Al ejecutar el script, obtuvimos una shell reversa. Es probable que un crontab o un cronjob sea el responsable de esta ejecución.
Hemos conseguido nuestra segunda bandera. Ahora, para obtener la bandera de root, necesitamos escalar nuestros privilegios nuevamente para convertirnos en usuario root.
Primero, verifiquemos los permisos que tenemos como usuario devops
con el siguiente comando:
El comando pip
actúa como un gestor de paquetes de Python. Vamos a aprovechar una vulnerabilidad en pip
.
Existen scripts como Fakepip
que se pueden utilizar para explotar esta vulnerabilidad. Puedes encontrar el script FakePip
en el siguiente repositorio de GitHub.
Para transferir el archivo setup.py
al equipo objetivo, sigue estos pasos:
En la máquina local
Copia el archivo setup.py
al directorio raíz del servidor web Apache:
Inicia el servicio Apache:
Abre un puerto para escuchar conexiones entrantes en la máquina local:
En la máquina objetivo
Descarga el archivo setup.py
desde el servidor Apache:
Instala el archivo usando pip
, asegurándote de forzar la reinstalación y actualización:
Hemos completado con éxito todas las etapas del proceso y cumplido con todos los requisitos.