WriteUps Upload
Este WriteUp documenta la solución para la máquina “Upload” de DockerLabs. A través de varias etapas de reconocimiento, explotación y elevación de privilegios, el objetivo es obtener acceso a la máquina y escalar privilegios para convertirnos en el usuario root.
Resumen:
- Nombre: Upload
- Sistema Operativo: Linux
- Dificultad: Muy fácil
- Autor: ElPinguinoDeMario
- Enlace: Dockerlabs
Progreso del WriteUp
- Reconocimiento inicial
- Análisis del servicio
- Explotación de formulario
- Escalada de privilegios
- Aprendizaje
- Comandos
Reconocimiento inicial
El primer paso consiste en iniciar la máquina. Esto se puede lograr ejecutando el siguiente comando, una vez que se haya descargado la máquina:
Una vez iniciada la máquina, el script de despliegue me proporciona la dirección IP de la máquina, por lo que procedo a realizar un escaneo de puertos para identificar los servicios disponibles:
El resultado del escaneo de puertos fue:
Resultado clave: El escaneo de puertos reveló un servicio importante:
- Puerto 80: Servicio HTTP abierto.
Análisis del servicio
Al visitar la dirección IP de la máquina desde el navegador, encontré un formulario para cargar archivos, lo cual tiene lógica con el nombre de la máquina “Upload”. Para asegurarme de no pasar por alto ninguna información relevante, inspeccioné el código fuente de la página, pero no encontré nada fuera de lo común.
Explotación de formulario
Noté que no existía un filtrado de la extensión del archivo a cargar, lo que permitía cargar cualquier archivo sin importar la extensión. Decidí cargar un archivo PHP de pentestmonkey para obtener una reverse shell. Pentestmonkey es una herramienta útil durante pruebas de seguridad en las que se tiene acceso para subir archivos a un servidor web con PHP, permitiendo establecer una conexión desde el servidor hacia una dirección y puerto especificados.
Subí el archivo PHP modificado, pero necesitaba conocer el directorio donde se almacenaban los archivos cargados. Utilicé dirbuster
para realizar una enumeración y encontré que el directorio se llamaba uploads
.
Ingresando desde el navegador a la dirección http://172.17.0.2/uploads/pentestmonkey.php
, logre obtener una reverse shell, poniéndome previamente a la escucha con netcat usando el comando:
Con esto, logre acceder a la máquina con el usuario www-data
. El siguiente paso era elevar privilegios o pivotear a otro usuario.
Escalada de privilegios
Para conocer los usuarios que se encontraban en el sistema, utilicé el comando compgen -u
, pero me di cuenta de que no existía otro usuario. Por lo tanto, procedí directamente a escalar privilegios con el usuario www-data
.
Ejecuté el comando sudo -l
para ver qué permisos tenía el usuario y obtuve el siguiente resultado:
Procedí a consultar GTFOBinspara ver cómo elevar privilegios utilizando env
con sudo
. Según la información de GTFOBins, si ejecutaba el siguiente comando, lograría obtener acceso como root
:
Aprendizaje
La máquina Upload me permitió practicar técnicas de reconocimiento y explotación, especialmente aprovechando vulnerabilidades de formularios de carga sin filtros adecuados. Además, la escalada de privilegios a través de permisos mal configurados en el comando env
subraya la importancia de aplicar correctamente los principios de mínimo privilegio y seguridad.
Comandos
- Despliegue de la máquina:
- Escaneo de puertos:
- Enumeración de directorios con dirbuster:
- Escucha con netcat:
- Escalada de privilegios con
env
: