Напад је могућ у нгинк конфигурацијама у којима се прослеђивање на ПХП-ФПМ врши одвајањем делова УРЛ-а помоћу „фастцги_сплит_патх_инфо“ и дефинисањем променљиве окружења ПАТХ_ИНФО, али без претходне провере постојања датотеке помоћу „три_филес $фастцги_сцрипт_наме“ директива или „иф (!-ф $) роот_роот$фастцги_сцрипт_наме)“. Проблем је такође
локација ~ [^/]\.пхп(/|$) {
фастцги_сплит_патх_инфо ^ (. +? \. пхп) (/.*) $;
фастцги_парам ПАТХ_ИНФО $фастцги_патх_инфо;
фастцги_пасс пхп:9000;
}
Решење проблема можете пратити у дистрибутивним комплетима на овим страницама:
три_филес $фастцги_сцрипт_наме =404;
Проблем је узрокован грешком при манипулисању показивачима у датотеци
Ако директива фастцги_сплит_патх_инфо наводи поделу путање скрипте помоћу регуларног израза осетљивог на нови ред (на пример, многи примери сугеришу коришћење „^(.+?\.пхп)(/.*)$“), нападач може да обезбеди да празна вредност се уписује у ПАТХ_ИНФО променљиву окружења. У овом случају, даље уз извршење
Захтевајући УРЛ форматиран на одређени начин, нападач може да постигне померање показивача патх_инфо на први бајт структуре „_фцги_дата_сег“, а уписивање нуле у овај бајт ће довести до померања „цхар* пос“ показивач на претходно лоцирано меморијско подручје. Следећи позвани ФЦГИ_ПУТЕНВ ће преписати податке у овој меморији са вредношћу коју нападач може да контролише. Наведена меморија такође чува вредности других ФастЦГИ променљивих, а уписивањем њихових података нападач може да креира фиктивну ПХП_ВАЛУЕ променљиву и постигне извршење свог кода.
Извор: опеннет.ру