[HTB write-up] Sense

La máquina "SENSE" se retiró hace tiempo así que podemos hablar con total libertad sobre la forma de conseguir sus flags.

Como ya sabes, Hackthebox es un sitio donde hay todo tipo de máquinas virtuales vulnerables para practicar pentesting sin tener que hacer informes como lo haría un pentester en la vida real.

Estaba intrigado por el nombre de la máquina y por el sistema operativo. Me preguntaba si podría ser un firewall. Pensé que podía ser PFSENSE (OpenSource Firewall) y en realidad las letras "PF" fueron retiradas ;)

El LOGO de la máquina
La dirección de la máquina destino es la 10.10.10.60.

Enumeración

Escaneo de puertos

En esta parte vamos a encontrar los puertos y servicios de nuestro objetivo.

nmap 10.10.10.60
Starting Nmap 7.40 ( https://nmap.org ) at 2018–03–08 16:17 CET
Nmap scan report for 10.10.10.60
Host is up (0.079s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https

Escaneo de versiones

nmap -sV 10.10.10.60
Starting Nmap 7.40 ( https://nmap.org ) at 2018–03–08 16:22 CET
Nmap scan report for 10.10.10.60
Host is up (0.053s latency).Not shown: 998 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http lighttpd 1.4.35
443/tcp open ssl/http lighttpd 1.4.35

También comprobé la versión del servidor web con el comando curl:

curl -I 10.10.10.60
HTTP/1.1 301 Moved Permanently
Location: https://10.10.10.60/
Date: Thu, 08 Mar 2018 15:52:44 GMT
Server: lighttpd/1.4.35

Luego usé Metasploit para tener organizados mis escaneos. Es muy útil para manejar las máquinas, así que lo importé todo y trabajé con ello:

db_nmap -O 10.10.10.60
[*] Nmap: Starting Nmap 7.01 ( https://nmap.org ) at 2018–03–14 16:32 CET
[*] Nmap: Nmap scan report for 10.10.10.60
[*] Nmap: Host is up (0.031s latency).
[*] Nmap: Not shown: 998 filtered ports
[*] Nmap: PORT STATE SERVICE
[*] Nmap: 80/tcp open http
[*] Nmap: 443/tcp open https
[*] Nmap: Warning: OSScan results may be unreliable because we could not find at
least 1 open and 1 closed port
[*] Nmap: Device type: general purpose|specialized
[*] Nmap: Running (JUST GUESSING): OpenBSD 4.X (93%), Comau embedded
(92%), FreeBSD 6.X (89%), Linux 2.6.X (89%)
[*] Nmap: OS CPE: cpe:/o:openbsd:openbsd:4.0 cpe:/o:freebsd:freebsd:6.3
cpe:/o:linux:linux_kernel:2.6.29
[*] Nmap: Aggressive OS guesses: OpenBSD 4.0 (93%), Comau C4G robot control unit
(92%), FreeBSD 6.3-RELEASE (89%), Linux 2.6.29 (89%), OpenBSD 4.3 (85%)
[*] Nmap: No exact OS matches for host (test conditions non-ideal).
[*] Nmap: OS detection performed. Please report any incorrect results at
https://nmap.org/submit/ .
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 14.27 seconds

Después, verifiqué mis hallazgos abriendo mi navegador para ver cómo era.

Captura del acceso a pfsense
El siguiente paso en este punto es intentar entrar a la interfaz de administración. Busqué credenciales predeterminadas para probar (admin/password), pero no funcionó. Entonces, ¿qué es lo que hay que hacer?

¿Buscar posibles vulnerabilidades? OK, vamos a ello. Podría ayudarnos;) no estoy seguro.

nmap -sV --script_vuln 10.10.10.60
|_http-server-header: lighttpd/1.4.35
| ssl-ccs-injection:
| VULNERABLE:
| SSL/TLS MITM vulnerability (CCS Injection)
| State: VULNERABLE
| Risk factor: High
| OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h
| does not properly restrict processing of ChangeCipherSpec messages,
| which allows man-in-the-middle attackers to trigger use of a zero
| length master key in certain OpenSSL-to-OpenSSL communications, and
| consequently hijack sessions or obtain sensitive information, via
| a crafted TLS handshake, aka the “CCS Injection” vulnerability.
|
| References:
| http://www.openssl.org/news/secadv_20140605.txt
| http://www.cvedetails.com/cve/2014-0224
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0224
| ssl-dh-params:
| VULNERABLE:
| Diffie-Hellman Key Exchange Insufficient Group Strength
| State: VULNERABLE
| Transport Layer Security (TLS) services that use Diffie-Hellman groups
| of insufficient strength, especially those using one of a few commonly
| shared groups, may be susceptible to passive eavesdropping attacks.
| Check results:
| WEAK DH GROUP 1
| Cipher Suite: TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
| Modulus Type: Non-safe prime
| Modulus Source: RFC5114/1024-bit DSA group with 160-bit prime order subgroup
| Modulus Length: 1024| Modulus Length: 1024
| Generator Length: 1024
| Public Key Length: 1024
| References:
|_ https://weakdh.org
| ssl-poodle:
| VULNERABLE:
| SSL POODLE information leak
| State: VULNERABLE
| IDs: CVE:CVE-2014-3566 OSVDB:113251
| The SSL protocol 3.0, as used in OpenSSL through 1.0.1i and other
| products, uses nondeterministic CBC padding, which makes it easier
| for man-in-the-middle attackers to obtain cleartext data via a
| padding-oracle attack, aka the “POODLE” issue.
| Disclosure date: 2014–10–14
| Check results:
| TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014–3566
| http://osvdb.org/113251
| https://www.openssl.org/~bodo/ssl-poodle.pdf
|_ https://www.imperialviolet.org/2014/10/14/poodle.html
|_sslv2-drown:

Nada interesante grrr. Simplemente nos dice las debilidades de la implementación de SSL.   


Posteriormente, estuve dándole vueltas durante mucho tiempo y al principio traté de encontrar el "Username" y la "Password". Para hacer eso, hice fuerza bruta en la URL. Pero, esta acción también me mostró
muchos archivos, y finalmente, seguí al conejo blanco hasta la madriguera...

¡Tomé una taza de café y finalmente encontré la respuesta! Y si pudiera ser solo un puto archivo de texto ...

Enumeración adicional

Solo quería buscar archivos de texto ... Así que lo hice con DirBuster.

Fuerza bruta en progreso
La meta
Después de un largo tiempo escaneando, se encontró el archivo mágico. Es "system-users.txt". El otro no importa en absoluto. Así que ponemos la ruta y encontramos lo que buscamos.

Credenciales
Entonces, tenemos nuestro nombre de usuario que es "Rohit" y la contraseña que debe ser "Pfsense".

Recapitulando
  • nombre de usuario: Rohit
  • contraseña: pfsense
Entonces, los probamos a ver qué pasa.

Acceso a la administración del firewall

Eso es genial, ¿no? Estamos dentro.


Ok, por ahora, estamos conectados al firewall de Pfsense con la cuenta de usuario. ¿Qué hacer a continuación?.

Debilidades del sistema

Tenemos acceso en el panel de administración, eso es genial. Entonces, vamos a buscar una vulnerabilidad para lograr una intrusión en el sistema.

Después de algunas investigaciones en Internet, la versión de PFSENSE muestra algunas vulnerabilidades. Uno de ellos es muy interesante, ejecuta código remoto.

Para obtener más detalles, consulta el CVE 2014-4688:

CVE-2014-4688 : pfSense before 2.1.4 allows remote authenticated users to execute arbitrary...
CVE-2014-4688 : pfSense before 2.1.4 allows remote authenticated users to execute arbitrary commands via (1) the...
www.cvedetails.com

Al leer los detalles para explotar esta vulnerabilidad, sabemos que debemos tener credenciales de pfsesce. Tenemos algunos exploit en Internet y en el framework de metasploit.

En este POC, usamos metasploit para obtener una shell remota.

Explotación

Vamos a configurar nuestro exploit!

La config del exploit en Metasploit
El exploit funcionando bien
Entonces, entramos en el sistema y obtenemos una sesión de meterpreter. Genial, ¿no?

El próximo y último paso es escalar nuestros privilegios para conseguir las flags. Tenemos 2 flags para encontrar. La de usuario y la de root.

La flag de usuario:

La flag de usuario
La flag de root:

La flag de root
GAME OVER ;)


Contribución gracias a drx51

2 comentarios :

  1. ¡Gran walkthrough! Yo me quedé como el gato, dándome cabezazos contra el login de pfSense.
    Cuando leo estas cosas me siento tonto, porque desde luego enumerar algunas extensions lo debería haber hecho de motu propio. Pero lo que no es un gran éxito es una valiosa lección.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar