白帽駭客資安網-網站安全的靠山,提供漏洞修補,網站被駭入侵,網站資訊安全服務

漏洞預警-PHP 5.6~7.3 版本遠端代碼執行漏洞

您的網站是否是以下PHP版本? 如果是的話請小心,進入您的伺服器查看自己的PHP就可以知道版本了。

PHP 遠端代碼執行漏洞預警
影響版本
 
當Nginx + php-fpm 的伺服器有如下配置的時候,都會出現RCE漏洞
 
  location ~ [^/]\.php(/|$) {
       fastcgi_split_path_info ^(.+?\.php)(/.*)$;
       fastcgi_param PATH_INFO       $fastcgi_path_info;
       fastcgi_pass   php:9000;
       ...
 }
}
 
當啟用了上述 Nginx 配置後,以下 PHP 版本受本次漏洞影響,另外,PHP 5.6版本也受此漏洞影響,但目前只能Crash,不可以遠端代碼執行:
 
PHP 7.0 版本
PHP 7.1 版本
PHP 7.2 版本
PHP 7.3 版本
 
漏洞概述
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配置。
 
在9 月 14 日至 18 舉辦的 Real World CTF 中,國外安全研究員 Andrew Danau 在解決一道 CTF 題目時發現,向目標伺服器 URL 發送 %0a 符號時,服務返回異常,疑似存在漏洞。
 
9 月 26 日,PHP 官方發佈漏洞通告,其中指出:使用 Nginx + php-fpm 的伺服器,在部分配置下,存在遠端代碼執行漏洞。並且該配置已被廣泛使用,危害較大。
 
Nginx 上 fastcgi_split_path_info 在處理帶有 %0a 的請求時,會因為遇到分行符號 \n 導致 PATH_INFO 為空。而 php-fpm 在處理 PATH_INFO 為空的情況下,存在邏輯缺陷。攻擊者通過精心的構造和利用,可以導致遠端代碼執行。
 
漏洞驗證
 
POC:https://github.com/neex/phuip-fpizdam。
 
修復建議
 
由於漏洞利用需要Nginx+php-fpm環境,使用者預設安裝的配置不受影響,為確保安全,建議您檢查本地 Nginx 設定檔
CentOS預設目錄為/etc/nginx/nginx.conf
 
確認是否存在上述風險配置,如果存在,建議您找到並刪除如下配置項:
 
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO       $fastcgi_path_info;
 
如不會操作可找我們esafe白帽駭客資安網幫您維護處理。謝謝
分享: