
Piwigo 13.8.0 und niedriger ist anfällig für SQL-Injection in den Parametern max_level und min_register. Diese Parameter werden in der Funktion ws_user_gerList aus der Datei include\ws_functions\pwg.users.php verwendet, und genau diese Funktion, die an bestimmter Stelle von der Datei ws.php aufgerufen wird, kann auf /admin.php?page=user_list für die erweiterte Benutzersuche verwendet werden.
Im Rahmen der Untersuchung für die Abschlussarbeiten https://hdl.handle.net/10316/118126 und https://hdl.handle.net/10316/118059 wurde eine neue Schwachstelle in der Anwendung Piwigo entdeckt. Diese Schwachstelle beruht auf der fehlenden Bereinigung einiger Parameter bei einer gefilterten Suche über den folgenden Einstiegspunkt: HOST/admin.php?page=user_list.
Genauer gesagt sind Piwigo 13.8.0 und frühere Versionen anfällig für SQL-Injection über die Parameter max_level und min_register. Diese Parameter werden in der Funktion ws_user_gerList aus der Datei include\ws_functions\pwg.users.php verwendet; genau diese Funktion, die von der Datei ws.php an bestimmter Stelle aufgerufen wird, kann für eine erweiterte Benutzersuche unter /admin.php?page=user_list genutzt werden. Dies kann zu mehreren Konsequenzen führen, etwa „Code Execution“ und „Information Disclosure“, indem die SQL-Abfragen manipuliert werden. Daher müssen diese Parameter bereinigt werden, bevor sie in SQL-Abfragen verwendet werden. Dies betrifft Version 12.2.0 und könnte zukünftige Versionen betreffen, da in Version 13.8.0 eine ähnliche Schwachstelle gemeldet wurde.
Die genannten Parameter (max_level und min_register) werden in einer Variablen zusammengefasst, die sie bei der Ausführung einer SQL-Abfrage verwendet:

Gehen Sie zuerst auf die Seite HOST/admin.php?page=user_list.

Wenn wir uns die über Firefox gesendete Anfrage ansehen, können wir feststellen, dass mehrere Parameter existieren.

Wenn wir die Parameter 'max_level' und 'min_register' so manipulieren, dass sie ein Anführungszeichen enthalten, und die Anfrage anschließend erneut senden, erscheint ein MySQL-Fehler (der sogar die ausgeführte SQL-Abfrage anzeigt). Das beweist das Vorhandensein einer SQL-Injection-Schwachstelle in beiden Feldern.
'max_level'

'min_register'

Bis heute haben die Entwickler eine Lösung für dieses Problem bereitgestellt, die schlicht ein Whitelist-Ansatz ist, wie unter https://github.com/Piwigo/Piwigo/issues/2197 erwähnt. Dies ist natürlich nicht die beste Lösung, da es besser wäre, parametrisierte Abfragen zu verwenden. Da dies jedoch nicht möglich ist (aufgrund logistischer Bedenken, die von den Entwicklern genannt wurden), ist es ratsam, eine Web Application Firewall einzusetzen, um eine zusätzliche Schutzschicht zu schaffen.