> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cppj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cppj/databases-for-juniors/puerto-6379-redis.md).

# Puerto 6379: Redis

**Redis** es una base de datos en memoria de código abierto que se utiliza como almacén de datos clave-valor, caché y agente de mensajes. Redis es conocido por su alto rendimiento y flexibilidad, y se utiliza en aplicaciones que requieren operaciones rápidas de lectura y escritura. El puerto 6379 es el puerto predeterminado utilizado por Redis para aceptar conexiones de clientes.

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

* <mark style="color:green;">**Protocolo**</mark><mark style="color:green;">:</mark> Redis utiliza un protocolo binario propio sobre TCP para la comunicación entre el cliente y el servidor. Opera en el puerto 6379 por defecto.
* <mark style="color:green;">**Funcionalidad**</mark><mark style="color:green;">:</mark> Redis puede ser utilizado como base de datos, caché en memoria, y agente de mensajes. Soporta estructuras de datos como cadenas, listas, conjuntos, hashes, y más.
* <mark style="color:green;">**Persistencia**</mark><mark style="color:green;">:</mark> Aunque es una base de datos en memoria, Redis ofrece opciones de persistencia a disco para mantener los datos entre reinicios.
* <mark style="color:green;">**Seguridad**</mark><mark style="color:green;">:</mark> Por defecto, Redis no requiere autenticación y no cifra el tráfico, lo que puede representar un riesgo de seguridad si se expone a redes no confiables.

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

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

* <mark style="color:green;">**Acceso No Autorizado**</mark><mark style="color:green;">:</mark> Si Redis está configurado sin autenticación y es accesible desde redes no confiables, puede ser explotado para obtener acceso no autorizado.
* <mark style="color:green;">**Ejecutar Comandos**</mark><mark style="color:green;">:</mark> Redis permite ejecutar comandos de administración que pueden ser abusados para manipular datos o realizar ataques de ejecución de código.
* <mark style="color:green;">**Configuraciones Inseguras**</mark><mark style="color:green;">:</mark> La falta de cifrado y configuraciones por defecto pueden exponer datos sensibles y permitir ataques de intermediario (MITM).

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

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

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

```bash
nmap -p 6379 --script redis-info target-ip
```

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

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

### <mark style="color:green;">**Ejemplo de Salida de Nmap**</mark>

```plaintext
Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-18 23:45 UTC
Nmap scan report for 192.168.1.180
Host is up (0.0023s latency).

PORT     STATE SERVICE
6379/tcp open  redis
| redis-info:
|   Redis server information:
|     redis_version: 6.2.1
|     redis_git_sha1: 00000000
|     redis_git_dirty: 0
|     redis_build_id: 27f5c929cdcfd1ba
|     redis_mode: standalone
|     os: Linux 4.15.0-66-generic x86_64
|     arch_bits: 64
|     multiplexing_api: epoll
|     gcc_version: 8.3.0
|     process_id: 1
|     run_id: e4b72d3faaf82b0b1f8f0e7b9d312a9d4f0a98b7
|     tcp_port: 6379
|     uptime_in_seconds: 654321
|     uptime_in_days: 7
|     hz: 10
|     lru_clock: 1234567
|     executable: /usr/local/bin/redis-server
|     config_file: /etc/redis/redis.conf
|   Clients:
|     connected_clients: 5
|   Memory:
|     used_memory: 1048576
|     used_memory_human: 1.00M
|     used_memory_rss: 2048000
|     used_memory_peak: 2097152
|     used_memory_peak_human: 2.00M
|   Persistence:
|     loading: 0
|     rdb_changes_since_last_save: 100
|     rdb_bgsave_in_progress: 0
|     rdb_last_save_time: 1234567890
|     rdb_last_bgsave_status: ok
|     aof_enabled: 0
|     aof_rewrite_in_progress: 0
|     aof_rewrite_scheduled: 0
|     aof_last_rewrite_time_sec: -1
|     aof_current_rewrite_time_sec: -1
|     aof_last_bgrewrite_status: ok
|     aof_last_write_status: ok
|   Stats:
|     total_connections_received: 1000
|     total_commands_processed: 5000
|     instantaneous_ops_per_sec: 10
|     total_net_input_bytes: 10485760
|     total_net_output_bytes: 20971520
|   Replication:
|     role: master
|     connected_slaves: 0
|   CPU:
|     used_cpu_sys: 10.00
|     used_cpu_user: 20.00
|     used_cpu_sys_children: 0.00
|     used_cpu_user_children: 0.00
|   Cluster:
|     cluster_enabled: 0
|   Keyspace:
|     db0: keys=100,expires=10,avg_ttl=60000
|_  db1: keys=50,expires=5,avg_ttl=30000

Nmap done: 1 IP address (1 host up) scanned in 8.98 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;">**6379/tcp open redis**</mark><mark style="color:green;">:</mark> El puerto 6379 está abierto y el servicio Redis está activo.
* <mark style="color:green;">**redis-info**</mark><mark style="color:green;">:</mark> Proporciona información detallada sobre el servidor Redis.
  * <mark style="color:green;">**Versión de Redis**</mark><mark style="color:green;">:</mark> `redis_version: 6.2.1`.
  * <mark style="color:green;">**Modo de Redis**</mark><mark style="color:green;">:</mark> `redis_mode: standalone`.
  * <mark style="color:green;">**Sistema operativo**</mark><mark style="color:green;">:</mark> `os: Linux 4.15.0-66-generic x86_64`.
  * <mark style="color:green;">**Memoria utilizada**</mark><mark style="color:green;">:</mark> `used_memory: 1048576` bytes (`1.00M`).
  * <mark style="color:green;">**Número de clientes conectados**</mark><mark style="color:green;">:</mark> `connected_clients: 5`.
  * <mark style="color:green;">**Persistencia**</mark><mark style="color:green;">:</mark> Información sobre la configuración y estado de persistencia.
  * <mark style="color:green;">**Estadísticas**</mark><mark style="color:green;">:</mark> Número total de conexiones recibidas y comandos procesados.
  * <mark style="color:green;">**Replicación**</mark><mark style="color:green;">:</mark> `role: master`, indicando que este servidor es el maestro.
  * <mark style="color:green;">**Keyspace**</mark><mark style="color:green;">:</mark> Número de llaves y TTL promedio en cada base de datos.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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-6379-redis.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.
