Sommige servers met nginx blijven kwetsbaar voor de techniek Nginx Alias Traversal, die op de Blackhat-conferentie in 2018 werd gepresenteerd en toegang biedt tot bestanden en mappen die buiten de rootdirectory liggen die is ingesteld in de âaliasâ-directive. Het probleem komt alleen voor in configuraties waarbij de âaliasâ-directive binnen een âlocationâ-blok is geplaatst en de parameter niet eindigt op het teken â/â, terwijl âaliasâ eindigt op â/â.

De kern van het probleem is dat bestanden voor blokken met de alias-directive worden geleverd via het toevoegen van het opgevraagde pad, na het vergelijken met het masker van de âlocationâ-directive en het knippen van het gedeelte van het pad dat in dit masker is gedefinieerd. Voor het hierboven getoonde voorbeeld van een kwetsbare configuratie kan een aanvaller het bestand â/img../test.txtâ opvragen en dit verzoek valt onder het opgegeven masker van âlocationâ â/imgâ, waarna het resterende gedeelte â../test.txtâ zal worden toegevoegd aan het pad van de alias-directive â/var/images/â, en uiteindelijk wordt het bestand â/var/images/../test.txtâ opgevraagd. Zo kan een aanvaller toegang krijgen tot elk bestand in de â/varâ-directory, niet alleen tot de bestanden in â/var/images/â, bijvoorbeeld om de nginx-logboek te downloaden kan het verzoek â/img../log/nginx/access.logâ worden verzonden.
In configuraties waarin de waarde van de alias-directive niet eindigt op het teken â/â (bijvoorbeeld âalias /var/images;â), kan de aanvaller niet naar de bovenliggende directory gaan, maar heeft wel de mogelijkheid om een andere directory in â/varâ op te vragen, waarvan de naam begint met hetgeen in de configuratie is opgegeven. Bijvoorbeeld, door â/img.old/test.txtâ op te vragen, kan toegang worden verkregen tot de directory âvar/images.old/test.txtâ.
Analyse van repositories op GitHub heeft aangetoond dat de fouten in de nginx-configuratie die leiden tot dit probleem nog steeds voorkomen in echte projecten. Bijvoorbeeld, het probleem werd ontdekt in de serverzijde van de wachtwoordmanager Bitwarden en kon worden gebruikt om toegang te krijgen tot alle bestanden in de directory â/etc/bitwardenâ (verzoeken naar â/attachmentsâ werden geleverd vanuit â/etc/bitwarden/attachments/â), inclusief de daar opgeslagen database met wachtwoorden âvault.dbâ, certificaten en logboeken, waarvoor eenvoudigweg het verzenden van verzoeken â/attachments../vault.dbâ, â/attachments../identity.pfxâ, â/attachments../logs/api.logâ enzovoort voldoende was.


De methode werkte ook met de Google HPC Toolkit, waarin verzoeken naar â/staticâ werden omgeleid naar de directory â../hpc-toolkit/community/front-end/website/static/â. Voor toegang tot de database met de geheime sleutel en inloggegevens kon een aanvaller verzoeken sturen naar â/static../.secret_keyâ en â/static../db.sqlite3â.

Bron: opennet.ru
