关于bom.php-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1154525
  • 博文数量: 272
  • 博客积分: 3899
  • 博客等级: 中校
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-15 14:53
文章分类

全部博文(272)

文章存档

2012年(272)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: 网络与安全

2012-06-27 16:37:17

近日在做一些日志分析的时候,发现了数千次的来自 bom.php 的误报,一般来说也就直接忽略掉了(相对于数十亿的基数来说),但本着严谨的态度,我还是查了查这个文件,然后确实发现了一点有意思的事情,这是一起自动化的扫描。

bom.php 这个文件会泄露本地文件目录,并被用于扫描:

 

(部分扫描日志)

bom.php是什么?

提到bom,大家可能很快会想到,但今天讲的和xss无关。

以下文字摘自:

unicode规范中有一个bom的概念。bombyte order mark,就是字节序标记。在这里找到一段关于bom的说明: 在ucs 编码中有一个叫做zero width no-break space的字符,它的编码是feff。而fffe在ucs中是不存在的字符,所以不应该出现在实际传输中。ucs规范建议我们....


现在很多文本编辑器保存文件时,会默认:

类似windows自带的记事本等软件,在保存一个以utf-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xef 0xbb 0xbf,即bom)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以utf-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 php来说,bom是个大麻烦。

 

bom对于开发者来说是个小麻烦,因此产生了bom.php

bom.php是一个批量的清除文件里bom字符的东西,现在网上流传的一般是这个版本:

它的作用很简单,就是查找文件的头三个字符,如果是bom字符,就重写文件(去掉bom字符)。

但是这个流行的bom.php默认会把所有扫描信息给输出,这就造成了敏感信息泄露。

同时还存在目录遍历,导致问题更严重。

仔细读完代码后,发现文件写入的地方无法控制,因此这个文件的问题只停留在敏感信息泄露了。

代码如下:

/*检测并清除bom*/  

if(isset($_get['dir'])){  

    $basedir=$_get['dir'];  

}else{  

    $basedir = '.';  

}   

$auto = 1;   

checkdir($basedir);  

function checkdir($basedir){  

    if($dh = opendir($basedir)){  

        while(($file = readdir($dh)) !== false){  

            if($file != '.' && $file != '..'){  

                if(!is_dir($basedir."/".$file)){  

                    echo "filename: $basedir/$file ".checkbom("$basedir/$file")."
";  

                }else{  

                    $dirname = $basedir."/".$file;  

                    checkdir($dirname);  

                }  

            }  

        }//end while  

    closedir($dh);  

    }//end if($dh  

}//end function  

function checkbom($filename){  

    global $auto;  

    $contents = file_get_contents($filename);  

    $charset[1] = substr($contents, 0, 1);   

    $charset[2] = substr($contents, 1, 1);   

    $charset[3] = substr($contents, 2, 1);   

    if(ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191){  

        if($auto == 1){  

            $rest = substr($contents, 3);  

            rewrite ($filename, $rest);  

            return "bom found, automatically removed.";  

        }else{  

            return ("bom found.");  

        }  

    }   

    else return ("bom not found.");  

}//end function  

function rewrite($filename, $data){  

    $filenum = fopen($filename, "w");  

    flock($filenum, lock_ex);  

    fwrite($filenum, $data);  

    fclose($filenum);  

}//end function  

?>

 

执行结果:

 

确实会带来一些安全隐患,比如用来扫数据库文件、备份打包文件、以及一些可能要隐藏的文件,需要跟具体场景相结合。

 

结论:

1. 任何一个小应用,流行起来后,都可能被黑客关注。

2. 安全隐患往往来自于不起眼的地方,以你意想不到的方式,攻击成功。

3. 冷僻的漏洞,放在大量扫描的基础上,也可能产出结果。

 

btw:第三个结论无法直接证明,但我们最近的一项统计表明,最近挺火的那个,虽然这样配置的主机很少了,但我们仍然从数十万个网站中,发现了数百个站点存在漏洞,比例大约为 0.03%,并不算低了。

阅读(2278) | 评论(0) | 转发(0) |
0

上一篇:几张dlp(data loss protection)的图

下一篇:

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图