Уразливість конфігурацій Nginx з некоректними налаштуваннями блоку alias

Деякі сервери з nginx залишаються вразливими для техніки Nginx Alias ​​Traversal, яка була запропонована на конференції Blackhat ще в 2018 році і дозволяє отримати доступ до файлів і каталогів, розміщених поза кореневим каталогом, заданим у директиві «alias». Проблема проявляється лише в конфігураціях з директивою «alias», розміщеною всередині блоку «location», параметр якої не завершується на символ «/», тоді як «alias» завершується на «/».

Уразливість конфігурацій Nginx з некоректними налаштуваннями блоку alias

Суть проблеми в тому, що файли для блоків з директивою або віддаються через прикріплення запитаного шляху, після його зіставлення з маскою з директиви location і вирізування заданої в цій масці частини шляху. Для наведеного вище прикладу вразливої ​​конфігурації атакуючий може запросити файл «/img../test.txt» і цей запит підпаде під вказану в location маску «/img», після чого хвіст «../test.txt», що залишається, буде прикріплений до шляху з директиви alias "/var/images/" і в результаті буде запитаний файл "/var/images/../test.txt". Таким чином, атакуючим може отримати доступ до будь-яких файлів у каталозі /var, а не тільки до файлів /var/images/, наприклад, для завантаження лога nginx можна відправити запит /img../log/nginx/ access.log».

У конфігураціях, в яких значення директиви alias не завершується символом "/" (наприклад, "alias /var/images;"), атакуючий не може перейти в батьківський каталог, але має можливість запросити інший каталог в /var, початок імені якого збігається з вказаним у конфігурації. Наприклад, запитавши "/img.old/test.txt" можна отримати доступ до каталогу "var/images.old/test.txt".

Аналіз репозиторіїв на GitHub показав, що помилки, що призводять до проблеми в налаштуванні nginx, досі зустрічаються в реальних проектах. Наприклад, наявність проблеми було виявлено в серверній частині менеджера паролів Bitwarden і могло використовуватися для доступу до всіх файлів у каталозі /etc/bitwarden (запити /attachments віддавалися з /etc/bitwarden/attachments/), включаючи БД з паролями «vault. db», сертифікат та логи, для отримання яких достатньо було надіслати запити «/attachments../vault.db», «/attachments../identity.pfx», «/attachments../logs/api.log» тощо .п.

Уразливість конфігурацій Nginx з некоректними налаштуваннями блоку alias
Уразливість конфігурацій Nginx з некоректними налаштуваннями блоку alias

Метод також спрацював з Google HPC Toolkit, в якому запити /static перенаправлялися до каталогу "../hpc-toolkit/community/front-end/website/static/". Для отримання БД із закритим ключем та обліковими даними атакуючий міг надіслати запити "/static../.secret_key" та "/static../db.sqlite3".

Уразливість конфігурацій Nginx з некоректними налаштуваннями блоку alias


Джерело: opennet.ru

Додати коментар або відгук