# Granny

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FEf3Fgg41UQHdF6ZF7b09%2FGranny.png?alt=media&#x26;token=abbd4bbf-8090-4fcc-8819-806e3c5c787f" alt=""><figcaption></figcaption></figure>

CTF Granny, máquina Windows fácil que involucra el uso webshells. Vamos a utilizar WebDAV para obtener una shell en el objetivo. WebDav bloquea las cargas de aspx, pero no va a impedir cargar  un archivo txt y luego usar HTTP Move para modificar la extensión del archivo a un aspx.&#x20;

### Enumeración

#### NMAP

Comenzamos realizando un escaneo rápido de los puertos que tiene abiertos la máquina víctima.&#x20;

```
nmap -p- --open -vvv -Pn -n --min-rate 2000 10.10.10.15
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FsS2GAcuosBHBravReXif%2Fimage.png?alt=media&#x26;token=999a0ba7-a426-4a67-8b3d-acb774c5ad51" alt=""><figcaption></figcaption></figure>

Únicamente está abierta el puerto 80 TCP en la máquina objetivo.&#x20;

```
nmap -p80 -sVC -vv 10.10.10.15
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fp84YS8OzqS9BoGgrx7T3%2Fimage.png?alt=media&#x26;token=be639ed2-f121-40d8-89c5-86a257796c61" alt=""><figcaption></figcaption></figure>

Un servicio abierto:

* Puerto 80 -> Microsoft IIS httpd 6.0

#### Enumeración web

Vamos a ver el contenido del puerto 80 en el navegador web.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FULh3NjQ7tN9I37v0ukbA%2Fimage.png?alt=media&#x26;token=58b74ae4-58b2-4664-9dbe-a0be01113643" alt=""><figcaption></figcaption></figure>

En el puerto 80, solo encontramos una página web por defecto.&#x20;

Como podemos ver en el resultado del NMAP, tenemos un webdav, así que después de mirar la web vamos a usar **davtest** y **cadaver** para enumerarlo.

#### Enumerando webdav

Primero enumeramos el webdav para ver qué tipos de extensiones de archivos se aceptan.&#x20;

```
davtest -url http://10.10.10.15/ 
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWdXSwwCKKLgc9FQQMvvx%2Fimage.png?alt=media&#x26;token=15879f1d-b98e-43be-b947-6199acb0854c" alt=""><figcaption></figcaption></figure>

Ya sabemos que podemos cargar archivos txt. Vamos a cambiar el nombre de shell.aspx a shell.txt y cuando lo carguemos, le cambiamos el nombre con cadáve&#x72;**.**&#x20;

```
cadaver 10.10.10.15
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F6SmurKUqoswYSvwudQmI%2Fimage.png?alt=media&#x26;token=469ff283-c824-458e-9130-1de285f5733b" alt=""><figcaption></figcaption></figure>

#### Usuario Network Service

En el directorio que iniciamos cadaver tenemos que descargar una reverse shell con extensión aspx. Vamos a utilizar [este](https://github.com/borjmz/aspx-reverse-shell/blob/master/shell.aspx). Debemos adaptar la IP y el puerto de la shell.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FQALvUEPaZrOEzQTCcnPz%2Fimage.png?alt=media&#x26;token=52a85ae1-bceb-4a8e-8d64-e3bbb1a6aa8b" alt=""><figcaption></figcaption></figure>

Modificamos la extensión de shell para enviarla a la máquina víctima.&#x20;

```
upload shell.txt
mv shell.txt shell.aspx
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FPpkPwQmaiMcwWmwa9E2R%2Fimage.png?alt=media&#x26;token=285d6c8d-b24f-4f1f-9ace-e685abfdb724" alt=""><figcaption></figcaption></figure>

Debemos habilitar un oyente de netcat y ejecutar la página web en el explorador. Tras esto, deberíamos obtener shell reversa.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FS43ZglC85wYR6nbDUn7J%2Fimage.png?alt=media&#x26;token=e63ed24b-2563-4309-9362-92574a3edf1c" alt=""><figcaption></figcaption></figure>

No tenemos permisos para visualizar la flag user.txt. Debemos seguir elevando privilegios.&#x20;

### Elevación de privilegios

Primero lanzamos un **systeminfo** para conocer información de la máquina.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FfBQ0jWimkR2XvLiy8Fry%2Fimage.png?alt=media&#x26;token=fd9ff12f-f69a-4667-8534-6ac600468aa7" alt=""><figcaption></figcaption></figure>

A continuación, vamos a ejecutar un **whoami /all** para enumerar los privilegios del usuario que tenemos actualmente.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FmqDNFsIk82BOXTahzOv4%2Fimage.png?alt=media&#x26;token=34cb5938-4791-4501-9ff0-1c983b34c011" alt=""><figcaption></figcaption></figure>

Sabiendo que el servidor es Windows 2003 y tenemos SeImpersonatePrivilege habilitado, tal vez podamos usar Juicy Potato. Se cumplen los requisitos previos para JuicyPotato, pero pero como la versión del servidor es más antigua que el soporte para el exploit JuicyPotato, usaremos una versión diferente llamada **churrasco.exe** que podemos usar en Server 2003 y Windows XP. En la siguiente [guía](https://binaryregion.wordpress.com/2021/08/04/privilege-escalation-windows-churrasco-exe/) hay más información.&#x20;

Vamos a descargar el exploit churrasco.exe y nc.exe, y los subimos a la máquina víctima. Recordemos, que hay que cambiar la extensión a estos archivos por txt para poder enviarlos a la máquina objetivo. Posteriormente, las volveremos a cambiar.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FRjAiUmFyscwxlcTgjo1B%2Fimage.png?alt=media&#x26;token=242bcdd1-f832-4b4c-a87d-f3f5563e44c9" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWqn1evBBl7QWEPK2i10P%2Fimage.png?alt=media&#x26;token=7de400e0-73f5-470a-83f8-2f0b2f324669" alt=""><figcaption></figcaption></figure>

Ejecutamos el siguiente comando en la terminal de la máquina víctima.&#x20;

```
C:\WINDOWS\system32>C:\Inetpub\wwwroot\churrasco.exe C:\WINDOWS\system32\cmd.exe
```

Tras la ejecución del comando, tendriamos privilegios máximos.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FCM87ke9z7mj2huuNT0Rd%2Fimage.png?alt=media&#x26;token=34f4e142-0c8e-43e8-b390-fafff8943537" alt=""><figcaption></figcaption></figure>

Vamos a buscar las flags root.txt y user.txt

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FovunqtzM73hLXxmVNSXM%2Fimage.png?alt=media&#x26;token=99310bb8-3dbc-4cf8-ad55-104951d3e468" alt=""><figcaption><p>Flag root.txt</p></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FYxLvkSZVOkiZtfmaE1a5%2Fimage.png?alt=media&#x26;token=31c36ea4-bff6-466f-bfda-2e370b4eed1d" alt=""><figcaption><p>Flag user.txt</p></figcaption></figure>

Y ya tendriamos el CTF Granny resuelto.&#x20;

{% embed url="<https://www.youtube.com/watch?v=d1YHfD1KoUg>" %}
