> For the complete documentation index, see [llms.txt](https://beafn28.gitbook.io/beafn28/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://beafn28.gitbook.io/beafn28/writeups/hackthebox/starting-point/vaccine.md).

# Vaccine

### 1. 📝 **Introducción**

* **Nivel de Dificultad**: Muy fácil.
* **Tags:**&#x20;

  • **Vulnerability Assessment**: Evaluación sistemática para identificar y clasificar vulnerabilidades en sistemas, aplicaciones o redes.\
  • **Databases**: Repositorios estructurados de datos que pueden ser vulnerables a ataques como SQL injection.\
  • **Custom Applications**: Aplicaciones desarrolladas a medida que pueden contener vulnerabilidades específicas no presentes en aplicaciones comerciales.\
  • **Protocols**: Conjuntos de reglas que permiten la comunicación entre dispositivos, los cuales pueden ser explotados si contienen fallos.\
  • **Source Code Analysis**: Revisión del código fuente para identificar errores o vulnerabilidades de seguridad.\
  • **PostgreSQL**: Sistema de gestión de bases de datos que puede ser explotado mediante ataques como SQL injection.\
  • **FTP**: Protocolo de transferencia de archivos que puede exponer credenciales si no se implementa de manera segura.\
  • **Password Cracking**: Técnica de descifrado de contraseñas mediante ataques de fuerza bruta o diccionario.\
  • **SUDO Exploitation**: Aprovechamiento de configuraciones inseguras de SUDO para escalar privilegios en un sistema.\
  • **SQL Injection**: Inyección de código malicioso en consultas SQL para manipular bases de datos y extraer información.\
  • **Remote Code Execution**: Ejecución de código malicioso de manera remota en un sistema comprometido.\
  • **Clear Text Credentials**: Exposición de credenciales sin cifrado, lo que facilita su robo en tránsito.\
  • **Anonymous/Guest Access**: Permitir acceso sin autenticación o con credenciales por defecto, facilitando ataques.

### 2. 🛠️ **Entorno**

Nos descargamos nuestra VPN y nos conectamos.

```
sudo openvpn nombre_del_archivo.vpn
```

Iniciamos la máquina y verificamos la conexión.

```bash
ping -c 1 10.129.137.77
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FXWl7jI8kDeBikFbQ0eoa%2Fimage.png?alt=media&amp;token=58569ea3-6c6f-4b1b-a663-b7de17f4e5c8" alt=""><figcaption></figcaption></figure>

Observamos que tenemos conexión y que es una máquina **Linux** ya que su **ttl=63**.

### 3. 🔍 **Reconocimiento**

A continuación, se realiza el comando:

```bash
nmap -p- --min-rate 5000 -sV 10.129.137.77
```

para realizar un escaneo de puertos y servicios detallado en la dirección IP.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FqMTXhx4UAamGXDGVCvNl%2Fimage.png?alt=media&amp;token=603f5e3f-3a78-4dc2-966a-cbdbc45729f4" alt=""><figcaption></figcaption></figure>

### 4. 🚪 **Acceso Inicial**

Como podemos observar durante el escaneo que el **puerto 21** perteneciente al **servicio FTP,** el **puerto 22** perteneciente al **servicio SSH**  y el **puerto 80** perteneciente al **servicio HTTP** están abiertos por lo que a continuación se indagará más.

Primero, accedemos a un servidor FTP utilizando el usuario `anonymous`. Esto nos permite descargar un archivo que probablemente está protegido con contraseña.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FOS3Udl9BoK7s7wK3XPRe%2Fimage.png?alt=media&amp;token=2b0405bc-bf8b-4d4d-8a03-cf1c413019b8" alt=""><figcaption></figcaption></figure>

El archivo descargado está protegido con una contraseña. Por lo tanto, necesitamos una herramienta como **John the Ripper** para obtener dicha contraseña.

```bash
zip2john backup.zip > hash.txt
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FyJY7jPYa0U7FnOGMIsxq%2Fimage.png?alt=media&amp;token=35d34c64-98c6-41d5-87e9-94566ddf2982" alt=""><figcaption></figcaption></figure>

John the Ripper es una herramienta muy útil para romper contraseñas de archivos protegidos. Vamos a usarlo en conjunto con `zip2john`, que convierte el archivo comprimido en un formato que **John** pueda procesar.

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FeHTrclhPK7UCIi97x0l2%2Fimage.png?alt=media&amp;token=6ed9c2f9-a567-4bc2-96bb-83ceec1debc9" alt=""><figcaption></figcaption></figure>

Ahora que tenemos la contraseña, podemos descomprimir el archivo protegido.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fr3pf7dIdYQpzcUEX15p9%2Fimage.png?alt=media&amp;token=6f96f95d-b72d-494b-bc71-3571ef395ebb" alt=""><figcaption></figcaption></figure>

Mostramos el contenido del archivo `index.php` en el que se nos indica el nombre del usuario y su contraseña aunque en formato **MD5**.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F89y5xO0vol0QNzYnuRB7%2Fimage.png?alt=media&amp;token=f826d827-9322-4009-9ead-640077b0f93f" alt=""><figcaption></figcaption></figure>

A través de esta página desciframos la contraseña <https://www.dcode.fr/funcion-hash-md5>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FKdGNAvO5JYDeAY4w4XgM%2Fimage.png?alt=media&amp;token=b6f7a10e-82cb-42f4-8b7b-d55708d72602" alt=""><figcaption></figcaption></figure>

Accedemos con las credenciales obtenidas en los pasos anteriores.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FLFSxnK6YB1nI14dzizHH%2Fimage.png?alt=media&amp;token=ec6cae4f-7269-4a21-9ff7-3dd5e802b3f0" alt=""><figcaption></figcaption></figure>

Obtenemos el valor de la cookie de cualquier coche.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F7ENZqCJpyZcAa0EKdPn2%2Fimage.png?alt=media&amp;token=8d76597a-dd87-4ed2-a848-e4e2fea1059a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FPJNSS5RFdzKBJiWI9bV7%2Fimage.png?alt=media&amp;token=45543e48-0bfc-4d2c-beb0-f3689871aa4f" alt=""><figcaption></figcaption></figure>

```bash
sqlmap --url="http://10.129.137.77/dashboard.php?search=meta" --cookie="PHPSESSID=q9uc4eavt4kd65pgi5rc32jvgu" --os-shell
```

No hace falta probar más campos si hemos encontrado ya uno que no es ejecutable. Por lo que usamos una reverse shell.&#x20;

```bash
rlwrap nc -lvnp 443
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FHBKXHY8BkihpjWBqPLFi%2Fimage.png?alt=media&amp;token=ddf98105-5ff4-441c-b8b9-0eb9d22af544" alt=""><figcaption></figcaption></figure>

Tras conseguir la reverse shell y así poder acceder mostramos el contenido del fichero `dashboard.php` en el que se nos muestra un usuario y una contraseña.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FWgFmHYd1wMfDvqyHpDeZ%2Fimage.png?alt=media&amp;token=c040eba6-e4e0-483b-a466-fcdcaf81dd94" alt=""><figcaption></figcaption></figure>

### 5. 🔑 **Captura de la Flag**

Vemos que podemos usar **vi** con permisos de root. Accedemos al directorio `/var/lib/postgresql` en el que encontramos la flag del usuario.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fxz2H5kOdFg1mG82FloZE%2Fimage.png?alt=media&amp;token=5b66c42b-e70c-4845-905f-7cc78bb93327" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fu1Id1Ic6ltD0LgC7Be1c%2Fimage.png?alt=media&amp;token=25d1e7e2-ad55-4c4b-99bb-4852eae51855" alt=""><figcaption></figcaption></figure>

Accedemos a través de **SSH** al usuario con sus credenciales.

```bash
ssh postgres@10.129.137.77
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fz8cOKxC4hcY6tt0z9Dlm%2Fimage.png?alt=media&amp;token=acbc3f48-b2c7-4fde-aa07-4ddc9dff5dc0" alt=""><figcaption></figcaption></figure>

Debemos de modificar el archivo de configuración utilizando **vi**.

```bash
/bin/vi /etc/postgresql/11/main/pg_hba.conf
```

Observamos está página <https://gtfobins.github.io/gtfobins/vi/>. Una vez en **vi**, presiona **escape** y luego escribe `:!/bin/bash`.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FUBRRJWnZsl3cwxsvPeDH%2Fimage.png?alt=media&amp;token=95b31a44-bbff-45f0-a019-34d34fd7d986" alt=""><figcaption></figcaption></figure>

Accedemos al directorio de root en el que contiene la bandera de root.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F3YScHHJARXd1TkbAUu7Q%2Fimage.png?alt=media&amp;token=cbff0d7f-fda3-49eb-99c7-bf9efb1c0773" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FYokiU3cMyWcrqJukj7gL%2Fimage.png?alt=media&amp;token=95b7e4a1-de59-4053-b2ea-cb9e6fe6fde1" alt=""><figcaption></figcaption></figure>

### 6. ❓Preguntas

#### Tarea 1: **Además de SSH y HTTP, ¿qué otro servicio está disponible en esta máquina?**

**FTP**

*Este servicio adicional disponible en el servidor es FTP, utilizado comúnmente para la transferencia de archivos.*

#### Tarea 2: **Este servicio puede configurarse para permitir el inicio de sesión con cualquier contraseña para un usuario específico. ¿Cuál es ese nombre de usuario?**

**anonymous**

*El servicio FTP se puede configurar para permitir el acceso sin autenticación real para el usuario `anonymous`.*

#### Tarea 3: **¿Cuál es el nombre del archivo descargado a través de este servicio?**

**backup.zip**

*Este archivo, `backup.zip`, fue descargado utilizando el servicio FTP y contiene datos potencialmente importantes.*

#### Tarea 4: **¿Qué script viene con el conjunto de herramientas de John The Ripper y genera un hash de un archivo ZIP protegido con contraseña en un formato que permite intentos de descifrado?**

**zip2john**

*El script `zip2john` convierte el archivo ZIP protegido en un formato adecuado para que John The Ripper pueda intentar descifrar la contraseña.*

#### Tarea 5: **¿Cuál es la contraseña del usuario admin en el sitio web?**

**qwerty789**

*La contraseña para el usuario administrador es `qwerty789`, y proporciona acceso a funciones administrativas en el sitio.*

#### Tarea 6: **¿Qué opción se puede pasar a sqlmap para intentar obtener ejecución de comandos a través de la inyección SQL?**

**--os-shell**

*La opción `--os-shell` de `sqlmap` se utiliza para intentar obtener una shell a través de una vulnerabilidad de inyección SQL.*

#### Tarea 7: **¿Qué programa puede ejecutar el usuario postgres como root usando sudo?**

**vi**

*El usuario `postgres` puede ejecutar el editor `vi` con privilegios de root mediante `sudo`, lo que podría permitir la escalada de privilegios.*

#### Tarea 8: **Enviar bandera de usuario**

ec9b13ca4d6229cd5cc1e09980965bf7

#### Tarea 9: **Enviar bandera de root**

dd6e058e814260bc70e9bbdef2715849
