
Ein als Docker-Container verpacktes koseven Hello World zum Experimentieren mit der SQL-Injection CVE-2019-8979, die Versionen < 3.3.10 betrifft.
Ein in Docker gekapseltes https://github.com/koseven/koseven[koseven] Hello World zum Spielen mit CVE-2019-8979, einer SQL-Injection-Schwachstelle, die Versionen < 3.3.10 betrifft.
Dieses Hello World stammt tatsächlich aus der https://koseven.dev/documentation/orm/examples/simple[Dokumentation]; ich habe nur die Docker-Teile und den PoC-Exploit hinzugefügt.
= CVE-2019-8979 Diese SQL-Injection-Sicherheitslücke wurde ursprünglich von einem Dritten https://github.com/koseven/koseven/issues/323[gemeldet] und am 27. Februar 2019 im Master-Branch behoben, aber die Entwickler vergaßen, eine neue Version zu veröffentlichen, die den Fix enthält.
Infolgedessen blieb die damals neueste stabile Version, https://github.com/koseven/koseven/releases/tag/3.3.9[koseven-3.3.9], veröffentlicht am 20. November 2018, anfällig, bis https://github.com/koseven/koseven/releases/tag/3.3.10[koseven-3.3.10] am 12. Oktober 2020 veröffentlicht wurde, nachdem https://elttam.com[elttam] das Versehen am 10. Oktober 2020 bemerkt und es den Kernentwicklern privat gemeldet hatte.
= Einschränkungen
Obwohl einige Informationen von MySQL abgefragt werden können, wie z. B. current_user(), database() oder Tabellen- und Spaltennamen aus information_schema, ist es möglicherweise nicht möglich, Daten aus anderen Tabellen abzurufen, da strtoupper() auf die Eingabe der -Richtung ] wird.
order byDies liegt daran, dass Datenbank- und Tabellennamen Groß- und Kleinschreibung beachten, wenn MySQL auf einem Betriebssystem läuft, bei dem das Datenverzeichnis auf einem Dateisystem liegt, das Groß-/Kleinschreibung unterscheidet.
Infolgedessen ist diese SQLi möglicherweise nur vollständig ausnutzbar, wenn:
lower_case_table_names > 0 istWeitere Informationen findest du unter https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html[Identifier Case Sensitivity].
= Demo