Upload
Last updated
Last updated
Realizaremos la primera fase del reconocimiento utilizando la herramienta Nmap, con los siguientes parámetros:
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG AllPorts
sudo nmap -sC -sV -p80 172.17.0.2 -oN Targeted
Este escaneo de Nmap ha revelado información valiosa sobre el servidor objetivo, incluyendo el servicio en ejecución, su versión especÃfica, el tÃtulo de la página web y detalles sobre el sistema operativo subyacente.
Ejecutamos un escaneo con WhatWeb para identificar las tecnologÃas que sustentan la página web. Además, observamos que el tÃtulo de la página es "Upload here your file".
Revisando la página web que se está ejecutando en el servicio HTTP del puerto 80, hemos encontrado un panel de subida de archivos.
Al realizar fuzzing web, descubrimos un directorio llamado /uploads.
Se ha encontrado un Directory Listing. Ahora que conocemos dónde se suben los archivos al servidor, podemos realizar diversas pruebas de carga de archivos para verificar si alguna extensión está excluida o sanitizada por el desarrollador.
Podemos observar que al archivo se ha subido correctamente.
Nos ponemos a la escucha con netcat y ejecutamos el archivo revshell.php
. Configuramos netcat en modo escucha y ejecutamos el archivo revshell.php
. Para poner netcat a la escucha en el puerto deseado, utiliza el siguiente comando con privilegios sudo:
sudo nc -lvnp 443
Cuando obtienes una shell interactiva como el usuario por defecto de Apache (www-data
), es importante ajustar la TTY para mejorar la interactividad y evitar que la shell se rompa al ejecutar ciertos comandos como Ctrl+L
.
Al ejecutar sudo -l
, hemos identificado que el usuario www-data puede ejecutar el binario /usr/bin/env como Root sin necesidad de proporcionar una contraseña.
Ejecutamos la siguiente linea:
sudo -u root /usr/bin/env /bin/bash -p
sudo
: Permite ejecutar comandos con privilegios de otro usuario, en este caso root
.
-u root
: Especifica que el usuario con el que se ejecutará el comando es root
.
/usr/bin/env
: Es un comando utilizado para ejecutar un programa con un entorno modificado.
/bin/bash -p
: Especifica que se debe iniciar /bin/bash
con los privilegios de shell.
Ganamos acceso como usuario Root.
Durante esta prueba de penetración, exploramos vulnerabilidades en un servidor que permitieron la subida de archivos con extensión PHP y el acceso a un Directory Listing. Utilizando estos vectores de ataque, identificamos una configuración insegura donde el usuario www-data podÃa ejecutar el binario /usr/bin/env como root sin necesidad de contraseña. Esta situación nos permitió ganar acceso completo como usuario root, destacando la importancia crÃtica de asegurar la configuración de permisos y la gestión adecuada de archivos en los servidores.
whatweb
Nos dirigimos a la página web donde utilizaremos la clásica reverse shell de PentestMonkey. Creamos un archivo con extensión .php y lo subimos. Como mencioné anteriormente, es crucial realizar pruebas para asegurarnos de que la extensión no esté excluida y sea interpretada correctamente por el servidor.
Verificamos la página web , la cual proporciona información detallada sobre cómo abusar del binario /usr/bin/env.