nginx php pathinfo 修复

11 篇文章 0 订阅

nginx php pathinfo文件类型解析漏洞,已经有数百万台服务器被发现存在此漏洞。
这个漏洞一旦被利用后果严重,这里简短说明这个漏洞的原理,同时列出在生产环境中推荐的配置。
假设php.ini中cgi.fix_pathinfo=1(默认就是1),同时存在以下nginx的配置:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}

假设存在一个文件test.jpg,提交URL : /test.jpg/index.php
则这个 test.jpg将会被当成PHP脚本执行!!

那么,如果网站允许上传图片,攻击者只要将php木马文件后缀名修改为.jpg, 上传(因为PHP上传类型检测是通过后缀名检查的,.jpg将认为是图片,于是上传成功),并构造上述形式URL, 将成功运行木马!!! 造成网站被黑。

这个漏洞仅适用于nginx,不适用用apache, iis

1. 如果php项目没有使用pathinfo模式的URL,则设置php.ini中cgi.fix_pathinfo=0即可,无须其它特殊设置。

2. 若项目中使用了pathinfo模式的URL, 比如CI框架,则需要设置以下步骤(缺一不可)
A. php.ini中设置cgi.fix_pathinfo=1 , 否则会提示找不到文件
B. nginx中关于fastcgi配置部分应该调整为

location ~ “\.php” {
fastcgi_pass 127.0.0.1:9000;
#其它指令

if ( $request_uri ~ ‘\..*/.*\.php’ ) {
return 403;
}
}

或者

if ($request_filename ~* (.*)\.php) {
set $php_url $1;
}
if (!-e $php_url.php) {
return 403;
}

是不被推荐的,因为php-fpm.conf中配置的
pm.status_path = /php-status.php

是一个虚拟URL, 会被上述规则屏蔽,故不推荐。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值