Kerentanan konfigurasi Nginx dengan tetapan blok alias yang salah

Sesetengah pelayan dengan nginx kekal terdedah kepada teknik Nginx Alias ​​​​Traversal, yang telah dicadangkan pada persidangan Blackhat pada tahun 2018 dan membenarkan akses kepada fail dan direktori yang terletak di luar direktori akar yang dinyatakan dalam arahan "alias". Masalahnya hanya muncul dalam konfigurasi dengan arahan "alias" yang diletakkan di dalam blok "lokasi", yang parameternya tidak berakhir dengan aksara "/", manakala "alias" berakhir dengan "/".

Kerentanan konfigurasi Nginx dengan tetapan blok alias yang salah

Intipati masalahnya ialah fail untuk blok dengan arahan alias diberikan dengan melampirkan laluan yang diminta, selepas memadankannya dengan topeng dari arahan lokasi dan memotong bahagian laluan yang dinyatakan dalam topeng ini. Untuk contoh konfigurasi terdedah yang ditunjukkan di atas, penyerang boleh meminta fail "/img../test.txt" dan permintaan ini akan sepadan dengan topeng yang dinyatakan di lokasi "/img", selepas itu baki ekor "../ test.txt" akan dilampirkan pada laluan daripada arahan alias "/var/images/" dan akibatnya fail "/var/images/../test.txt" akan diminta. Oleh itu, penyerang boleh mengakses mana-mana fail dalam direktori "/var", dan bukan hanya fail dalam "/var/images/", sebagai contoh, untuk memuat turun log nginx, anda boleh menghantar permintaan "/img../log/ nginx/ access.log".

Dalam konfigurasi di mana nilai arahan alias tidak berakhir dengan aksara "/" (contohnya, "alias /var/images;"), penyerang tidak boleh menukar kepada direktori induk, tetapi boleh meminta direktori lain dalam /var yang namanya bermula dengan yang dinyatakan dalam konfigurasi. Contohnya, dengan meminta "/img.old/test.txt" anda boleh mengakses direktori "var/images.old/test.txt".

Analisis repositori pada GitHub menunjukkan bahawa ralat dalam konfigurasi nginx yang membawa kepada masalah masih ditemui dalam projek sebenar. Sebagai contoh, kehadiran masalah telah dikesan di bahagian belakang pengurus kata laluan Bitwarden dan boleh digunakan untuk mengakses semua fail dalam direktori /etc/bitwarden (permintaan untuk /attachments dikeluarkan daripada /etc/bitwarden/attachments/), termasuk pangkalan data yang disimpan di sana dengan kata laluan "vault. db", sijil dan log, yang mana ia sudah mencukupi untuk menghantar permintaan "/attachments../vault.db", "/attachments../identity.pfx", "/attachments ../logs/api.log", dsb. .P.

Kerentanan konfigurasi Nginx dengan tetapan blok alias yang salah
Kerentanan konfigurasi Nginx dengan tetapan blok alias yang salah

Kaedah ini juga berfungsi dengan Google HPC Toolkit, di mana /permintaan statik telah diubah hala ke direktori "../hpc-toolkit/community/front-end/website/static/". Untuk mendapatkan pangkalan data dengan kunci peribadi dan bukti kelayakan, penyerang boleh menghantar pertanyaan "/static../.secret_key" dan "/static../db.sqlite3".

Kerentanan konfigurasi Nginx dengan tetapan blok alias yang salah


Sumber: opennet.ru

Tambah komen