此漏洞爆出的是早在2017年就爆出的nginx 文件解析漏洞
利用方式:
xxx.png/xxx.php

首先准备文件11.png,内容为:
<?php phpinfo() ?>
在浏览器中访问 http://127.0.0.1/11.png 显示图片解析错误。在浏览器中访问http://127.0.0.1/11.png/.php ,显示:“Access denied.” 。这就有意思了,test.jpg是文件不是目录,test.php更是根本就不存在的文件,访问/test.jpg/test.php没有报404,而是显示“Access denied.” 。
Nginx拿到文件路径(更专业的说法是URI)/test.jpg/test.php后,一看后缀是.php,便认为该文件是php文件,转交给php去处理。php一看/test.jpg/test.php不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文件了,又因为后缀为.jpg,php认为这不是php文件,于是返回“Access denied.”。
CGI公共网关接口
这其中涉及到php的一个选项:cgi.fix_pathinfo,该值默认为1,表示开启。开启这一选项有什么用呢?看名字就知道是对文件路径进行“修理”。何谓“修理”?举个例子,当php遇到文件路径“/aaa.xxx/bbb.yyy/ccc.zzz”时

本文探讨了2017年发现的Nginx文件解析漏洞,通过实例展示了如何利用xxx.png/xxx.php格式触发漏洞。当cgi.fix_pathinfo选项开启时,Nginx将.jpg文件误解析为php并尝试执行。尽管新版PHP的security.limit_extensions限制了这种情况,但通过修改配置文件仍可能使.jpg成为合法php后缀,从而成功执行代码。此漏洞主要由Nginx的php配置不正确引起,而非Nginx本身的问题。
最低0.47元/天 解锁文章
1033

被折叠的 条评论
为什么被折叠?



