Nginx 解析漏洞详解
Nginx 解析漏洞是一类常见的网络安全问题,主要由于配置错误导致,以下是对这一漏洞的详细分析:
原理
1、配置文件错误:
Nginx 配置:在/etc/nginx/conf.d/default.conf
文件中,错误的配置可能包括fastcgi_params SCRIPT_FILENAME $DOCUMENT_ROOT/$fastcgi_script_name
。
PHP 配置:在php.ini
文件中,cgi.fix_pathinfo
默认值为1,这会对文件路径进行美化,如果一个文件不存在,它会向上寻找存在的文件,最终可能会将图片文件当作 PHP 文件执行。
安全设置:在php-fpm.conf
中,security.limit_extensions
属性需要设为空,以允许将非 PHP 文件当作 PHP 文件执行。
2、具体机制:
当 URL 指定的文件不存在时,Nginx 会尝试解析上级文件,导致安全问题。
上传包含 PHP 代码的图片文件(如 .png),通过添加/not_exist.php
后缀,可以使其被当作 PHP 文件执行。
危害
绕过检测:攻击者可以利用该漏洞绕过文件上传检测,上传包含恶意代码的文件。
执行恶意代码:通过文件解析漏洞执行上述文件,可能导致后门植入,数据窃取和篡改。
服务器控制:生成 shell.php 文件,实现对靶机的控制。
检测
模糊测试:最通用的检测方式是通过模糊测试来实现。
防御
规范化配置:使用规范化、模板化、经过安全测试的配置文件。
敏感配置检查:系统上线前对敏感配置文件进行检查。
设置限制:将php.ini
中的cgi.fix_pathinfo
设置为0,限制security.limit_extensions
只解析.php
文件。
复现
环境搭建:使用 Vulhub 的 Docker 环境进行测试。
步骤示例:
启动容器并查看 Nginx 配置文件。
上传含 POC 的图片马文件。
访问网站并添加/not_exist.php
,观察是否被当作 PHP 文件执行。
通过以上步骤和措施,可以有效理解和防范 Nginx 解析漏洞。
小伙伴们,上文介绍nginx 解析漏洞的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/65652.html