
Piwigo 13.8.0 e versões anteriores são vulneráveis a Injeção de SQL nos parâmetros max_level e min_register. Esses parâmetros são usados na função ws_user_gerList do arquivo include\ws_functions\pwg.users.php e essa mesma função, que é chamada pelo arquivo ws.php em determinado momento, pode ser usada para pesquisar usuários de forma avançada em /admin.php?page=user_list.
Durante a investigação para a tese https://hdl.handle.net/10316/118126 e https://hdl.handle.net/10316/118059 foi descoberta uma nova vulnerabilidade na aplicação Piwigo. Esta vulnerabilidade resulta da falta de sanitização de alguns parâmetros numa pesquisa filtrada a partir do seguinte ponto, HOST/admin.php?page=user_list.
Mais especificamente, o Piwigo 13.8.0 e versões anteriores é vulnerável a Injeção SQL nos parâmetros max_level e min_register. Estes parâmetros são usados na função ws_user_gerList do ficheiro include\ws_functions\pwg.users.php, e esta mesma função, que é chamada pelo ficheiro ws.php em determinado momento, pode ser usada para pesquisar utilizadores de forma avançada em /admin.php?page=user_list. Isto pode levar a várias consequências como "Execução de Código" e "Divulgação de Informação" ao manipular as consultas SQL, pelo que estes parâmetros devem ser sanitizados antes de serem usados em qualquer consulta SQL. Isto afeta a versão 12.2.0 e pode afetar versões futuras, uma vez que existe uma vulnerabilidade semelhante relatada na versão 13.8.0.
Os parâmetros mencionados (max_level e min_register) são agrupados numa variável que os utilizará na execução de uma consulta SQL:

Primeiro, aceda à página HOST/admin.php?page=user_list

Ao seguir o pedido enviado através do Firefox, podemos ver que existem vários parâmetros

Se manipularmos os parâmetros 'max_level' e 'min_register' de forma a incluir uma aspa e reenviarmos o pedido, aparecerá um erro MYSQL (mostrando inclusive a consulta SQL executada), o que prova a existência de uma vulnerabilidade de Injeção SQL em ambos os campos.
'max_level'

'min_register'

Até à data, os programadores implementaram uma correção para este problema, que é simplesmente uma abordagem de lista branca, como mencionado em: https://github.com/Piwigo/Piwigo/issues/2197. Esta não é, obviamente, a melhor solução, pois seria melhor adicionar consultas parametrizadas, mas como não é possível (devido a preocupações logísticas mencionadas pelos programadores), é aconselhável usar um Firewall de Aplicação Web para adicionar uma camada extra de proteção.