# Appointment

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

* **Nivel de Dificultad**: Muy fácil.
* **Tags:**&#x20;
  * **Databases**: Evaluación de la seguridad en la gestión de bases de datos Apache y MariaDB.
  * **Apache**: Análisis de configuraciones y vulnerabilidades en servidores Apache.
  * **MariaDB**: Revisión de la seguridad y rendimiento en instancias de MariaDB.
  * **PHP**: Auditoría de seguridad en aplicaciones PHP conectadas a bases de datos.
  * **SQL**: Pruebas de integridad y prevención de inyecciones SQL en consultas.
  * **Reconnaissance**: Escaneo y mapeo de servicios y bases de datos accesibles en la red.
  * **SQL Injection**: Identificación y explotación de vulnerabilidades de inyección SQL en aplicaciones web.

### 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.189.92
```

<figure><img src="/files/FHbHnCXMPIcQX4runn4a" 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.189.92
```

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

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

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

Como podemos observar durante el escaneo, el puerto **80** perteneciendo al servicio **HTTP** está abierto, por lo que se procederá a indagar más.

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

Es un formulario de **Login** probamos a hacer una **SQL Injection** para que nos deje loguear ya que metemos cualquier valor se envía pero no nos dice nada.

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

Para evitar la autenticación de un login mediante inyección SQL, se utilizan técnicas que manipulan la consulta SQL empleada por la aplicación para verificar las credenciales del usuario. Las inyecciones más comunes introducen condiciones que siempre resultan verdaderas, permitiendo el acceso sin necesidad de un usuario y contraseña válidos.

Aquí tienes algunos ejemplos típicos:

1. **' OR '1'='1'--**: Este string inyecta una condición siempre verdadera (`'1'='1'`), lo que permite eludir el chequeo de autenticación.
2. **' OR 'a'='a'--**: Similar al anterior, asegura que la condición sea siempre verdadera.
3. **admin'--**: Si la aplicación no maneja correctamente los comentarios en SQL, este string puede truncar la consulta después de "admin", evitando la verificación de la contraseña.

Estos códigos se suelen ingresar en los campos de nombre de usuario o contraseña de un formulario de login. Si la aplicación es vulnerable y no sanitiza adecuadamente la entrada del usuario, el SQL inyectado puede engañar al sistema para que permita el acceso sin credenciales válidas.

Para más detalles y cómo defenderse de estos ataques, puedes consultar la página de [HackTricks sobre SQL login bypass](https://github.com/HackTricks-wiki/hacktricks/blob/master/pentesting-web/login-bypass/sql-login-bypass.md)​

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

### 6. ❓Preguntas

#### **Tarea 1:** ¿Qué significa el acrónimo SQL?

**Structured Query Language**\
\&#xNAN;*Structured Query Language es el significado de SQL, que se utiliza para gestionar y manipular bases de datos relacionales.*

#### **Tarea 2:** ¿Cuál es uno de los tipos más comunes de vulnerabilidades SQL?

**SQL injection**\
\&#xNAN;*SQL injection es una de las vulnerabilidades más comunes en aplicaciones que usan bases de datos SQL.*

#### **Tarea 3:** ¿Cuál es la clasificación en el OWASP Top 10 de 2021 para esta vulnerabilidad?

**A03:2021-Injection**\
\&#xNAN;*La inyección de código, como SQL injection, se clasifica bajo A03:2021-Injection en el OWASP Top 10 de 2021.*

#### **Tarea 4:** ¿Qué servicio y versión reporta Nmap que están corriendo en el puerto 80 del objetivo?

**Apache httpd 2.4.38 ((Debian))**\
\&#xNAN;*Nmap indica que el servicio Apache httpd 2.4.38 (Debian) está ejecutándose en el puerto 80.*

#### **Tarea 5:** ¿Cuál es el puerto estándar utilizado para el protocolo HTTPS?

**443**\
\&#xNAN;*El puerto 443 es el puerto estándar para el protocolo HTTPS.*

#### **Tarea 6:** ¿Cómo se llama una carpeta en la terminología de aplicaciones web?

**Directory**\
\&#xNAN;*En las aplicaciones web, una carpeta se denomina directory.*

#### Tarea 7: ¿Qué código de respuesta HTTP se da para errores de 'No Encontrado'?

**404**\
\&#xNAN;*El código 404 es la respuesta HTTP estándar para un error de "Not Found".*

#### **Tarea 8:** Gobuster es una herramienta utilizada para fuerza bruta de directorios en un servidor web. ¿Qué switch usamos con Gobuster para especificar que buscamos directorios y no subdominios?

**dir**\
\&#xNAN;*El switch dir se usa con Gobuster para buscar directorios.*

#### **Tarea 9:** ¿Qué carácter único se puede usar para comentar el resto de una línea en MySQL?

**#**\
\&#xNAN;*El carácter # se usa para comentar una línea en MySQL.*

#### **Tarea 10:** Si la entrada del usuario no se maneja con cuidado, podría interpretarse como un comentario. Usa un comentario para iniciar sesión como administrador sin conocer la contraseña. ¿Cuál es la primera palabra en la página web devuelta?

**Congratulations**\
\&#xNAN;*La primera palabra en la página devuelta después de un login exitoso como administrador es Congratulations.*

#### Tarea 11: Enviar Flag

e3d0796d002a446c0e622226f42e9672

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


---

# 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/appointment.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.
