Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-44203 — Exploit für CVE-2025-44203, der eine Race Condition in HotelDruid 3.0.0/3.0.7 ausnutzt, Administratoren-Anmeldedaten preisgibt und einen Denial-of-Service verursacht. Enthält ein Brute-Force-Skript zur Offline-Passwortwiederherstellung. | Kitploit
Tools/GitHubGitHub/ivant7d3/cve-2025-44203
Passwort-CrackingSchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffung
GitHubivant7d3/cve-2025-44203

CVE-2025-44203

Exploit für CVE-2025-44203, der eine Race Condition in HotelDruid 3.0.0/3.0.7 ausnutzt, Administratoren-Anmeldedaten preisgibt und einen Denial-of-Service verursacht. Enthält ein Brute-Force-Skript zur Offline-Passwortwiederherstellung.

Repository anzeigen
vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-44203: HotelDruid 3.0.0 / 3.0.7 Offenlegung sensibler Informationen und DoS

Zusammenfassung

HotelDruid 3.0.0 und 3.0.7 enthalten eine Race Condition im Setup-Endpunkt creadb.php, der bereits vor Abschluss des Setups erreichbar ist. Dies hat zwei Auswirkungen, die beide auf derselben verlorenen Race basieren: eine Offenlegung sensibler Informationen (durch ausführliche SQL-Fehlermeldungen) und eine Denial-of-Service.

Durch das gleichzeitige Senden vieler POST-Anfragen kann ein Angreifer eine Race Condition auslösen und sensible Daten aus der Antwort auslesen, einschließlich Administrator-Benutzername, Passwort-Hash und Salt. Wenn das während der Konfiguration des Debian-Pakets gewählte Passwort schwach ist, kann es anschließend offline mit einer Wortliste wiederhergestellt werden.

Wenn der Angriff erfolgreich ist, kann sich der Administrator nicht mehr mit den während der Installation festgelegten Anmeldedaten anmelden (Denial-of-Service).

Auswirkungen

  • Informationsoffenlegung: Der Administrator-Benutzername, Passwort-Hash und Salt erscheinen in der HTTP-Antwort.
  • Denial-of-Service: Ein erfolgreicher Angriff beschädigt das Setup, sodass sich der Administrator nicht mehr anmelden kann. Zur Wiederherstellung muss HotelDruid neu installiert werden.

Demos

  • HotelDruid 3.0.0: Video
  • HotelDruid 3.0.7: Video

Voraussetzungen und Zuverlässigkeit

  • Damit ein entfernter Angreifer den Endpunkt erreichen kann, muss die Debian-Paketoption „Restrict HotelDruid access to localhost?“ während der Installation auf „No“ gesetzt worden sein. Andernfalls kann nur der Hostrechner selbst den Endpunkt erreichen.
  • Der Angriff funktioniert nicht immer, und wenn er fehlschlägt, kann er nicht erneut versucht werden. Ein normales Setup wird abgeschlossen und schließt das Zeitfenster, sodass eine Neuinstallation erforderlich ist.
  • Die Ressourcen spielen eine große Rolle. Die erfolgreichen Durchläufe erfolgten auf einer kleinen VM mit 2 CPU-Kernen und 2 GB RAM. Auf einem Rechner mit 4 oder mehr Kernen und 4 oder mehr GB RAM schlugen alle Versuche fehl, da jede Anfrage zu schnell abgeschlossen wurde, um sich zu überschneiden.
  • Wenn Sie das Skript so bearbeiten, dass jede Antwort ausgegeben wird, können Sie manchmal nur den Benutzernamen und sonst nichts wiederherstellen. Der Abschnitt „Grundursache“ erklärt, warum.
  • Getestet auf 3.0.0 und 3.0.7. Andere Versionen könnten ebenfalls betroffen sein.

Grundursache

Das Debian-Paket lässt creadb.php ohne Anmeldung erreichbar, bis das Setup abgeschlossen ist. Mit dem Paketstandard C_UTILIZZA_SEMPRE_DEFAULTS="AUTO" wird bei jeder Anfrage die gesamte Datenbankerstellung erneut ausgeführt. Diese Routine führt über 100 SQL-Anweisungen aus (Erstellen und Befüllen der Tabellen), ohne dass eine Sperre vorhanden ist, sodass mehrere gleichzeitig eintreffende Anfragen diese gleichzeitig ausführen. Das ist die Race.

Auf einem langsamen oder ausgelasteten Rechner überschneiden sich die parallelen Läufe und kollidieren mit der SQLite-Datenbank. Sobald eine Anfrage mit der Erstellung der Tabellen und Zeilen begonnen hat, schlagen die Anweisungen einer späteren Anfrage massenhaft fehl, aus verschiedenen Gründen wie bereits vorhandenen Zeilen oder einer durch einen anderen Schreibvorgang gesperrten Datenbank. Bei jedem Fehler gibt der Abfrage-Wrapper esegui_query() von HotelDruid die vollständige fehlgeschlagene Anweisung in die HTTP-Antwort aus. Das bedeutet, dass eine einzelne Antwort mit Dutzenden dieser SQL-Fehler zurückkommt, und einer davon enthält die sensiblen Informationen für das Administratorkonto.

root@kitploit:~
update ...utenti set password = '<hash>', salt = '<salt>', tipo_pass = '5' where idutenti = '1'

So erkennt der Exploit im Wesentlichen den Erfolg. Er durchsucht die Antwort nach set password, das nur erscheint, wenn genau diese Anweisung ausgegeben wird, was in der normalen Ausgabe von creadb.php nie vorkommt.

Die Sperrung resultiert aus demselben Fehler. Die Admin-Zeile wird zunächst mit tipo_pass='n' eingefügt, und erst das obige UPDATE macht daraus ein funktionierendes Konto (tipo_pass='5' mit einem gesetzten Passwort). Der Code, der direkt nach dem UPDATE ausgeführt wird, überprüft nie, ob es funktioniert hat. Er erstellt die Datei abilita_login, die die Anmeldung aktiviert, löscht ini.php, das die Administrator-Anmeldedaten enthielt, und schreibt später ultimo_accesso, was das Setup endgültig abschließt. Wenn also das UPDATE die Race verliert, bleibt das Konto auf tipo_pass='n', was die Anmeldeseite selbst mit dem richtigen Passwort immer ablehnt, während die Anmeldung aktiviert ist und die Anmeldedatendatei fehlt. Ab diesem Punkt gibt es ohne Neuinstallation kein Zurück mehr.

Aus diesem Grund sind ein erfolgreicher Leak und die Sperrung im Wesentlichen dasselbe Ereignis. Beides passiert, wenn dieses eine UPDATE die Race verliert. Wenn Sie nur den Benutzernamen erhalten, bedeutet dies, dass eine frühere Anweisung kollidierte, während das Passwort-UPDATE noch durchkam, sodass keine Sperrung erfolgte.

Reproduktion

Führen Sie den Exploit vom Angreifer-Rechner aus gegen das Ziel aus:

root@kitploit:~
python3 exploit.py 192.168.1.1

wobei 192.168.1.1 die IP-Adresse des Rechners ist, auf dem HotelDruid läuft.

Falls es funktioniert, verwenden Sie brute.py mit einer Wortliste, um zu versuchen, das Klartext-Passwort wiederherzustellen. Öffnen Sie brute.py, setzen Sie salt auf den erhaltenen Salt und final_hash auf den erhaltenen Hash, und führen Sie dann aus:

root@kitploit:~
python3 brute.py rockyou.txt

wobei rockyou.txt Ihre Wortliste ist.

Beachten Sie, dass Sie sich selbst mit dem richtigen Benutzernamen und Passwort nicht anmelden können – und der Administrator ebenso wenig. Das von Ihnen wiederhergestellte Passwort ist korrekt, aber die erfolgreiche Race hat das Konto auf tipo_pass='n' festgesetzt, sodass die Anmeldeseite es ablehnt. Siehe den Abschnitt „Grundursache“.

Behebung

Die Schwachstelle wurde in HotelDruid 3.0.8 behoben. Hier ist das Changelog, suchen Sie einfach nach „CVE-2025-44203“.

Der dafür verwendete Sperr-Helfer (crea_lock_file(), ein blockierendes flock(LOCK_EX)) war bereits in Version 3.0.7 vorhanden und wurde in anderen Teilen des Codes verwendet. creadb.php rief ihn jedoch nie auf. Der Patch tut zwei Dinge:

  1. Er setzt eine exklusive Sperre um die Setup-Routine, sodass gleichzeitig eintreffende Anfragen warten, anstatt zu konkurrieren. Der Patch implementiert dies, indem er diesen Helfer endlich in creadb.php aufruft: Er holt die Sperre kurz vor der Admin-Bereitstellung und gibt sie mit distruggi_lock_file() danach wieder frei. Entscheidend ist die Überprüfung direkt nach dem Holen der Sperre. Die zuerst eintreffende Anfrage löscht ini.php, während sie noch die Sperre hält, und jede Anfrage liest erneut, ob ini.php existiert, bevor sie mit der Bereitstellung beginnt, sodass die dahinter wartenden Anfragen die Sperre nehmen, die Datei bereits als gelöscht vorfinden und den gesamten Block überspringen. Wenn die zweite Anfrage läuft, ist das Setup bereits abgeschlossen, und sie tut nichts.
  2. Es übergibt das Stille-Flag an die beiden Admin-UPDATE-Abfragen, sodass selbst wenn eine davon fehlschlägt, die Anmeldedaten nicht mehr in die Antwort gedruckt werden. Der Patch implementiert dies, indem er diesen beiden esegui_query()-Aufrufen ein zweites Argument, 1, hinzufügt, dem einen, das den Benutzernamen setzt, und dem anderen, das das Passwort und Salt setzt. Dieses Flag weist den Abfrage-Wrapper an, bei einem Abfragefehler still zu bleiben. Er zeichnet den Fehler weiterhin im Server-Log auf, überspringt jedoch das echo, das sonst die fehlgeschlagene Anweisung samt Hash und Salt in die Seite setzen würde.
root@kitploit:~
creadb.php:

879: esegui_query("update $tableutenti set nome_utente = '".aggslashdb($admin)."' where idutenti = '1'",1);

897: esegui_query("update $tableutenti set password = '$passw', salt = '$salt', tipo_pass = '5' where idutenti = '1'",1);

Referenzen

  • https://nvd.nist.gov/vuln/detail/CVE-2025-44203
  • https://www.cve.org/CVERecord?id=CVE-2025-44203
  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-44203
Tool herunterladen