9 月 26 日,PHP 官方發佈漏洞通告,其中指出:使用 Nginx + php-fpm 的服務器,在部分配置下,存在遠程代碼執行漏洞。而且該配置已被普遍使用,危害較大。php
Nginx 上 fastcgi_split_path_info 在處理帶有 %0a 的請求時,會由於遇到換行符 \n 致使 PATH_INFO 爲空。而 php-fpm 在處理 PATH_INFO 爲空的狀況下,存在邏輯缺陷。攻擊者經過精心的構造和利用,能夠致使遠程代碼執行。html
Nginx + php-fpm 的服務器,在使用以下配置的狀況下,均可能存在遠程代碼執行漏洞。linux
location ~ [^/]\.php(/|$) { ··· fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } }
不能夠遠程代碼執行:PHP 7.0/7.1/7.2/7.3git
只適用於php7github
靶機centos7:https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043golang
exp環境:kaligo語言環境docker
wget -c https://storage.googleapis.com/golang/go1.13.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.13.3.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
vim 編輯/etc/profile
文件最後加上export PATH=$PATH:/usr/local/go/bin
執行 source /etc/profile 命令 就安裝成功了
而後能夠直接vim
go get github.com/neex/phuip-fpizdam
或者
git clone https://github.com/neex/phuip-fpizdam
go build
docker-compose.yml所在目錄centos
docker-compose up -d
本地pull太慢,直接用雲服務器搭了一個。來複現api
攻擊:
靶機:
EXP執行成功後會在靶機的/tmp目錄下寫入了一個a文件
注意點:
您應該注意,只有部分PHP-FPM子進程受到了污染,所以請嘗試幾回以執行該命令。
如vulhub上所言,只有部分的子進程受到污染,因此咱們須要多執行幾回,就能夠實行RCE。
今天看到了一個py的exp:
https://github.com/theMiddleBlue/CVE-2019-11043