Weitere Veröffentlichungen

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.

Veröffentlichung (CVE-2023-45868)

Local File Inclusion to Arbitrary File Movement in ILIAS eLearning platform

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.

Responsible Disclosure

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

Allgemeine Beschreibung

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.

Proof of Concept (PoC)

content image

Zu sehen sind Konfigurationsdateien, die aus dem ursprünglich nicht öffentlichen Verzeichnis /files/myilias/auth/saml/config abgerufen werden.

Reproduktion der Sicherheitslücke

Reproduktionsschritte

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.

 

  1. Navigieren Sie auf Magazin
  2. Klicken Sie auf den Button Neues Objekt hinzufügen
  3. Klicken Sie auf Übung unter Assessment und legen Sie eine neue Übung über Option 1: Neue Übung anlegen an.
  4. Navigieren Sie auf Übungseinheiten > Bearbeiten > Übungseinheit hinzufügen. Wählen Sie dabei den Abgabetyp Datei.
test

Geben Sie bei der Erstellung der Übungseinheit einen beliebigen Titel an und speichern Sie den Eintrag. Navigieren Sie folgend auf Dateien zur Arbeitsanweisung.

content image

Wählen Sie eine beliebige Datei und klicken Sie auf Hochladen.

content image

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.

content image

!!! 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:

test

Klassifikation

CWE-20 Improper Input Validation

CWE-35 Path Traversal
CWE-73 External Control of File Name or Path

Bewertung

Exploitability Metrics

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 po­ten­zi­ell 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.

Externe Informationen