PHP-FPM 遠程代碼執行漏洞(CVE-2019-11043)

PHP-FPM 遠程代碼執行漏洞(CVE-2019-11043)


在長亭科技舉辦的 Real World CTF 中,國外安全研究員 Andrew Danau 在解決一道 CTF 題目時發現,向目標服務器 URL 發送 %0a 符號時,服務返回異常,疑似存在漏洞。

在使用一些有錯誤的Nginx配置的情況下,通過惡意構造的數據包,即可讓PHP-FPM執行任意代碼。

漏洞分析

首先使用docker搭建漏洞環境,進入bash環境,查看docker下的nginx的配置文件

cat /etc/nginx/conf.d/default.conf

會發現如下配置

在這裏插入圖片描述

當nginx進行如上特殊配置時就會觸發該漏洞

nginx配置fastcgi_split_path_info並以^開始以$結尾,這種條件下可以使用換行符%0a來破壞fast_split_path_info中指令中的正則的判斷,導致空PATH_INFO。

在nginx層面沒有定義對文件的檢查比如try_files $uri = 404,如果做了文件檢查則請求不會被轉發到php-fpm。

漏洞利用

下載工具----https://github.com/neex/phuip-fpizdam

首先需要要安裝go語言環境

解壓縮移動到/usr/local----mv go /usr/local/

sudo tar -zvxf go1.14.3.linux-amd64.tar.gz -C /usr/local

修改profile文件----leafpad /etc/profile----最後一行加上export PATH=$PATH:/usr/local/go/bin

使配置的環境變量生效----source /etc/profile

查看版本信息----go version

在這裏插入圖片描述

安裝成功效果圖

然後就可以使用工具進行漏洞利用了,將工具下載好並解壓在終端中打開

在這裏插入圖片描述

這樣就執行成功,然後訪問網頁傳入參數實現遠程命令執行

在這裏插入圖片描述

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

漏洞修復

  1. 下載補丁

  2. 刪除引起漏洞的配置

  3. 添加文件檢查相關配置----try_files $uri =404

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章