Express
Máquina Express de DockerLabs
Autor: d1se0
Dificultad: Medio

Reconocimiento
Comenzaremos con un escaneo de nmap:
Tenemos 2 puertos abiertos:
•Puerto 22: OpenSSH 9.6p1 Ubuntu
•Puerto 80: Apache httpd 2.4.58
Puerto 80
Al entrar en la web no veo nada interesante por lo que paso directamente a hacer fuzzing con feroxbuster:
luego de esperar un rato, pruebo en poner el dominio "express.dl" en el /etc/hosts y encuentro una página distinta.
Al realizar fuzzing, encuentro una carpeta llamada "binary", la cual contiene un binario llamado "game", este me lo descargo y veo que es un ejecutable de 64 bites.
Ingeniería inversa
En esta parte, decido depurar el binario usando ghidra, y veo que en la función main hace 100 preguntas sobre un numero aleatorio, y a este lo genera usando una semilla basada en tiempo. En este punto podriamos hacer 2 cosas:
en mi caso hice las 2 xD pero solo voy a mostrar la 2, ya que es lo mas sencillo.
Cuando estemos en la función hidden_key, veremos lo siguiente:

como vemos en "local_28", "local_20", etc. Estas variables contienen la contraseña al inverso, por lo que luego de extraer el texto de todas, me encuentro con la siguiente contraseña:
Intrusión
Ahora solo nos quedaría usar hydra para intentar adivinar el usuario:

ya tenemos credenciales.
Escalada De Privilegios
Admin
Si ejecutamos sudo -l, veremos que podemos ejecutar como cualquier usuario (incluyendo root) un script de python, el cual no tiene una función muy interesante pero importa varias cosas, por lo que por ahi podríamos intentar escalar. Luego de revisar cada uno:
veo que "pytest.py" tenemos permisos de escritura, ya que estamos en su grupo, por lo lo editaremos con nano poniendo el siguiente contenido:
luego ejecutamos el script
y ya seremos root.
Root

Gracias por leer ;)
Última actualización