
Proof-of-Concept für CVE-2022-45782: Vorhersagbare dotCMS-Passwort-Reset-Tokens, mit einem Token-Cracker und vollständiger Exploit-Kette.
Dieses Repository enthält einen Proof-of-Concept-Exploit für CVE-2022-45782, eine Schwachstelle in dotCMS, bei der Passwort-Reset-Token mit der nicht-kryptografischen Methode RandomStringUtils.randomAlphanumeric() generiert werden. Da dieses Token vorhersagbar ist, kann ein Angreifer es durch Brute-Force ermitteln oder ableiten und das Passwort eines Administratorkontos zurücksetzen.
Dieser PoC demonstriert die vollständige Exploit-Kette:
Dieses Repository verwendet ein Git-Submodul, das den Cracker für die verwundbare Token-Generierungsfunktion enthält. Es handelt sich um die C-Implementierung des Crackers, der verwendet wird, um Passwort-Reset-Token, die von RandomStringUtils.randomAlphanumeric() generiert werden, abzuleiten/zu erraten.
Mit Submodul klonen:
git clone https://github.com/alex91ar/randomstringutils.git
dotCMS muss Reset-E-Mails senden, damit der PoC funktioniert.
docker-compose.yml bearbeiten:
DOT_MAIL_SMTP_USER: "<smtp_email>"
DOT_MAIL_SMTP_PASSWORD: "<smtp_pass>"
(Bei Verwendung von Gmail: App-Passwort aktivieren und das generierte 16-stellige App-Passwort verwenden.)
docker compose up
Falls es fehlschlägt (häufig beim ersten Start), einfach erneut ausführen.
Anmeldeseite: https://localhost:8443/dotAdmin/#/public/login
In dotCMS:
Diese beiden Konten werden vom PoC verwendet.
randomstringutils ist der Brute-Forcer/Cracker für das unsichere Token von dotCMS.
Mit folgendem Befehl kompilieren:
cd randomstringutils
gcc -lpthread -O3 -o randomutils randomutils.c
Dies erzeugt das schnelle Token-Cracker-Binary.
python3 poc.py
Bei Erfolg verwendet das Skript das geknackte Admin-Token, um das Admin-Konto zurückzusetzen.
Dieses Repository dient nur zu Bildungs-, Forschungs- und autorisierten Sicherheitstestzwecken. Verwenden Sie diesen Exploit NICHT gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.