Nginx-agorda vundebleco kun malĝustaj kaŝnomo-blokaj agordoj

Iuj Nginx-serviloj restas vundeblaj al la tekniko Nginx Alias ​​​​Traversal, kiu estis proponita ĉe la Blackhat-konferenco en 2018 kaj permesas aliron al dosieroj kaj dosierujoj situantaj ekster la radika dosierujo specifita en la "kaŝnomo" direktivo. La problemo nur aperas en agordoj kun "kaŝnomo" direktivo metita ene de "loko" bloko kies parametro ne finiĝas per "/" signo, dum "kaŝnomo" finiĝas per "/".

Nginx-agorda vundebleco kun malĝustaj kaŝnomo-blokaj agordoj

La esenco de la problemo estas, ke dosieroj por blokoj kun la kaŝnomo-direktivo estas servataj per alfiksado de la petita vojo, post kompari ĝin kun la masko de la loka direktivo kaj eltranĉante la parton de la vojo specifita en ĉi tiu masko. Por la ekzemplo de vundebla agordo montrita supre, atakanto povas peti la dosieron "/img../test.txt" kaj ĉi tiu peto falos sub la masko "/img" specifita en loko, post kio la restanta vosto ".. /test.txt” estos alfiksita al la vojo de la kaŝnomo-direktivo “/var/images/” kaj eventuale petos la dosieron “/var/images/../test.txt”. Tiel, atakantoj povas aliri ajnajn dosierojn en la dosierujo "/var", kaj ne nur dosierojn en "/var/images/", ekzemple, por elŝuti la nginx-protokolo, vi povas sendi la peton "/img../log/". nginx/ access.log".

En agordoj en kiuj la valoro de la kaŝnomo-direktivo ne finiĝas per "/" signo (ekzemple, "alias /var/images;"), la atakanto ne povas ŝanĝi al la gepatra dosierujo, sed povas peti alian dosierujon en /var. kies nomo komenciĝas per la sama specifita en la agordo. Ekzemple, petante "/img.old/test.txt" vi povas aliri la dosierujon "var/images.old/test.txt".

Analizo de deponejoj sur GitHub montris, ke eraroj en nginx-agordo, kiuj kondukas al la problemo, ankoraŭ okazas en realaj projektoj. Ekzemple, la problemo estis identigita en la malantaŭo de la pasvortmanaĝero de Bitwarden kaj povus esti uzata por aliri ĉiujn dosierojn en la dosierujo /etc/bitwarden (petoj de /attachments estis eldonitaj de /etc/bitwarden/attachments/), inkluzive de la "trezorejo". .db", atestilo kaj protokoloj, por akiri kiujn sufiĉis sendi petojn "/attachments../vault.db", "/attachments../identity.pfx", "/attachments../logs/api.log ", ktp. .P.

Nginx-agorda vundebleco kun malĝustaj kaŝnomo-blokaj agordoj
Nginx-agorda vundebleco kun malĝustaj kaŝnomo-blokaj agordoj

La metodo ankaŭ funkciis kun Google HPC Toolkit, kiu redirektis /static petojn al la "../hpc-toolkit/community/front-end/website/static/" dosierujo. Por akiri datumbazon kun privata ŝlosilo kaj akreditaĵoj, atakanto povus sendi petojn "/static../.secret_key" kaj "/static../db.sqlite3".

Nginx-agorda vundebleco kun malĝustaj kaŝnomo-blokaj agordoj


fonto: opennet.ru

Aldoni komenton