PHP-fpm 遠程代碼執行漏洞(CVE-2019-11043)復現


簡介

9 月 26 日,PHP 官方發布漏洞通告,其中指出:使用 Nginx + php-fpm 的服務器,在部分配置下,存在遠程代碼執行漏洞。並且該配置已被廣泛使用,危害較大。

漏洞概述

Nginx 上 fastcgi_split_path_info 在處理帶有 %0a 的請求時,會因為遇到換行符 \n 導致 PATH_INFO 為空。而 php-fpm 在處理 PATH_INFO 為空的情況下,存在邏輯缺陷。攻擊者通過精心的構造和利用,可以導致遠程代碼執行。

影響版本

Nginx + php-fpm 的服務器,在使用如下配置的情況下,都可能存在遠程代碼執行漏洞。

 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.3

只適用於php7

環境搭建

靶機centos7:https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043

exp環境:kaligo語言環境

首先安裝go環境

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 命令 就安裝成功了

 然后可以直接

go get github.com/neex/phuip-fpizdam
或者
git clone https://github.com/neex/phuip-fpizdam
go build

啟動靶機

docker-compose.yml所在目錄

docker-compose up -d

本地pull太慢,直接用雲服務器搭了一個。來復現

漏洞復現

攻擊:

 

靶機:

 

 EXP執行成功后會在靶機的/tmp目錄下寫入了一個a文件

 

 

 

 

注意點:

您應該注意,只有部分PHP-FPM子進程受到了污染,因此請嘗試幾次以執行該命令。

如vulhub上所言,只有部分的子進程受到污染,所以我們需要多執行幾次,就可以實行RCE。

 

今天看到了一個py的exp:

https://github.com/theMiddleBlue/CVE-2019-11043


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM