在9月14日至18举办的RealWorldCTF中,国外安全研究员AndrewDanau在解决一道CTF题目时发现,向目标服务器URL发送%0a符号时,服务返回异常,疑似存在漏洞。
9月26日,PHP官方发布漏洞通告,其中指出:使用Nginx+php-fpm的服务器,在部分配置下,存在远程代码执行漏洞(CVE-2019-11043)。并且该配置已被广泛使用,危害较大。
Nginx上fastcgi_split_path_info在处理带有%0a的请求时,会因为遇到换行符
导致PATH_INFO为空。而php-fpm在处理PATH_INFO为空的情况下,存在逻辑缺陷。攻击者通过精心的构造和利用,可以导致远程代码执行。
Nginx+php-fpm的服务器,在使用如下配置的情况下,都可能存在远程代码执行漏洞。
location~[^/]\.php(/|$){
fastcgi_split_path_info^(.+?\.php)(/.*)$;
fastcgi_paramPATH_INFO??$fastcgi_path_info;
PHP5.6版本也受此漏洞影响,但目前只能Crash,不可以远程代码执行:
宝塔的nginx+php配置如下:
宝塔配置的nginx+php-fpm配置文件默认包含文件检查配置,不受此漏洞影响。
fastcgi_passunix:/tmp/php-cgi-72.sock;
>>pathinfo.confcode:
set$real_script_name$fastcgi_script_name;
if($fastcgi_script_name~"^(.+?\.php)(/.+)$"){

fastcgi_paramSCRIPT_NAME$real_script_name;
fastcgi_paramPATH_INFO$path_info;
服务器环境为nginxphp-fpm,并且nginx的配置像下面这样
location~[^/]\.php(/|$){
fastcgi_split_path_info^(.?\.php)(/.*)$;
fastcgi_paramPATH_INFO$fastcgi_path_info;
解决方案
(宝塔配置的nginx+php-fpm不受此漏洞影响)在nginx中增加一行文件检查配置:
所以正确的配置就是这样的;
fastcgi_passunix:/tmp/php-cgi-72.sock;
如果不知道代码放在什么地方,我们看图:
宝塔配置的nginx+php-fpm配置文件默认包含文件检查配置,不受此漏洞影响,如果你是lnmp,oneinstack可以看看自己配置这个环境的时候有没有增加检查配置文件的代码。
参考资料
本文来源:vps主机--PHP+Nginx在特定环境下远程代码执行漏洞(nginx配置php环境)
本文地址:https://www.idcbaba.com/vps/4574.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



