In unserem Labor schreiben wir regelmäßig in Form von Blogbeiträgen über identifizierte Sicherheitslücken, welche nach dem Responsible Disclosure Verfahren veröffentlicht werden.
26.10.2023 - Rene Rehme
Im Zuge eines Penetrationstests wurde eine Local File Inclusion (LFI) Sicherheitslücke in ILIAS Version7.25 (2023-09-12 Release) entdeckt. Eine Ausnutzung hat zudem zur Folge, dass durch den Angreifer definierte Dateien bzw. ganze Verzeichnisse verschoben werden (Arbitrary File Movement). Für die Ausnutzung der Sicherheitslücke werden keine Administrator-Rechte benötigt.
⚑ 25. Sep. 2023 - Die Sicherheitslücke wurde identifiziert.
→ 26. Sep. 2023 - Die Sicherheitslücke wurde an ILIAS gemeldet.
← 29. Sep. 2023 - ILIAS bestätigt den Erhalt des Reports.
← 06. Okt. 2023 - ILIAS bestätigt, dass die Sicherheitslücke geschlossen wurde.
← 23. Okt. 2023 - Patched ILIAS-Release: 8.6, 7.26
Bei Ausnutzung der Sicherheitslücke, werden Dateien aus einem vom Angreifer angegebenem Verzeichnis in den documentRoot verschoben, wo sie öffentlich abgerufen werden können. Dies kann je nach Verzeichnis zudem zur Folge haben, dass die Verfügbarkeit der betroffenen Dateien durch das Verschieben an einen anderen Ort nicht mehr gegeben ist.
Zu sehen sind Konfigurationsdateien, die aus dem ursprünglich nicht öffentlichen Verzeichnis /files/myilias/auth/saml/config abgerufen werden.
Schritt 1:
Installieren Sie eine ILIAS Version 7.25 2023-09-12 Instanz auf einem Testsystem.
Schritt 2:
Loggen Sie sich mit einem User Account ein, der Rechte die Einstellungen bearbeiten: ILIAS-Lernmodul bearbeiten besitzt.
Geben Sie bei der Erstellung der Übungseinheit einen beliebigen Titel an und speichern Sie den Eintrag. Navigieren Sie folgend auf Dateien zur Arbeitsanweisung.
Wählen Sie eine beliebige Datei und klicken Sie auf Hochladen.
Schritt 3:
Klicken Sie folgend bei der soeben hochgeladenen Datei auf die Aktion Umbenennen.
Fangen Sie den POST-Request der HTTP-Anfrage mit einem Programm Ihrer Wahl (z.B. mit Burp Suite -> Intercept) ab.
Modifizieren Sie den URL-Parameter old_name um via Directory Traversal z.B. das Verzeichnis /files/myilias anzugeben, welches in unserem Fall dem nicht öffentlichen files Verzeichnis von ILIAS entspricht.
Geben Sie abschließend über den POST-Parameter new_name einen beliebigen Ordnernamen (ohne Dateiendung) an.
!!! ACHTUNG !!!
Wenn Sie diesen Request senden, bedenken Sie, dass das angegebene Verzeichnis aus seinem ursprünglichen Ort verschoben wird! Dadurch werden alle Dateien, welche das System von dort bezieht, nicht mehr verfügbar sein.
Die Dateien, die normalerweise außerhalb des documentRoot liegen, werden durch die PHP-Funktion rename() in ein Verzeichnis innerhalb des documentRoot verschoben und sind öffentlich abrufbar:
CWE-20 Improper Input Validation
CWE-35 Path Traversal
CWE-73 External Control of File Name or Path
Attack Vector (AV): N
Es handelt sich um einen Netzwerkangriff. Die verwundbare Komponente ist "aus der Ferne ausnutzbar" und wird als ein Angriff betrachtet, der auf Protokollebene über das Internet stattfindet.
Attack Complexity (AC): L
Besondere Zugangsbedingungen oder mildernde Umstände bestehen nicht.
Privileges Required (PR): L
Der Angreifer benötigt Privilegien, die grundlegende Benutzerfunktionen eines Users bereitstellen. Für eine Ausnutzung reicht i.d.R die "Tutoren" Rolle.
User Interaction (UI): N
Es ist keine User-Interaktion durch ein Opfer notwendig.
Scope (S): U
Die anfällige und betroffene Komponente ist die Webanwendung.
Confidentiality (C): H
Bei einem erfolgreichen Angriff kommt es zu einem totalen Verlust der Vertraulichkeit. Ressourcen innerhalb der betroffenen Komponente und weiterführend Komponenten des Betriebssystems werden dem Angreifer bei gegebenem Lesezugriff und entsprechender Berechtigung durch den Webserver-User www-data offengelegt, indem Verzeichnisse mit Dateien an einen öffentlich abrufbaren Ort verschoben werden.
Integrity (I): N
Bei einem erfolgreichen Angriff kommt es zu keinem Verlust der Integrität. Der Angreifer ist nicht in der Lage, Dateien zu verändern. Vermutlich könnte ein Angreifer durch das Verschieben von Konfigurationsdateien an Zugänge gelangen, die Zugriff auf weitere Komponenten zur Folge haben (siehe PoC Bild). Es ist demnach potenziell möglich, dass ein Angreifer Daten oder Dateien durch eine weiterführende Eskalation verändern kann. Dies ist aber spekulativ.
Availability (A): H
Bei einem erfolgreichen Angriff ist der Angreifer ist in der Lage, den Zugang zu den Ressourcen der betroffenen Komponente und weiterführend aus Komponenten des Betriebssystems durch das Verschieben (und nachträglich löschen) von Verzeichnissen vollständig zu verweigern.
heise online
CVE (MITRE)
https://www.cve.org/CVERecord?id=CVE-2023-45868
NIST (National Vulnerability Database)