Tag Archives: php

nginx php 错误配置导致安全漏洞

后知后觉发现了此文 Setting up PHP-FastCGI and nginx? Don’t trust the tutorials: check your configuration! 基本上是说,网上的大部分 nginx + php 配置教程中有一个错误,导致 php 会试图执行非 php 文件,甚至是用户上传的图片。

事实上看到此漏洞的描述我已经立刻想到问题之所在了,的确,之前我写的那篇配置笔记也是有此问题的。基本原理就是 nginx 配置中有这么一段

location ~ .*.php5?$ {
        include fastcgi_params;
        root /var/host/phpMyAdmin;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php_fcgi.sock;
        fastcgi_index index.php;
    }

凡是以 .php 或者 .php5 结尾的 uri 都会被交给 php 处理,于是类似于 user.jpg/aaa.php 也会交给 php 处理,于是 user.jpg 就被当成 php 代码给执行了。

解决此问题的方法有好几种,codex.wordpress.com 上面提供的一种方式是如下修改 nginx 中有关 php 的配置。不过如果 nginx 和 php 不运行在同一台机器上时,此方法无效。

location ~ \.php$ {
	# Zero-day exploit defense.
	# http://forum.nginx.org/read.php?2,88845,page=3
	# Won't work properly (404 error) if the file is not stored on this server, which is entirely possible with php-fpm/php-fcgi.
	# Comment the 'try_files' line out if you set up php-fpm/php-fcgi on another machine.  And then cross your fingers that you won't get hacked.
	try_files $uri =404;

	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	include fastcgi_params;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#	fastcgi_intercept_errors on;
	fastcgi_pass php;
}

[配置笔记]CentOS + nginx + PHP

之前的这篇文章似乎是挖了个坑一直没填,然而每每出现这种情况的时候,都会发现还偏偏总有人通过 Google 搜索过来……一定让不少人失望了,真是过意不去~于是这次重新写一篇,但愿能把坑填上……

和上次略有不同,这次 Linux 发行版是用的 CentOS,因为最近一段时间来其实我接触最多的还是 RHEL,所以就不写 Ubuntu 了。MySQL 也不在本文叙述范围之内,我实际应用的时候是直接 yum install mysql-server 装的,没有什么好说的。

nginx 用了 0.7.x 开发版。php 当然是通过 fastcgi 运行,不过没有用从 lighttpd 里分离出来的 spawn-fcgi,而是用了 php-fpm 这个补丁。
Continue reading

[配置笔记]Ubuntu + nginx + MySQL + PHP

本来想写个How-To的,但是突然觉得自己没有功力教会别人,所以就不做标题党了。配置笔记,基本上是记录给自己看得,能够给别人有所帮助就更好了~

最近不断的看到有关 nginx 的消息,基本上都是正面的,看起来性能非常好。对于性能好的东西,我通常有一种莫名的恐惧,因为这些高级货一是要用到好的硬件上,二是配置复杂,如果还有三的话,那就是我通常不需要这么高的性能。然而这次稍稍看多了些 nginx 的介绍,其实它还是轻量级的,出道也不久,却能够被不少网站重用。俄罗斯人写的程序,作者自称英文较差,不过文档却也有了多国语言版,看来这东西真是受世界各国人民的喜爱啊~

晚上不想玩WoW,就装了个虚拟机,搞了 nginx 玩玩,记录如下。 Continue reading

fanfou=好好学习,天天校内

今天ice告诉我说,校内把饭否屏蔽了,当时就想不可能。首先,我用的饭否图片插件,css中background贴上去的,总不可能屏蔽图片吧,那其他的图片也没了?再说,校内和饭否不存在什么竞争关系,人家千橡大公司不至于这么小家子气,还屏蔽饭否……

再一细问,原来……涂鸦板里的fanfou自动替换成了好好学习,天天校内…… 真是哭笑不得,校内果然和猫扑是一家的,千橡就是牛逼,还玩这一套。我真想看哪天校内上冒出中国人民公共安全专家大学来。

然而这种拙劣的替换手段,基本上是可以无视的。好办法我是没有,不过笨办法倒是几秒种内就想了一个。 Continue reading