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.
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.
⚑ 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
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.
In der Klasse class.ilSCORM13PlayerGUI.php ist die Funktion openLog von einem Nutzer mit den Rechten read aufrufbar:
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.
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.
CWE-20 Improper Input Validation
CWE-35 Path Traversal
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.
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.
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.
ILIAS (Vendor) Advisories
https://docu.ilias.de/goto_docu_pg_159931_35.html
https://docu.ilias.de/goto_docu_pg_154886_35.html