SicherheitsanfÀlligkeit von Nginx-Konfigurationen mit fehlerhaften Alias-Blockeinstellungen

Einige Server mit nginx sind anfĂ€llig fĂŒr die Nginx Alias Traversal-Technik, die 2018 auf der Blackhat-Konferenz vorgestellt wurde und den Zugriff auf Dateien und Verzeichnisse ermöglicht, die außerhalb des in der Direktive „alias“ angegebenen Stammverzeichnisses liegen. Das Problem tritt nur in Konfigurationen auf, in denen die Direktive „alias“ innerhalb des „location“-Blocks platziert ist, deren Parameter nicht mit dem Zeichen „/“ endet, wĂ€hrend „alias“ mit „/“ endet.

SicherheitsanfÀlligkeit von Nginx-Konfigurationen mit fehlerhaften Alias-Blockeinstellungen

Das Wesentliche des Problems ist, dass Dateien fĂŒr Blöcke mit der Direktive alias durch AnfĂŒgung des angeforderten Pfades zurĂŒckgegeben werden, nachdem sie mit dem Muster aus der Direktive location abgeglichen und der in diesem Muster angegebene Teil des Pfades entfernt wurde. FĂŒr das obige Beispiel der anfĂ€lligen Konfiguration kann ein Angreifer die Datei „/img.. /test.txt“ anfordern und dieser Request fĂ€llt unter das angegebene location-Muster „/img“, nach dem der verbleibende Rest „.. /test.txt“ an den Pfad aus der Direktive alias „/var/images/“ angehĂ€ngt wird, sodass letztlich die Datei „/var/images/.. /test.txt“ angefordert wird. Damit kann ein Angreifer auf beliebige Dateien im Verzeichnis „/var“ zugreifen, und nicht nur auf Dateien in „/var/images/“, beispielsweise könnte fĂŒr den Download des nginx-Logs die Anfrage „/img.. /log/nginx/access.log“ gesendet werden.

In Konfigurationen, in denen der Wert der Direktive alias nicht mit dem Zeichen „/“ endet (zum Beispiel „alias /var/images;“), kann ein Angreifer nicht in das ĂŒbergeordnete Verzeichnis wechseln, hat aber die Möglichkeit, ein anderes Verzeichnis in /var anzufordern, dessen Name mit dem in der Konfiguration angegebenen ĂŒbereinstimmt. Beispielsweise könnte durch das Anfordern von „/img.old/test.txt“ Zugang zum Verzeichnis „var/images.old/test.txt“ gewĂ€hrt werden.

Die Analyse von Repositories auf GitHub hat gezeigt, dass die konfigurationsbedingten Fehler in nginx nach wie vor in realen Projekten vorkommen. Zum Beispiel wurde das Problem im Backend des Passwortmanagers Bitwarden identifiziert und könnte verwendet werden, um auf alle Dateien im Verzeichnis /etc/bitwarden zuzugreifen (Anfragen an /attachments wurden aus /etc/bitwarden/attachments/ zurĂŒckgegeben), einschließlich der darin gespeicherten Datenbank mit Passwörtern „vault.db“, Zertifikat und Logs, fĂŒr deren Erhalt es ausreichte, die Anfragen „/attachments.. /vault.db“, „/attachments.. /identity.pfx“, „/attachments.. /logs/api.log“ usw. zu senden.

SicherheitsanfÀlligkeit von Nginx-Konfigurationen mit fehlerhaften Alias-Blockeinstellungen
SicherheitsanfÀlligkeit von Nginx-Konfigurationen mit fehlerhaften Alias-Blockeinstellungen

Die Methode funktionierte auch mit dem Google HPC Toolkit, bei dem Anfragen an /static in das Verzeichnis „../hpc-toolkit/community/front-end/website/static/“ umgeleitet wurden. Um auf die Datenbank mit dem privaten SchlĂŒssel und den Zugangsdaten zuzugreifen, konnte der Angreifer die Anfragen „/static.. /.secret_key“ und „/static.. /db.sqlite3“ senden.

SicherheitsanfÀlligkeit von Nginx-Konfigurationen mit fehlerhaften Alias-Blockeinstellungen


Quelle: opennet.ru
60GB SSD 8Gb DDR4