# Puerto 5432: PostgreSQL

**PostgreSQL** es un sistema de gestión de bases de datos relacional y de código abierto conocido por su robustez, rendimiento y conformidad con el estándar SQL. Utiliza el puerto 5432 por defecto para aceptar conexiones de clientes.

## <mark style="color:green;">Descripción de PostgreSQL y el Puerto 5432</mark>

* <mark style="color:green;">**Protocolo**</mark><mark style="color:green;">:</mark> PostgreSQL utiliza un protocolo de comunicación propio sobre TCP para la interacción entre el cliente y el servidor. El puerto predeterminado para PostgreSQL es el 5432.
* <mark style="color:green;">**Funcionalidad**</mark><mark style="color:green;">:</mark> PostgreSQL es altamente extensible y soporta una amplia gama de tipos de datos, funciones, y procedimientos almacenados. Ofrece características avanzadas como integridad referencial, triggers, vistas, y soporte para transacciones ACID.
* <mark style="color:green;">**Seguridad**</mark><mark style="color:green;">:</mark> PostgreSQL proporciona múltiples capas de seguridad, incluyendo autenticación basada en roles, SSL/TLS para cifrado de tráfico, y listas de control de acceso.

## <mark style="color:green;">Relevancia en Pentesting</mark>

### <mark style="color:green;">**Importancia de PostgreSQL en Pentesting**</mark><mark style="color:green;">:</mark>

* <mark style="color:green;">**Acceso No Autorizado**</mark><mark style="color:green;">:</mark> Configuraciones incorrectas de autenticación pueden permitir a los atacantes obtener acceso no autorizado a la base de datos.
* <mark style="color:green;">**Exposición de Datos**</mark><mark style="color:green;">:</mark> Las bases de datos expuestas sin cifrado pueden ser interceptadas por atacantes, exponiendo datos sensibles.
* <mark style="color:green;">**Enumeración de Objetos**</mark><mark style="color:green;">:</mark> Los pentesters pueden enumerar esquemas, tablas, y otros objetos para mapear la estructura de la base de datos y encontrar posibles vulnerabilidades.
* <mark style="color:green;">**Inyección SQL**</mark><mark style="color:green;">:</mark> PostgreSQL es susceptible a inyecciones SQL si las consultas no están correctamente parametrizadas.

## <mark style="color:green;">Ejemplo de Escaneo de PostgreSQL con Nmap</mark>

Para identificar servidores PostgreSQL activos y recopilar información adicional sobre los servicios PostgreSQL, se puede utilizar Nmap con scripts NSE específicos.

### <mark style="color:green;">**Comando Nmap**</mark>

```bash
nmap -p 5432 --script pgsql-info target-ip
```

### <mark style="color:green;">**Explicación del Comando**</mark>

* `nmap`: Ejecuta el comando Nmap.
* `-p 5432`: Especifica que Nmap debe escanear el puerto 5432, el puerto predeterminado para PostgreSQL.
* `--script pgsql-info`: Utiliza el script NSE `pgsql-info` para recopilar información sobre el servidor PostgreSQL.
* `target-ip`: Especifica la dirección IP del objetivo.

**Ejemplo de Salida de Nmap**

```plaintext
Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-19 00:10 UTC
Nmap scan report for 192.168.1.210
Host is up (0.0018s latency).

PORT     STATE SERVICE
5432/tcp open  postgresql
| pgsql-info: 
|   Version: 
|     PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 10.2.0, 64-bit
|   SSL Enabled: 
|     Supported
|   Connection Settings: 
|     Application Name: 
|     Client Encoding: 
|     Date Style: 
|     Interval Style: 
|     Time Zone: 
|     Integer Datetimes: 
|   Configuration: 
|     max_connections: 100
|     shared_buffers: 128MB
|     temp_buffers: 8MB
|     work_mem: 4MB
|     maintenance_work_mem: 64MB
|     dynamic_shared_memory_type: posix
|     max_worker_processes: 8
|     max_parallel_workers: 8
|     max_parallel_workers_per_gather: 2
|   Databases: 
|     - postgres
|     - template0
|     - template1
|_    - mydb

Nmap done: 1 IP address (1 host up) scanned in 8.67 seconds
```

## <mark style="color:green;">Interpretación de la Salida</mark>

* <mark style="color:green;">**Host is up**</mark><mark style="color:green;">:</mark> Indica que el sistema objetivo está en línea y responde.
* <mark style="color:green;">**5432/tcp open postgresql**</mark><mark style="color:green;">:</mark> El puerto 5432 está abierto y el servicio PostgreSQL está activo.
* <mark style="color:green;">**pgsql-info**</mark><mark style="color:green;">:</mark> Proporciona información detallada sobre el servidor PostgreSQL.
  * <mark style="color:green;">**Version**</mark><mark style="color:green;">:</mark> `PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 10.2.0, 64-bit`.
  * <mark style="color:green;">**SSL Enabled**</mark><mark style="color:green;">:</mark> Soporte para SSL (`Supported`).
  * <mark style="color:green;">**Connection Settings**</mark><mark style="color:green;">:</mark> Información sobre la configuración de la conexión (nombre de la aplicación, codificación del cliente, estilo de fecha, estilo de intervalo, zona horaria, tiempos de enteros).
  * <mark style="color:green;">**Configuration**</mark><mark style="color:green;">:</mark> Configuración del servidor PostgreSQL.
    * <mark style="color:green;">**max\_connections**</mark><mark style="color:green;">:</mark> Máximo de conexiones permitidas (`100`).
    * <mark style="color:green;">**shared\_buffers**</mark><mark style="color:green;">:</mark> Tamaño de los buffers compartidos (`128MB`).
    * <mark style="color:green;">**temp\_buffers**</mark><mark style="color:green;">:</mark> Tamaño de los buffers temporales (`8MB`).
    * <mark style="color:green;">**work\_mem**</mark><mark style="color:green;">:</mark> Memoria de trabajo (`4MB`).
    * <mark style="color:green;">**maintenance\_work\_mem**</mark><mark style="color:green;">:</mark> Memoria de mantenimiento (`64MB`).
    * <mark style="color:green;">**dynamic\_shared\_memory\_type**</mark><mark style="color:green;">:</mark> Tipo de memoria compartida dinámica (`posix`).
    * <mark style="color:green;">**max\_worker\_processes**</mark><mark style="color:green;">:</mark> Máximo de procesos de trabajo (`8`).
    * <mark style="color:green;">**max\_parallel\_workers**</mark><mark style="color:green;">:</mark> Máximo de trabajadores paralelos (`8`).
    * <mark style="color:green;">**max\_parallel\_workers\_per\_gather**</mark><mark style="color:green;">:</mark> Máximo de trabajadores paralelos por operación de recolección (`2`).
  * <mark style="color:green;">**Databases**</mark><mark style="color:green;">:</mark> Bases de datos disponibles en el servidor (`postgres`, `template0`, `template1`, `mydb`).


---

# 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://books.spartan-cybersec.com/cppj/databases-for-juniors/puerto-5432-postgresql.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.
