Die aanval is moontlik in nginx-konfigurasies waarin aanstuur in PHP-FPM uitgevoer word deur dele van die URL te verdeel deur "fastcgi_split_path_info" te gebruik en die PATH_INFO omgewingsveranderlike te definieer, maar sonder om eers die bestaan van die lêer na te gaan met die "try_files $fastcgi_script_name" opdrag of die "if (!-f $ document_root$fastcgi_script_name)". probleem insluitend
ligging ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
U kan die probleemoplossing in verspreidings op hierdie bladsye volg:
probeer_lêers $fastcgi_script_name =404;
Die probleem word veroorsaak deur 'n fout tydens die manipulering van wysers in die lêer
As die fastcgi_split_path_info-instruksie die verdeling van die pad na die skrif spesifiseer deur 'n gewone uitdrukking te gebruik wat sensitief is vir die oordrag van die nuwelynkarakter (byvoorbeeld, in baie voorbeelde word voorgestel om "^(.+?\.php)(/. *)$"), dan kan die aanvaller 'n leë waarde na die PATH_INFO omgewingsveranderlike skryf. In hierdie geval, verder langs die uitvoering
Deur 'n URL wat op 'n sekere manier geformateer is, te versoek, kan 'n aanvaller die pad_inligting-wyser na die eerste greep van die "_fcgi_data_seg"-struktuur skuif, en om nul na hierdie greep te skryf, sal die "char * pos"-wyser na die vorige geheue-area skuif. Die FCGI_PUTENV wat volgende genoem word, sal die data in hierdie geheue oorskryf met 'n waarde wat die aanvaller kan beheer. Die gespesifiseerde geheue stoor ook die waardes van ander FastCGI-veranderlikes, en deur hul data te skryf, kan die aanvaller 'n dummy PHP_VALUE-veranderlike skep en die uitvoering van sy kode bereik.
Bron: opennet.ru