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