25、文件上传漏洞——Nginx文件解析漏洞
2023-12-13 03:49:55
一、Nginx配置
- 创建容器(后台运行):
docker run -d -p <本机端口>:<容器端口> <image>
- 创建容器(后台运行)后,进入容器:
docker exec -it <容器名> /bin/bash
- 使用下列语句安装相关环境
apt-get update
更新源apt-get install nginx
安装nginxservice nginx start
启动nginx服务apt-get install php5-fpm
安装php5-fpm
??刚安装好的Nginx是不能解析php的,需要修改配置文件:/etc/nginx/sites-available/default
Nginx有两种启动方式:
- 第五行打开,就是使用TCP方式启动,php-fpm将会本地监听9000端口;
- 倒数第三行打开,则是使用套接字方式启动。
??现在使用/etc/init.d/php5-fpm start
启动web服务,然后到web目录中写一个测试php文件,重启nginx服务,尝试访问,如果可以解析,则环境配置成功。
Nginx相关目录:
/usr/share/nginx/html
#默认web目录/etc/nginx/
# 配置文件目录/etc/php5/fpm
# php配置文件目录/var/log/nginx/access.log
# 访问日志/var/log/nginx/error/log
# 错误日志
二、Nginx解析漏洞原理
- 对任意文件名,在后面添加
/任意文件名.php
的解析漏洞,比如原本文件名为test.jpg
,可以添加为test.jpg/x.php
进行解析攻击; - 对低版本的Nginx可以在任意文件名后面添加
%00.php
进行解析攻击。
和Apache一样,Nginx也是通过
mime.types
识别文件,文件路径:/etc/nginx/mime.types
创建一个1.jpg
文件,然后访问1.jpg/1.php
,显示Access denied
。
不是解析为php文件吗?没有开启路径修改 or security.limit_extensions
??Nginx拿到文件路径1.jpg/1.php
,一看后缀是.php
,便认为该文件是.php
,转交给php解释器去处理。php解释器一看1.jpg/1.php
不存在,便删去/1.php
,又看/1.jpg
存在,便把/1.jpg
当作执行的文件,又因为文件后缀是.jpg
,php解释器认为这不是php文件,于是返回"Access denied"。
要想复现Nginx解析漏洞,应该:
- 配置
cgi.fix_pathinfo
cgi.fix_pathinfo
,该值默认为1,表示开启。用途:对文件路径进行"修理"。当php解释器遇到文件路径
/aaa.xxx/bbb.yyy/ccc.zzz
时,若/aaa.xxx/bbb.yyy/ccc.zzz
不存在,则会去掉最后的/ccc.zzz
,然后判断/aaa.xxx/bbb.yyy
是否存在,若存在,则把/aaa.xxx/bbb.yyy
当作文件/aaa.xxx/bbb.yyy/ccc.zzz
。若不存在,则继续去掉/bbb.yyy
,依此类推。 - 配置
www.conf
配置/etc/php5/fpm/pool.d/www.conf
中的security.limit_extensions
允许解析其他格式文件为PHP。
再次访问1.jpg/1.php
。
三、Nginx文件解析漏洞修复方法
- 将
php.ini
文件中的cgi.fix_pathinfo
的值设为0。这样php在解析1.jpg/1,php
的路径时,主要1.php
不存在就会显示404。 - 将
/etc/php5/fpm/pool.d/www.conf
中的security.limit_extensions
后面的值设置为.php
,就是说只允许解析后缀名为.php
的php文件。
文章来源:https://blog.csdn.net/qq_55202378/article/details/134890858
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!