
Пример koseven hello world в Docker-контейнере для экспериментов с SQL-инъекцией CVE-2019-8979, затрагивающей версии < 3.3.10
Hello world в Docker на основе https://github.com/koseven/koseven[koseven] для игры с CVE-2019-8979 — уязвимостью SQL-инъекции, затрагивающей версии < 3.3.10. Этот hello world на самом деле взят из https://koseven.dev/documentation/orm/examples/simple[документации]; я лишь добавил Docker-части и PoC-эксплойт.
= CVE-2019-8979 Эта проблема SQL-инъекции изначально была https://github.com/koseven/koseven/issues/323[сообщена] третьей стороной и исправлена 27 февраля 2019 года в ветке master, но разработчики забыли выпустить новый релиз с исправлением. В результате последний стабильный релиз на тот момент, https://github.com/koseven/koseven/releases/tag/3.3.9[koseven-3.3.9], выпущенный 20 ноября 2018 года, оставался уязвимым до выхода https://github.com/koseven/koseven/releases/tag/3.3.10[koseven-3.3.10] 12 октября 2020 года — после того как https://elttam.com[elttam] заметила это упущение и 10 октября 2020 года приватно сообщила о нём основным разработчикам.
= Ограничения
Хотя из MySQL можно получить некоторую информацию, например current_user(), database() или имена таблиц и столбцов из information_schema, извлечь данные из других таблиц может оказаться невозможно, поскольку strtoupper() ] для входного значения направления .
order byЭто связано с тем, что имена баз данных и таблиц чувствительны к регистру, когда MySQL работает в операционной системе, где каталог данных находится в файловой системе, чувствительной к регистру. В результате эта SQLi может быть полностью эксплуатируемой только если:
lower_case_table_names равна > 0Дополнительную информацию см. в https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html[Чувствительность идентификаторов к регистру].
= Демо