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-2025-32023 — PoC & Exploit para CVE-2025-32023 / PlaidCTF 2025 "Zerodeo" | Kitploit
Ferramentas/GitHubGitHub/leesh3288/cve-2025-32023
Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoEngenharia ReversaCTFDesenvolvimento de PayloadsExploração de Binários
GitHubleesh3288/cve-2025-32023

CVE-2025-32023

PoC & Exploit para CVE-2025-32023 / PlaidCTF 2025 "Zerodeo"

Ver Repositório
216401há 1 anoRevisado pelo Kitploit

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-2025-32023

PoC & Exploit para CVE-2025-32023 (GHSA-rp2m-q4j6-gr43) / PlaidCTF 2025 "Zerodeo"

Repro / Patch

Testado em redis:7.4.2-alpine3.21@sha256:02419de7eddf55aa5bcf49efb74e88fa8d931b4d77c07eff8a6b2144472b6952

Afeta versões do Redis >= 2.8. Corrigido em 8.0.3, 7.4.5, 7.2.10, 6.2.19, ver redis/redis@5018874.

Bug

HyperLogLog no Redis é apenas mais uma string com suas próprias codificações personalizadas. Iterar sobre uma codificação HLL esparsa exige somar os comprimentos de execução de cada representação esparsa, o que pode fazer o comprimento total contado em int i estourar para um valor negativo quando operado sobre um HLL malformado. Isso permite que um atacante sobrescreva offsets negativos na estrutura HLL, levando a uma escrita fora dos limites na pilha (stack) ou no heap, dependendo de onde a estrutura HLL se origina (por exemplo, hllMerge() usa uma alocada na pilha, hllSparseToDense() usa uma alocada no heap).

Veja o trecho do patch abaixo:

root@kitploit:~
 int hllMerge(uint8_t *max, robj *hll) {
     struct hllhdr *hdr = hll->ptr;
     int i;

     if (hdr->encoding == HLL_DENSE) {
         hllMergeDense(max, hdr->registers);
      } else {
         uint8_t *p = hll->ptr, *end = p + sdslen(hll->ptr);
         long runlen, regval;
+        int valid = 1;
 
         p += HLL_HDR_SIZE;
         i = 0;
         while(p < end) {
             if (HLL_SPARSE_IS_ZERO(p)) {
                 runlen = HLL_SPARSE_ZERO_LEN(p);
+                if ((runlen + i) > HLL_REGISTERS) { /* Overflow. */
+                    valid = 0;
+                    break;
+                }
                 i += runlen;
                 p++;
             } else if (HLL_SPARSE_IS_XZERO(p)) {
                 runlen = HLL_SPARSE_XZERO_LEN(p);
+                if ((runlen + i) > HLL_REGISTERS) { /* Overflow. */
+                    valid = 0;
+                    break;
+                }
                 i += runlen;
                 p += 2;
             } else {
                 runlen = HLL_SPARSE_VAL_LEN(p);
                 regval = HLL_SPARSE_VAL_VALUE(p);
-                if ((runlen + i) > HLL_REGISTERS) break; /* Overflow. */
+                if ((runlen + i) > HLL_REGISTERS) { /* Overflow. */
+                    valid = 0;
+                    break;
+                }
                 while(runlen--) {
                     if (regval > max[i]) max[i] = regval;
                     i++;
                }
                 p++;
             }
         }
-        if (i != HLL_REGISTERS) return C_ERR;
+        if (!valid || i != HLL_REGISTERS) return C_ERR;
     }
     return C_OK;
 }

Exploit

O exploit segue o padrão de exploração do Redis:

  1. Corromper um objeto sds no heap do jemalloc para tornar seu comprimento grande
  2. Pulverizar (spray) objetos embstr para corromper em um objeto de módulo falso
  3. Despejar o heap usando o objeto sds corrompido para encontrar o objeto embstr alvo e vazar endereços
  4. Criar um objeto de módulo falso no objeto embstr alvo
  5. Excluir o objeto de módulo falso, acionando o destrutor e obtendo RCE
Baixar ferramenta