GLPI versions before 10.0.26 and 11.0.8 are vulnerable to a blind SQL injection in the history log filter. The Log::convertFiltersValuesToSqlCriteria() function splits the affected_fields filter into key:operator:value parts and DBmysqlIterator::analyseCrit() does not quote OR, AND and NOT as column names, allowing an authenticated user with logs READ right to inject arbitrary SQL. Verified against glpi/glpi:10.0.25 (Docker + MariaDB): filter "OR::1 AND sleep(5)" produces "... AND (((((1 AND sleep(5))))))" in the query and the request takes ~5s. On 10.0.26 the same payload is rejected (~30ms).
Log in to view the POC file snapshot cached by Shenlong Bot
Log in to view