SQL Injection in Element Indexes via `criteria[orderBy]`
Beschreibung
## Zusammenfassung Der Endpunkt `element-indexes/get-elements` ist anfällig für **SQL Injection** über den Parameter `criteria[orderBy]` (JSON body). Die Anwendung kann diese Eingabe nicht löschen, bevor sie sie in der Datenbankabfrage verwendet. Ein Angreifer mit **Control Panel-Zugriff** kann beliebiges SQL in die `ORDER BY`-Klausel einfügen, indem er `viewState[order]` weglässt (oder beide auf dieselbe Nutzlast setzt). > [!NOTE] > Die `ORDER BY`-Klausel wird pro Zeile ausgeführt. 'SLEEP(1)' auf 10 Zeilen = 10s Verzögerung. --- ## PoC ### Erforderliche Berechtigungen - Zugriff auf die Systemsteuerung ### Schritte zum Reproduzieren 1. Anmelden an der Systemsteuerung 2. Navigieren Sie zu einem beliebigen Elementindex (z.B. **Users** `/admin/users`, **Entries**, **Assets**, etc.) 3. Abfangen der `POST`-Anfrage auf `/index.php?p=admin/actions/element-indexes/get-elements` 4. Ändern Sie den JSON-Body in ``json
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Auf eine behobene Version aktualisieren: 5.8.22, 4.16.18.
Empfohlene Schritte
- Betroffene Systeme identifizieren: Pixel & Tonic Craft CMS.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.
- Administrative Zugänge besonders absichern: MFA, Passwortrotation, Session-Invalidierung.