---
title: "Writeup Duque — DockerLabs"
machine: "Duque"
platform: "DockerLabs"
difficulty: "Fácil"
operating_system: ["Linux"]
tags: ["web", "fuzzing", "linux", "sqli"]
author: "WaterRessistan"
author_url: "https://writeups.es/u/WaterRessistan"
source: "https://writeups.es/writeups/dockerlabs/duque/WaterRessistan"
license: "CC BY-SA 4.0"
published: "2026-05-23T16:37:20.078891+00:00"
updated: "2026-08-14T18:15:44.659871+00:00"
words: 574
reading_minutes: 3
---# Duque — DockerLabs

Writeup: Máquina "Duque" (DockerLabs)
1. Reconocimiento y Escaneo
Comenzamos 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.  


Para 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:  
PDF


Puerto 22/tcp: Servicio de acceso remoto SSH.  
Puerto 80/tcp: Servicio web HTTP.  


2. Enumeración Web
Al acceder a la dirección IP a través del navegador web , visualizamos el sitio web principal de una empresa ficticia denominada NaturGas Solutions.  


Con 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).  



Logramos evadir el mecanismo de autenticación del formulario introduciendo la siguiente consulta maliciosa en el cuadro de texto del usuario:  
PDF

SQL
' OR id=3--
3. Fuzzing y Descubrimiento de Parámetros
Una 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.  
PDF

Dado 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):  
PDF

Bash:
ffuf -u "http://172.17.0.2/bills/panel.php?id=FUZZ" -w diccionario_xya.txt -H "Cookie: PHPSESSID=3us9avkmh1913nd3tnrob7ea5p" -fs 5906
El 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).  



4. Acceso Inicial (Post-Explotación)
Al 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:  

Usuario: duque   

Contraseña: duquelaje81029557!   

Aprovechando 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:  



Bash
ssh duque@172.17.0.2
Tras ingresar la contraseña obtenida (1724) , validamos el acceso y obtenemos una consola interactiva dentro del contenedor de Ubuntu.  


5. Escalada de Privilegios
Con 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:  


Bash
find / -perm -4000 2>/dev/null
El comando devuelve un listado de ejecutables del sistema , entre los cuales destaca de manera inusual el binario estándar env.  


Debido 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:  


Bash
env /bin/sh -p
Al 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


---

> Writeup de **WaterRessistan** publicado en [writeups.es](https://writeups.es/writeups/dockerlabs/duque/WaterRessistan).
> Si citas este contenido, enlaza a la fuente original.
