Nginx %00空位元組執行php漏洞

weixin_34067049發表於2016-12-13

 

Nginx如下版本:
0.5.*, 0.6.*, 0.7 <= 0.7.65, 0.8 <= 0.8.37
在使用PHP-FastCGI執行php的時候,URL裡面在遇到%00空位元組時與FastCGI處理不一致,導致可在非php檔案中嵌入php程式碼,通過訪問url+%00.php來執行其中的php程式碼。如:http://local/robots.txt%00.php會把robots.txt檔案當作php來執行。

nginx %00

目前還有許多nginx的低版本伺服器存在此漏洞,要養成禁止上傳檔案目錄下執行php的好習慣。

nginx %00 漏洞 

nginx %00

臨時解決辦法,在nginx虛擬機器配置或者fcgi.conf配置加如下程式碼:

if ($request_filename ~* (.*)\.php) {
    set $php_url $1;
}
if (!-e $php_url.php) {
    return 403;
}

當然升級到最新版本的nginx可以很好解決問題。

相關文章