25、文件上传漏洞——Nginx文件解析漏洞

文章目录

一、Nginx配置

  • 创建容器(后台运行):docker run -d -p <本机端口>:<容器端口> <image>
  • 创建容器(后台运行)后,进入容器:docker exec -it <容器名> /bin/bash
  • 使用下列语句安装相关环境
    • apt-get update更新源
    • apt-get install nginx 安装nginx
    • service 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解析漏洞,应该:

  1. 配置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,依此类推。
  2. 配置www.conf
    配置/etc/php5/fpm/pool.d/www.conf中的security.limit_extensions允许解析其他格式文件为PHP。

    再次访问1.jpg/1.php

三、Nginx文件解析漏洞修复方法

  1. php.ini文件中的cgi.fix_pathinfo的值设为0。这样php在解析1.jpg/1,php的路径时,主要1.php不存在就会显示404。
  2. /etc/php5/fpm/pool.d/www.conf中的security.limit_extensions后面的值设置为.php,就是说只允许解析后缀名为.php的php文件。
相关推荐
意疏2 分钟前
Kali远程桌面+cpolar:网络安全攻防的跨域协作新范式
安全·web安全
Joe_Blue_0216 分钟前
中保研汽车小偏置碰撞案例分析
安全·性能优化·汽车·硬件工程
Splashtop高性能远程控制软件3 小时前
行业观察 | 微软修复63个漏洞,包含零日与CVSS 9.8关键漏洞
运维·安全·microsoft·自动化·远程桌面·splashtop
J***Q2924 小时前
后端服务网格安全,mTLS加密通信
网络·安全
那我掉的头发算什么5 小时前
【javaEE】多线程——线程安全进阶☆☆☆
java·jvm·安全·java-ee·intellij-idea
chipsense5 小时前
隔离式电流采样方案:HK4V H00,高绝缘耐压,保障强电环境采样安全
安全·开环霍尔电流传感器
一RTOS一5 小时前
工业AI安监超脑,为智能建造打造“安全数字底座”
人工智能·安全
云安全联盟大中华区6 小时前
构建AI原生工程组织:关于速度、文化与安全的经验
人工智能·安全·web安全·网络安全·ai·ai-native
恒美智造6 小时前
食品安全检测仪:如何成为应对添加剂滥用与安全危机的关键技术防线?
安全·食品安全检测仪·食品添加剂检测仪
搂着猫睡的小鱼鱼6 小时前
推动淘宝商品详情API的安全强化与生态协同创新有哪些挑战?
安全