
Um koseven hello world contido em docker para brincar com SQL injection CVE-2019-8979 afetando versões < 3.3.10
Um hello world do koseven em Docker para brincar com o CVE-2019-8979, uma vulnerabilidade de injeção SQL que afeta versões < 3.3.10. Este hello world na verdade vem da https://koseven.dev/documentation/orm/examples/simple[documentação], eu apenas adicionei as partes do Docker e o exploit PoC.
= CVE-2019-8979 Este problema de injeção SQL foi originalmente https://github.com/koseven/koseven/issues/323[reportado] por um terceiro e corrigido em 27 de fevereiro de 2019 no master, mas os desenvolvedores esqueceram de publicar um novo lançamento contendo a correção. Como resultado, o último lançamento estável na época, https://github.com/koseven/koseven/releases/tag/3.3.9[koseven-3.3.9] publicado em 20 de novembro de 2018, permaneceu vulnerável até que https://github.com/koseven/koseven/releases/tag/3.3.10[koseven-3.3.10] foi lançado em 12 de outubro de 2020, depois que https://elttam.com[elttam] notou e divulgou privadamente a omissão para os desenvolvedores principais em 10 de outubro de 2020.
= Limitations
Embora algumas informações possam ser obtidas do MySQL, como current_user(), database() ou nomes de tabelas e colunas do information_schema, pode não ser possível recuperar dados de outras tabelas devido a strtoupper() ser https://github.com/koseven/koseven/blob/3.3.9/modules/database/classes/Kohana/Database/Query/Builder.php#L236[chamado] na entrada de direção do .
order byIsso porque os nomes de banco de dados e tabelas diferenciam maiúsculas de minúsculas quando o MySQL está rodando em um sistema operacional onde o diretório de dados reside em um sistema de arquivos que diferencia maiúsculas de minúsculas. Como resultado, esta SQLi pode ser totalmente explorável apenas se:
lower_case_table_names for > 0Veja https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html[Sensibilidade a Maiúsculas/Minúsculas de Identificadores] para mais informações.
= Demo