
Exploit für die Übernahme von GitLab-Konten über CVE-2023-7028, der die Umgehung des Passwort-Zurücksetzens demonstriert, indem eine Angreifer-E-Mail eingeschleust wird, um das Zurücksetzungs-Token zu erhalten.
GitLab ist ein weit verbreiteter webbasierter Repository-Manager, der eine umfassende Plattform für die Verwaltung von Quellcode, Integration, Wartung und Zusammenarbeit in Softwareentwicklungsprojekten bietet.CVE-2023-7028 ist eine Schwachstelle, die es Angreifern ermöglicht, Benutzerkonten (Account TakeOver) über das Formular reset password zu übernehmen.Versionen von GitLab:
reset password, genauer gesagt im API-Endpunkt POST /users/password von GitLab. Der Angreifer nutzt die Schwachstelle im Feld für die E-Mail-Adresse aus, um die Prüfung auf falsches Format zu umgehen. Dadurch kann der Angreifer seine eigene E-Mail-Adresse einfügen, und GitLab sendet das an die E-Mail-Adresse des Angreifers.reset tokenBasierend auf dem Code-Ausschnitt, den GitLab bereitstellt, stellen wir Folgendes fest:

Der Teil, der die Reset-Passwort-Anfrage verarbeitet, befindet sich in der Datei spec/controllers/passwords_controller_spec.rb. Er erlaubt die Eingabe mehrerer E-Mail-Adressen aus der Eingabe, bietet jedoch keinerlei E-Mail-Verifizierungsmechanismus, um zu bestätigen, dass es sich um die E-Mail-Adresse des Benutzers handelt.
Der Server verlangt vom Angreifer lediglich das authenticity_token (ein verstecktes Token zum Schutz vor CSRF) im Formular-Submit, um die Reset-Passwort-Anfrage zu senden.

→ Wir können also unsere eigene E-Mail-Adresse einfügen, um das reset token zum Zurücksetzen des Passworts der Opfer-E-Mail-Adresse zu erhalten und so das Benutzerkonto zu übernehmen.
Wenn wir die Reset-Passwort-Anfrage abfangen, erhalten wir Folgendes:

authenticity_token, das zum Schutz vor CSRF verwendet wird. Der Name der E-Mail-Adresse des Benutzers, dessen Passwort zurückgesetzt wird, befindet sich in der Variablen user[email].Fügen Sie die E-Mail-Adresse des Angreifers mit dem folgenden Payload hinzu: &user[email][]=victim_email&user[email][]=attacker_email und senden Sie die Anfrage:

→ Überprüfen Sie die E-Mail-Adresse des Angreifers: Sie werden feststellen, dass das Reset-Passwort-Token gesendet wurde und darauf zugegriffen werden kann, um das Passwort zu ändern.

