针对 CVE-2019-11043 的漏洞
这是针对 php-fpm 中的一个漏洞(CVE-2019-11043)的漏洞利用。在某些 nginx + php-fpm 配置中,该漏洞可以从外部触发。这意味着,如果您的配置存在漏洞,那么 Web 用户可能会获得代码执行权(请参见 下面)。
虽然我们懒得写文章,但 Orange Tsai 在他的博客上发表了 完美的分析。值得称赞。 此外,我的 ZeroNights 2019 幻灯片 可供下载。
如果 Web 服务器运行 nginx + php-fpm,且 nginx 的配置如下:
location ~ [^/]\.php(/|$) {
...
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
...
}如果没有任何脚本存在性检查(如 try_files),那么你可能可以利用此漏洞进行攻击。
location ~ [^/]\.php(/|$) 必须转发到 php-fpm(也许正则表达式可以更严格,请参阅 #1)。fastcgi_param PATH_INFO $fastcgi_path_info; 进行 PATH_INFO 变量赋值。此外,还必须使用 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 来设置 SCRIPT_FILENAME(可能会使用常量路径代替 $document_root)。一开始,我们认为这些变量总是在 fastcgi_params 文件中存在,但事实并非如此。暂无开放 Issues,或尚未同步最近议题。