Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-32023 — PoC & Exploit for CVE-2025-32023 / PlaidCTF 2025 "Zerodeo" | Kitploit
Outils/GitHubGitHub/leesh3288/cve-2025-32023
Memory ForensicsVulnerability AnalysisExploitationReverse EngineeringCTFPayload DevelopmentBinary Exploitation
GitHubleesh3288/cve-2025-32023

CVE-2025-32023

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

Voir le dépôt
21640il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-32023

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

Reproduction / Correctif

Testé avec redis:7.4.2-alpine3.21@sha256:02419de7eddf55aa5bcf49efb74e88fa8d931b4d77c07eff8a6b2144472b6952

Affecte les versions de Redis >= 2.8. Corrigé dans les versions 8.0.3, 7.4.5, 7.2.10, 6.2.19, voir redis/redis@5018874.

Bug

HyperLogLog dans Redis n'est qu'une chaîne de caractères avec ses propres encodages personnalisés. L'itération sur un encodage HLL sparse nécessite l'addition des longueurs de runs de chaque représentation sparse, ce qui peut faire déborder la longueur totale comptée dans int i vers une valeur négative lorsqu'elle est manipulée sur un HLL malformé. Cela permet à un attaquant d'écrire à des offsets négatifs sur la structure HLL, conduisant à une écriture hors limites sur la pile/tas selon l'origine de la structure HLL (par exemple, hllMerge() prend une structure allouée sur la pile, hllSparseToDense() prend une structure allouée sur le tas).

Voir l'extrait du correctif ci-dessous :

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;
 }

Exploitation

L'exploit est un pwnable Redis standard :

  1. Corrompre un objet sds sur le tas jemalloc pour rendre sa longueur grande
  2. Pulvériser des objets embstr pour les corrompre en un faux objet module
  3. Vider le tas à l'aide de l'objet sds corrompu pour trouver l'objet embstr cible et divulguer les adresses
  4. Créer un faux objet module sur l'objet embstr cible
  5. Supprimer le faux objet module, déclenchant le destructeur et obtenant une exécution de code arbitraire (RCE)
Télécharger l’outil