{"url":"https://writeups.es/writeups/dockerlabs/duque/WaterRessistan","machine":{"name":"Duque","slug":"duque","platform":"DockerLabs","platform_slug":"dockerlabs","difficulty":"facil","difficulty_label":"Fácil","operating_system":["Linux"],"tags":["web","fuzzing","linux","sqli"],"original_url":"https://dockerlabs.es","all_writeups":"https://writeups.es/maquinas/dockerlabs/duque"},"author":{"nickname":"WaterRessistan","url":"https://writeups.es/u/WaterRessistan","bio":null},"summary":null,"outline":[],"cves":[],"code_languages":[],"stats":{"words":574,"reading_minutes":3,"votes":1},"content_markdown":"Writeup: Máquina \"Duque\" (DockerLabs)\n1. Reconocimiento y Escaneo\nComenzamos realizando el despliegue de la máquina vulnerable mediante el script de automatización provisto (auto_deploy.sh) junto con el archivo comprimido duque.tar. El script nos confirma que la máquina ha sido levantada de manera correcta y se le ha asignado la dirección IP 172.17.0.2.  \n\n\nPara identificar los servicios activos dentro del objetivo, lanzamos un escaneo completo de puertos mediante la herramienta Nmap utilizando el comando nmap -p- -T4 172.17.0.2. El resultado del escaneo reporta los siguientes puertos abiertos:  \nPDF\n\n\nPuerto 22/tcp: Servicio de acceso remoto SSH.  \nPuerto 80/tcp: Servicio web HTTP.  \n\n\n2. Enumeración Web\nAl acceder a la dirección IP a través del navegador web , visualizamos el sitio web principal de una empresa ficticia denominada NaturGas Solutions.  \n\n\nCon el objetivo de descubrir rutas ocultas en el servidor web, se realiza un proceso de fuerza bruta sobre los directorios. Esta acción permite el hallazgo de la ruta /bills/, la cual aloja un formulario correspondiente al \"Sistema de Facturación\". Al realizar pruebas básicas sobre los campos de este formulario, se determina que el parámetro de autenticación es vulnerable a Inyección SQL (SQL Injection).  \n\n\n\nLogramos evadir el mecanismo de autenticación del formulario introduciendo la siguiente consulta maliciosa en el cuadro de texto del usuario:  \nPDF\n\nSQL\n' OR id=3--\n3. Fuzzing y Descubrimiento de Parámetros\nUna vez vulnerado el inicio de sesión, el sitio nos redirige hacia el Panel de Gestión de Facturas , una sección diseñada para la visualización de comprobantes basándose en un identificador numérico enviado mediante el parámetro id.  \nPDF\n\nDado que la interfaz solo expone un par de facturas por defecto , intuimos la existencia de otros registros ocultos en la base de datos. Para automatizar la búsqueda de identificadores válidos, utilizamos la herramienta ffuf con el fin de realizar fuzzing sobre el parámetro id y descartar las respuestas genéricas filtrando por su tamaño (Size):  \nPDF\n\nBash:\nffuf -u \"http://172.17.0.2/bills/panel.php?id=FUZZ\" -w diccionario_xya.txt -H \"Cookie: PHPSESSID=3us9avkmh1913nd3tnrob7ea5p\" -fs 5906\nEl diccionario empleado analiza múltiples combinaciones , obteniendo respuestas exitosas con un tamaño de respuesta distinto (como el valor xyc724 que devuelve un Size de 5994).  \n\n\n\n4. Acceso Inicial (Post-Explotación)\nAl examinar detalladamente el contenido de las nuevas facturas descubiertas mediante el fuzzing , localizamos una sección que expone de forma explícita credenciales de acceso:  \n\nUsuario: duque   \n\nContraseña: duquelaje81029557!   \n\nAprovechando que el puerto 22 (SSH) se encuentra abierto en la máquina objetivo , procedemos a establecer una conexión remota utilizando el usuario del sistema llamado duque:  \n\n\n\nBash\nssh duque@172.17.0.2\nTras ingresar la contraseña obtenida (1724) , validamos el acceso y obtenemos una consola interactiva dentro del contenedor de Ubuntu.  \n\n\n5. Escalada de Privilegios\nCon el acceso inicial consolidado bajo el usuario duque , iniciamos la búsqueda de vectores que nos permitan elevar privilegios hacia el usuario administrador. Para ello, auditamos el sistema en busca de binarios con el bit SUID activo mediante el siguiente comando:  \n\n\nBash\nfind / -perm -4000 2>/dev/null\nEl comando devuelve un listado de ejecutables del sistema , entre los cuales destaca de manera inusual el binario estándar env.  \n\n\nDebido a que /usr/bin/env posee permisos SUID heredados , podemos aprovecharnos de su comportamiento para invocar una nueva shell preservando los privilegios del propietario del archivo (en este caso, root). Ejecutamos la siguiente sintaxis:  \n\n\nBash\nenv /bin/sh -p\nAl consultar la identidad actual en la terminal con el comando whoami, el sistema nos confirma que nos hemos convertido con éxito en el usuario root, logrando el control total de la máquina\n\n","published_at":"2026-05-23T16:37:20.078891+00:00","updated_at":"2026-08-14T18:15:44.659871+00:00","license":"CC BY-SA 4.0","attribution":"Writeup de WaterRessistan publicado en writeups.es — https://writeups.es/writeups/dockerlabs/duque/WaterRessistan"}