Serangan kasebut mungkin dina konfigurasi nginx dimana diteruskeun kana PHP-FPM dilaksanakeun ku cara misahkeun bagian tina URL nganggo "fastcgi_split_path_info" sareng nangtukeun variabel lingkungan PATH_INFO, tapi tanpa mariksa heula ayana file nganggo "try_files $fastcgi_script_name" diréktif atawa "lamun (!-f $) document_root $ fastcgi_script_name)". Masalahna oge
lokasi ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Anjeun tiasa ngalacak résolusi masalah dina kit distribusi dina halaman ieu:
try_files $ fastcgi_script_name = 404;
Masalahna disababkeun ku kasalahan nalika ngamanipulasi pointer dina file
Upami diréktif fastcgi_split_path_info netepkeun ngabagi jalur skrip nganggo éksprési biasa anu sénsitip baris anyar (contona, seueur conto nyarankeun ngagunakeun "^(.+?\.php)(/.*)$"), teras panyerang tiasa mastikeun yén nilai kosong ditulis kana variabel lingkungan PATH_INFO. Dina hal ieu, salajengna sapanjang palaksanaan
Ku nyuhunkeun URL anu diformat ku cara anu tangtu, panyerang tiasa ngahontal peralihan panunjuk path_info kana bait munggaran tina struktur "_fcgi_data_seg", sareng nyerat nol kana bait ieu bakal ngakibatkeun gerakan "char * pos" pointer ka wewengkon memori lokasina saméméhna. Disebut FCGI_PUTENV salajengna bakal nimpa data dina mémori ieu kalayan nilai anu tiasa dikontrol ku panyerang. Mémori anu ditangtukeun ogé nyimpen nilai-nilai variabel FastCGI anu sanés, sareng ku nyerat datana, panyerang tiasa nyiptakeun variabel PHP_VALUE fiktif sareng ngahontal palaksanaan kodena.
sumber: opennet.ru