the_open_door
café
ESEN
← Volver al índice

Redis enumeration

Redis es un almacén de datos clave-valor en memoria (puerto 6379 por defecto). Es muy rápido y se usa como caché, cola o backend de sesiones, pero a menudo se despliega sin autenticar o con una contraseña débil, y su contenido puede esconder credenciales, tokens de sesión o datos de aplicación útiles para el atacante.

El cliente es redis-cli. Si requiere contraseña (directiva requirepass), se pasa con -a:

redis-cli -h <ip>                       # sin auth
redis-cli -h <ip> -a <pass>             # con contraseña

Una vez dentro, la enumeración básica:

INFO                  # versión, modo, persistencia, nº de claves
ACL WHOAMI            # usuario actual (Redis 6+)
KEYS *                # listar TODAS las claves (en labs; en prod usar SCAN)
TYPE <key>          # tipo: string, set, hash, list, zset...
GET <key>           # leer un string
SMEMBERS <key>      # leer un set
HGETALL <key>       # leer un hash

Lo interesante suele estar en los valores: objetos de usuario serializados (JSON), contraseñas cifradas, tokens. En Atom, una clave guardaba el objeto del Administrator con su EncryptedPassword.

Más allá de leer. Redis sin autenticar y con permisos puede llevar a RCE o escritura de ficheros (CONFIG SET dir + SET para escribir una webshell o una clave SSH, abuso de módulos con MODULE LOAD, o RCE vía replicación). Aquí, sin embargo, el valor de Redis fue puramente informativo: la credencial que abrió el siguiente paso.

Cómo detectarlo. En la red, la firma es una conexión al 6379 desde una IP no local sobre un Redis sin requirepass (un escaneo nmap -p6379 o un redis-cli -h externo). En el propio Redis, el monitor o el slowlog muestran un KEYS * (recorrido completo del keyspace, que una aplicación evita en favor de SCAN) y INFO/CONFIG GET seguidos de lecturas masivas: patrón de reconocimiento, no de uso normal. Un AUTH fallido repetido delata la fuerza bruta de requirepass. La escalada posterior (webshell/SSH) deja el rastro de CONFIG SET dir/dbfilename o MODULE LOAD (RCE por módulos).

Defensa. Exigir contraseña fuerte (requirepass) y/o ACLs, no exponer 6379 a redes no confiables (bindear a localhost), desactivar comandos peligrosos (CONFIG, MODULE) y no almacenar secretos en claro/reversibles. Relacionado con la reutilización de credenciales que suele seguir a un hallazgo en la base y con el RCE en Redis vía MODULE LOAD.

Herramientasredis-cli

Máquinas donde se aplica