
Proof of Concept zur Ausnutzung der in CVE-2025-8220 beschriebenen Schwachstelle, die die Möglichkeit einer SQL-Injection beim Laden der Passwort-Wiederherstellungsseite in der Engeman-Web-Software betrifft.
Proof of Concept zur Ausnutzung der in CVE-2025-8220, beschriebenen Schwachstelle, die die Möglichkeit einer SQL-Injection beim Laden der Passwort-Wiederherstellungsseite in der Software Engeman Web betrifft.
In der Software Engeman Web wurde eine Schwachstelle gefunden, die die Manipulation der SQL-Abfrage ermöglicht, die beim Laden der Passwort-Wiederherstellungsseite ausgeführt wird. Diese Schwachstelle kann von Besuchern ohne Zugriff auf gültige Anmeldedaten ausgenutzt werden, also ohne Authentifizierung, um die Vertraulichkeit und Integrität der in der Datenbank der Anwendung gespeicherten Daten zu gefährden sowie möglicherweise einen Denial-of-Service auf Komponentenebene zu verursachen, indem Werte in kritischen Tabellen verändert werden.
Nachdem Sie auf die Anwendung zugegriffen haben und zur Anmeldeseite weitergeleitet wurden, klicken Sie auf die Schaltfläche, um zur Passwort-Wiederherstellungsseite weitergeleitet zu werden.


Prüfen Sie die vom Browser gesendete Anforderung zum Laden der Passwort-Wiederherstellungsseite. Sie werden feststellen, dass einige Cookies vorhanden sind, darunter das LanguageCombobox-Cookie, das während des ersten Zugriffs gespeichert wird. In dieser Demonstration wurde die Software Burp Suite verwendet, um Browseranforderungen effizienter anzuzeigen und erneut zu senden.

Um die Schwachstelle zu bestätigen, fügen Sie ein einzelnes Anführungszeichen als Wert des genannten Cookies ein und senden Sie die Anforderung erneut. In der Antwort der Anwendung sollte ein Fehler angezeigt werden, der auf ein nicht geschlossenes Anführungszeichen hinweist.

Die Abfrageergebnisse werden nicht direkt auf der zurückgegebenen Seite angezeigt, was dies zu einer blinden Ausnutzung macht. Sie können Payloads wie ' AND SLEEP(30)-- - oder '; WAITFOR DELAY '0:0:30'-- einfügen, um Rückschlüsse auf die zugrunde liegende Datenbank zu ziehen.

Sobald die Injection bestätigt ist, kann ein automatisiertes Tool wie sqlmap verwendet werden, um die Datenbank auszulesen.
Es ist wichtig zu beachten, dass das Argument --technique den Wert SEB enthalten muss, damit Techniken verwendet werden, die auf gestapelten Abfragen, Fehlern und booleschen Vergleichen basieren. Erstens, weil eine blinde Ausnutzung erforderlich ist, und zweitens, weil das Weglassen der Option S aus dem Argumentwert dazu führte, dass sqlmap den Injektionspunkt in SQL Server-Datenbanken nicht finden konnte.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch

Über den Injektionspunkt werden verschiedene mögliche Ausnutzungstechniken identifiziert. Danach können die Datenbankinformationen abgerufen werden.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch --dbs

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman --tables

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --columns

Um Tabellendatensätze mit sqlmap auszulesen, ist es (zumindest für SQL Server-Datenbanken) erforderlich, ein benutzerdefiniertes Tamper-Skript zu verwenden, das in diesem Repository den Namen replace-dbo.py trägt. Der Grund dafür ist, dass sqlmap-Payloads, die das Format <database>.dbo.<table> zur Referenzierung des Tabellenobjekts verwenden, mit der Verarbeitung der Anwendung kollidieren. Das genannte Tamper wandelt es ausschließlich in das Format <database>.<table> um. Wenn die Instanz von Engeman Web MySQL oder eine andere Datenbank verwendet, ist dieses Tamper nicht erforderlich, oder es muss ein anderes erstellt werden.


Denken Sie daran, dass das sqlmap-Tool eine leere Datei namens init.py im Verzeichnis des Tamper-Skripts benötigt, damit es verwendet werden kann, falls Sie es nicht im Standard-Tamper-Verzeichnis Ihrer Installation abgelegt haben.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --dump --tamper <tamper-file>.py
Dieses Tamper verursacht Konflikte, wenn es in einer anderen Phase des Prozesses verwendet wird als beim Auslesen einer bestimmten Tabelle. Verwenden Sie es daher nicht, um die Datenbanken (--dbs), Tabellen (--tables), Spalten (--columns) oder zusätzliche Informationen wie den Datenbankbenutzer (--current-user) zu ermitteln.
Da der Benutzer, den die Anwendung zur Interaktion mit der Datenbank verwendet, im Kontext der Systemdatensätze über hohe Berechtigungen verfügt, ist es auch möglich, die zugrunde liegende Abfrage zu manipulieren, um die Werte der Tabellendatensätze zu ändern (dies ist viel einfacher, wenn die Instanz SQL Server als zugrunde liegende Datenbank verwendet).



Durch diese Schwachstelle wäre jede Instanz des Systems anfällig für den unbefugten Abruf und möglicherweise die Veränderung von Daten in der verwendeten Datenbank.
Diese Schwachstelle wurde in Versionen bis 12.0.0.1, bestätigt, aber eine neuere Version ist wahrscheinlich ebenfalls verwundbar.