您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何解決PHP遠程代碼執行漏洞預警,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
在2019年9月26日,PHP官方發布了一則漏洞公告,此次漏洞公告中官方披露了一個遠程代碼執行漏洞,該漏洞是因PHP-FPM中的fpm_main.c文件的env_path_info下溢而導致的。該漏洞存在于PHP-FPM + Nginx組合使用并采用一定配置的情況下。該漏洞PoC已在2019年10月22日公布,PHP與Nginx組合使用的情況較為廣泛,攻擊者可利用該漏洞遠程執行任意代碼,所以危害性較大。
PHP-FPM(FastCGI流程管理器)是另一種PHP FastCGI實現,具有一些其他功能,可用于各種規模的站點,尤其是繁忙的站點。
對于PHP 5.3.3之前的php來說,PHP-FPM是一個補丁包,旨在將FastCGI進程管理整合進PHP包中。如果你使用的是PHP 5.3.3之前的PHP的話,就必須將它patch到你的PHP源代碼中,在編譯安裝PHP后才可以使用。而PHP 5.3.3已經集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制內存和進程、可以平滑重載PHP配置。
該漏洞是PHP-FPM中的fpm_main.c文件的env_path_info下溢導致,在sapi/fpm/fpm/fpm_main.c文件中的第1140行包含pointer arithmetics,這些pointer arithmetics假定env_path_info的前綴等于php腳本的路徑。但是,代碼不會檢查這些假設是否被滿足,缺少檢查會導致”path_info”變量中的指針無效。
這樣的條件可以在標準的Nginx配置中實現。如果有這樣的Nginx配置:
攻擊者可以使用換行符(編碼格式為%0a)來破壞`fastcgi_split_path_info`指令中的regexp。regexp損壞將導致空PATH_INFO,從而觸發該錯誤。
這個錯誤會導致代碼執行漏洞。在后面的代碼中,path_info[0]的值設置為0,然后再調用FCGI_PUTENV。攻擊者可以使用精心選擇的URL路徑長度和查詢字符串,使path_info精確地指向_fcgi_data_seg結構的第一個字節。然后將0放入其中則‘char* pos’字段向后移動,然后FCGI_PUTENV使用腳本路徑覆蓋一些數據(包括其他快速cgi變量)。使用這種技術,攻擊者可以創建一個偽PHP_VALUE fcgi變量,然后使用一系列精心選擇的配置值來執行代碼。
在2019-09-26更新之前下載的PHP-FPM,且必須為Nginx + php-fpm 的服務器使用如下配置,會受到影響。
深信服下一代防火墻可防御此漏洞, 建議部署深信服下一代防火墻的用戶開啟安全防御模塊,可輕松抵御此高危風險。
深信服云盾已第一時間從云端自動更新防護規則,云盾用戶無需操作,即可輕松、快速防御此高危風險。
1.如果業務不需要以下配置,建議用戶刪除:
2.使用github中的最新的PHP版本
上述就是小編為大家分享的如何解決PHP遠程代碼執行漏洞預警了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。