您现在的位置是:焦点 >>正文
nginx解析漏洞
焦点2745人已围观
简介Nginx解析漏洞,说白了就是当Nginx与PHP-FPM配合时,攻击者能通过一个特殊的URL让服务器执行不该执行的文件。 2019年那会儿,我亲眼见过一个站点被人用`/upload/avatar.j ...
Nginx解析漏洞,析漏说白了就是析漏当Nginx与PHP-FPM配合时,攻击者能通过一个特殊的析漏URL让服务器执行不该执行的文件。
2019年那会儿,析漏我亲眼见过一个站点被人用`/upload/avatar.jpg/.php`打穿。析漏图片马直接变成了webshell,析漏服务器权限瞬间归了攻击者。析漏这不是析漏什么高深技巧,纯粹是析漏配置不当留下的病根。
漏洞的析漏核心在Nginx的`fastcgi_split_path_info`和`try_files`这两行配置上。很多运维图省事,析漏直接抄网上的析漏模板,结果把`cgi.fix_pathinfo`设为1,析漏PHP-FPM就会自作主张地解析路径。析漏你请求`/shell.jpg/.php`,析漏它找不到`.php`这个文件,就回头把`shell.jpg`当PHP脚本执行了。
修复方案其实特别简单——把`cgi.fix_pathinfo`改成0,或者在Nginx配置里加一行`if ($request_filename ~ \.php$) { return 403; }`。但真正的问题在于,很多开发团队压根不知道自己踩了这个坑,直到被扫描器扫出漏洞才慌慌张张去补。
有个细节值得留意:这个漏洞只在Nginx+PHP-FPM的组合里出现,换成Apache就没这毛病。为什么?因为Apache对路径的处理方式不同,它不会去猜你请求的文件到底是不是PHP。Nginx的设计初衷是高性能静态服务,动态解析交给后端,结果这个“甩锅”机制反而成了突破口。
我见过最离谱的案例是某公司把用户上传的PDF文件直接存在web根目录,文件名还是用户可控的。攻击者上传一个`evil.pdf`,然后访问`/uploads/evil.pdf/.php`,服务器就乖乖地把PDF内容当PHP代码跑。PDF里嵌入的PHP代码直接执行,这操作简直像把钥匙放在门口垫子下面。
现在的Nginx版本其实已经默认关闭了`cgi.fix_pathinfo`,但老项目、老镜像、云市场里的廉价模板,照样带着这个洞四处跑。你去GitHub搜`nginx.conf`,随便翻几个高star的仓库,八成还能看到`fastcgi_split_path_info ^(.+?\.php)(/.*)$;`这种写法。
说句实在话,这个漏洞本身没什么技术含量,但它反映了一个普遍问题——很多人用Nginx只是照葫芦画瓢,根本不清楚每行配置在干什么。安全漏洞往往不是代码写错,而是配置不当。你让一个新手去调Nginx,他能给你整出十个不同版本的坑。
最后提醒一句,如果你还在用LNMP一键包,赶紧去查一下`php.ini`里的`cgi.fix_pathinfo`。别等被黑了才想起来,这玩意儿修复成本几乎为零,但被利用的代价可能是整个服务器沦陷。
Tags:
相关文章
海盗湾bt官网
焦点海盗湾的官网首页常年挂着一艘歪斜的帆船图标,下面一行小字“The galaxy's most resilient BitTorrent site”——银河系最顽强的BT站点。这话不虚。从2003年瑞典 ...
【焦点】
阅读更多手机投屏显示media address is not ava
焦点手机投屏,那个“media address is not available”的报错弹出来的时候,我正拿着遥控器对着客厅电视比划。手机屏幕上的视频卡在缓冲,电视却显示着一行冷冰冰的英文。那一刻我忽然明 ...
【焦点】
阅读更多中国联通呼和浩特技术专家
焦点中国联通呼和浩特技术专家,这个名字听起来挺唬人的。实际上,他们干的事情很具体——守着中国联通在呼和浩特那个超大规模数据中心,让几千个机柜里的服务器别出乱子。我认识其中一个姓张的工程师,四十出头,头发已 ...
【焦点】
阅读更多