重大漏洞, 让Apache上传不安全xxx.php.xxxx

借鉴自:扶凯[http://www.php-oa.com]

一般的网站都会开放rar附件上传,并可能会保留原来文件名称,这从而可能导致一个很严重的问题,xxx.php.rar文件会被Apache当作php文件来执行, 造成极大的安全隐患 .

如何测试? 将你的某个php程序文件后缀名修改成  xxx.php.rar , 这时测试一下, 还是按照PHP文件解析执行,Apache并不会认为这是一个rar文件, 这是为什么呢?

原来,每遇到一种后双重后缀名(如xxx.php.rar)的文件,Apache都会去conf/mime.types 文件中检查最后一个后缀, 如果最后一个后缀并没有在mime.types文件中定义, 则使用前一个后缀来解释 , 因为在默认情况下,rar并未在mime.types中定义, 故Apache会使用php后缀来解释文件, 这就是漏洞的原因所在.

由此类推,如果使用xxx.jsp.ppp.rar 则会认为是jsp文件, 如果修改成xxx.shtml.rar ,则会识别成shtml文件.

a.php.c.d.e.rar 也是会被当成PHP文件解释的!
想想,不知道有多少网站存在这个问题?

那么针对网络管理员,如何杜绝这个隐患 ?

 

1.修改mime.types文件,在最后面加一条:
application/rar rar

然后重新启动Apache,即可.

针对WEB管理员及WEB程序开发者,如何更安全?
1.只允许上传指定后缀名的文件,当然,要禁止掉rar格式文件上传.(但这条往往行不通,一般的网站都需要上传rar文件)
上传脚本做如下处理

2.对上传后的文件进行强制重命名, 强制使用最后一个扩展名,如原始文件名为xxx.php.rar ,上传后强制重命名为 20080912.rar即可避免这个隐患.如下

  1. <?php
  2. //上传脚本名称 $file_name;
  3. //脚本后缀 这里用php 
  4. ifstrstr($file_name,'.php' )
  5. {
  6.       //将可运行的脚本换成其他文档
  7.       $desc_name = str_replace('.php','.txt',$file_name);
  8.       rename($file_name$desc_name);
  9.       $file_name = $desc_name;
  10. }
  11. ?>

早期版本的phpcms 2007, discuz, ecshop都存在这个漏洞,  或许你的网站被挂马,就是因此引起.

 

个人建议还是用第2种比较好因为mime.types 文件包含扩展名是有限的,还有可能用户自定义一个abc.php.x123这都有可能,所以做好上传文件的脚本处理是非常重要的,早期的asp的IIS服务器也经常因为这个原因被攻击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值