• Blog
  • Archives
  • Search
  • Comments
  • Tags
  • Links
  • xxshuo
  • RSS

有梦就有快乐[杨恒飞]

Reg | Login

人生旅途慢慢,但有梦就会有快乐!

感谢阅读
nginx php-fcgi解析漏洞解决方法汇总
By coldstar On 2010-05-21, 11:41 PM | Category: WEB服务器 | Comments: 0

今天nginx漏出php-fcgi解析漏洞后,一时间沸沸扬扬,一些高手也出了相应的解决方法,汇总比较如下:

1.

if ( $fastcgi_script_name ~ .*\.(png|jpg|gif|bmp|PNG|JPG|GIF|BMP)\/.*php ) {
  return 404;
}

本人针对漏洞的解决方法!
【2010-5-21 20:03】修改补充:
dennis大侠提出:
还有第一个解决方法 如果是rar的怎么办? 那个和文件后缀的关系不大
我早上测试的文件名字是.kpg的也一样可以针对后缀名不确定的元素我修改为(测试通过,可以加入到enable_php5.conf顶部,多虚拟主机启用):
 

if ( $fastcgi_script_name ~ .*\.([0-9a-zA-Z]+)\/.*\.php ) {
  return 404;
}

附上我的enable_php5.conf配置:
 

if ( $fastcgi_script_name ~ .*\.([0-9a-zA-Z]+)\/.*\.php ) {
  return 404;
}

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

2.

if (!-e $request_filename) {
  rewrite .* http://www.yanghengfei.com/index.php;
}

已经可以实现防止漏洞的效果,但是如果你的网站是康盛的程序或者其他开源程序需要开启rewrite伪静态的程序,那么就会出现rewrite伪静态后的静态页面全部访问你设置的页面!

3.

if ( $fastcgi_script_name ~ \..*\/.*php ) {
  return 403;
}

有重写的同学,慎用通杀

4.
设置php.ini的cgi.fix_pathinfo为0,重启php。最方便,但修改设置的可能对你网站有影响!是比较鲁莽的做法!

补充
【2010-5-21 21:27】
张宴的方法:
 本人再提供一种修改nginx.conf配置文件的临时解决方法,兼容“http://blog.s135.com/demo/0day/phpinfo.php/test”的PATH_INFO伪静态,拒绝“http://blog.s135.com/demo/0day/phpinfo.jpg/test.php”的漏洞攻击:
 

location ~* .*\.php($|/){
	if ($request_filename ~* .*\.php$) {
		set $is_path_info '0';
	}
	if (-e $request_filename) {
		set $is_path_info '1';
	}
	if ($is_path_info ~ '0') {
		return 403;
	}

	fastcgi_pass 127.0.0.1:9000;
	fastcgi_index index.php;
	include fcgi.conf;
}

也可将以下内容写在fcgi.conf文件中,便于多个虚拟主机引用:
 

if ($request_filename ~* .*\.(php|php5)$) {
	set $is_path_info '0';
}
if (-e $request_filename) {
	set $is_path_info '1';
}
if ($is_path_info ~ '0') {
	return 403;
}

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $uri;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
Tags: 漏洞 , nginx
« MySQL Replace INTO和INSERT INTO的区别 nginx优化 突破十万并发»
只显示10条记录相关文章
织梦(Dedecms) 漏洞频出 给使用者的一些安全建议
织梦(Dedecms) V5.6 plus/carbuyaction.php...
利用dedecms漏洞 自定义模版oday 成功上传webshell
nginx负载均衡和lvs负载均衡的比较分析
nginx 指定默认虚拟主机的问题
nginx ngx_slowfs_cache模块介绍
nginx ngx_cache_purge模块介绍
nginx配合tomcat、resin等java应用服务器提供java支持
nginx 虚拟目录的配置alias
nginx 0.8.41 编译时侯出现警告
Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
Leave a Comment

text(*):

  • View Model: Nomal | List
  • Category

    nginx (28)

    win7 (20)

    Windows (39)

    Linux (51)

    WEB服务器 (73)

    网站架构 (11)

    存储与缓存 (2)

    数据库技术 (20)

    WEB开发 (24)

    网站建设 (30)

    安全相关 (27)

    软件开发 (3)

    网络观察 (20)

    精彩瞬间 (20)

    心情管理 (49)

    个人收藏 (29)

  • Calendar

    « 2010年09月 »
    日 一 二 三 四 五 六
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30
  • Random Aritcle

    cn域名状态说明

    Asp.net 默认配置下 Session莫名丢失的原因及解决办法

    apache日志 LogFormat参数说明

    标准的ASCII标点符号编码和编码技巧

    Cisco交换机端口镜像配置

    domeng网vista边栏小工具开发成功

    为 IIS FTP 指定被动模式所使用的端口范围

    winnt_accept: Asynchronous AcceptEx failed.

    [转]女人不要轻易说分手!真心爱你的男人不会挽留!

    PHP正则表达式基本函数 修饰符 元字符和需转义字符说明

  • Archives

    2010年08月 (13)

    2010年07月 (17)

    2010年06月 (68)

    2010年05月 (32)

    2010年04月 (3)

    2010年03月 (8)

    2010年02月 (4)

    2010年01月 (19)

    2009年12月 (45)

    2009年11月 (28)

    2009年10月 (10)

    2009年09月 (15)

    更多...

  • Others

    Powered by SaBlog-X.

    Designed by Giki+Kula.

    有梦就有快乐[杨恒飞] All rights reserved.

    陕ICP备07009322号