Уразлівасць канфігурацый Nginx з некарэктнымі наладамі блока alias

Некаторыя серверы з nginx застаюцца ўразлівыя для тэхнікі Nginx Alias ​​Traversal, якая была прапанавана на канферэнцыі Blackhat яшчэ ў 2018 годзе і дазваляе атрымаць доступ да файлаў і каталогаў, размешчаных па-за каранёвым каталогам, зададзеным у дырэктыве "alias". Праблема выяўляецца толькі ў канфігурацыях з дырэктывай "alias", размешчанай усярэдзіне блока "location", параметр якой не завяршаецца на знак "/", у той час як "alias" завяршаецца на "/".

Уразлівасць канфігурацый Nginx з некарэктнымі наладамі блока alias

Сутнасць праблемы ў тым, што файлы для блокаў з дырэктывай 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

Дадаць каментар