Рањивост у пһп-фпм-у која омогућава даљинско извршавање кода на серверу

Доступан корективна издања ПХП 7.3.11, 7.1.33 и 7.2.24, у којима елиминисан критическаа рањивост (ЦВЕ-2019-11043) у екстензији ПХП-ФПМ (ФастЦГИ Процесс Манагер), која вам омогућава да даљински извршавате свој код на систему. За напад на сервере који користе ПХП-ФПМ у комбинацији са Нгинк-ом за покретање ПХП скрипти, већ је јавно доступан радник експлоатисати.

Напад је могућ у нгинк конфигурацијама у којима се прослеђивање на ПХП-ФПМ врши одвајањем делова УРЛ-а помоћу „фастцги_сплит_патх_инфо“ и дефинисањем променљиве окружења ПАТХ_ИНФО, али без претходне провере постојања датотеке помоћу „три_филес $фастцги_сцрипт_наме“ директива или „иф (!-ф $) роот_роот$фастцги_сцрипт_наме)“. Проблем је такође појављује се у подешавањима понуђеним за НектЦлоуд платформу. На пример, конфигурације са структурама као што су:

локација ~ [^/]\.пхп(/|$) {
фастцги_сплит_патх_инфо ^ (. +? \. пхп) (/.*) $;
фастцги_парам ПАТХ_ИНФО $фастцги_патх_инфо;
фастцги_пасс пхп:9000;
}

Решење проблема можете пратити у дистрибутивним комплетима на овим страницама: Дебиан, РХЕЛ, убунту, СУСЕ/опенСУСЕ, Уник, Свод, федора. Као решење, можете да додате проверу постојања тражене ПХП датотеке после реда „фастцги_сплит_патх_инфо“:

три_филес $фастцги_сцрипт_наме =404;

Проблем је узрокован грешком при манипулисању показивачима у датотеци сапи/фпм/фпм/фпм_маин.ц. Када се додељује показивач, претпоставља се да вредност променљиве окружења ПАТХ_ИНФО мора да садржи префикс који одговара путањи до ПХП скрипте.
Ако директива фастцги_сплит_патх_инфо наводи поделу путање скрипте помоћу регуларног израза осетљивог на нови ред (на пример, многи примери сугеришу коришћење „^(.+?\.пхп)(/.*)$“), нападач може да обезбеди да празна вредност се уписује у ПАТХ_ИНФО променљиву окружења. У овом случају, даље уз извршење је писање патх_инфо[0] на нулу и позивање ФЦГИ_ПУТЕНВ.

Захтевајући УРЛ форматиран на одређени начин, нападач може да постигне померање показивача патх_инфо на први бајт структуре „_фцги_дата_сег“, а уписивање нуле у овај бајт ће довести до померања „цхар* пос“ показивач на претходно лоцирано меморијско подручје. Следећи позвани ФЦГИ_ПУТЕНВ ће преписати податке у овој меморији са вредношћу коју нападач може да контролише. Наведена меморија такође чува вредности других ФастЦГИ променљивих, а уписивањем њихових података нападач може да креира фиктивну ПХП_ВАЛУЕ променљиву и постигне извршење свог кода.

Извор: опеннет.ру

Додај коментар