Nginx漏洞
作者:娱乐 来源:焦点 浏览: 【大 中 小】 发布时间:2026-10-17 06:13:29 评论数:
Nginx的漏洞,往往不是Nginx本身有多脆弱,而是配置它的那个人偷了懒。
就拿最经典的目录穿越漏洞来说吧。CVE-2021-23017,一个看似不起眼的DNS解析错误,却能让攻击者在内网里横着走。那会儿我帮朋友排查一个被入侵的测试服务器,日志里全是诡异的路径请求。翻到nginx.conf一看,alias配置写成了location /files { alias /var/www/files; }——少了末尾的斜杠。就这么一个斜杠的差距,攻击者构造/files../secret.txt就能绕过限制,直接读取服务器上任意文件。你说气不气人?Nginx官方文档白纸黑字写着“alias路径末尾必须加斜杠”,可多少人当耳旁风。
更隐蔽的坑藏在解析差异里。Nginx和PHP-FPM配合时,如果cgi.fix_pathinfo没关掉,攻击者上传一个shell.jpg,然后访问/shell.jpg/xxx.php,Nginx会把这个请求交给PHP处理,而PHP傻乎乎地认为shell.jpg就是可执行脚本。这就是著名的Nginx解析漏洞,2010年就曝光了,到现在还有企业中招。我见过某家电商平台因为这个漏洞被拖库,数据库备份文件被挂到公网,还是竞争对手发现的。
别以为新版本就安全。2024年曝出的HTTP/2快速重置攻击,Nginx默认配置下直接被打穿。攻击者不停发送请求头再立刻断开,服务器忙着维护半开连接,CPU瞬间飙到100%。那次我半夜被电话吵醒,客户说官网打不开,上去一看Nginx worker进程全卡在ngx_http_v2_state_header_complete状态。解决办法倒是简单——升级到1.25.3以上版本,或者干脆禁用HTTP/2。可问题是,多少运维还记得自己服务器上跑的是哪个版本?
说实话,Nginx的漏洞大多属于“知道的人觉得恶心,不知道的人觉得没事”。官方补丁出得勤快,但很多小公司用的是宝塔面板或OneinStack一键包,这些工具默认配置往往追求兼容性而牺牲安全性。比如默认开启server_tokens off只是隐藏版本号,可攻击者用nginx -V配合特定请求头照样能探测出精确版本。真正的防线在于:alias别乱写、fastcgi_param里加一句SCRIPT_FILENAME校验、定期用nginx -t检查配置、关注官方安全公告。
写这篇东西的时候,我刚帮一个客户修完他们nginx.conf里location ~ \.php$正则被绕过的问题——他们居然允许上传目录执行PHP。修完那一刻我就在想,Nginx本身就像一把锋利的刀,用得好是切菜神器,用不好就是自残凶器。你永远不知道下一个漏洞会以什么姿势出现,但你知道,只要配置规范、及时补丁,大多数攻击都能挡在门外。毕竟,真正的安全不是靠某个软件的天生免疫,而是靠操作它的人有没有那份敬畏心。
