PHP+Nginx在特定环境下远程代码执行漏洞(nginx配置php环境)

PHP+Nginx在特定环境下远程代码执行漏洞(nginx配置php环境)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-02-17 10:18:33
文章简介

在9月14日至18举办的RealWorldCTF中,国外安全研究员AndrewDanau在解决一道CTF题目时发现,向目标服务器URL发送%0a符号时,服务返回异常,疑

2025阿里云双十一服务器活动

在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)(/.+)$"){

PHP+Nginx在特定环境下远程代码执行漏洞,nginx配置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可以看看自己配置这个环境的时候有没有增加检查配置文件的代码。

参考资料

  • https://bugs.php.net/bug.php?id=78599
  • https://lab.wallarm.com/php-remo...world-ctf-exercise/
  • https://github.com/neex/phuip-fpizdam
  • https://blog.csdn.net/qq_18501087/article/details/102762421
  • https://www.bt.cn/bbs/thread-38951-1-1.html
  • 标签:
    Kvmla全场vps终身七折+送1G内存2核2G仅64元香港cn2/新加坡cn2/东京软银可选
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!