学院首页>安全防御>黑客技法>深入探究:WDB论坛存在的多个严重漏洞

深入探究:WDB论坛存在的多个严重漏洞

作者:沙磊 来源:安全中国 添加时间:2006-5-26 13:16:08

程序是如何验证管理员身份呢?编程人员就凭借了一个值来进行判断。他这里检查announceadmin变量是否为1,如果不为1,则报错说身份不正确(不是管理员)。好了,回过头去看一下,刚才那看似严密的验证,你想到什么了没有?大家可能都发现了,那个用来检查是否有管理员权限的值却并没有做初始化,那么如果我们直接构造语句提交$announceadmin=1。我们就可以用管理员权限来发布、删除制顶的帖子。我们来试试看,提交
http://bbs.target.com/topsys.php?announceadmin=1

  我们已经能看出来和刚才有什么不一样了,多了管理员的管理模块,好我们找个贴子制顶,提交URL如下:

  http://bbs.target.com/topsys.php?
  announcea...tent=hello,this is Jambalaya
  &title=wdbread.php?forumid=1&filename=f_27,

我们这里把第一个论坛的第27个贴子,标题为"hello,this is Jambalaya"的贴子制顶了。回车看看,哈哈,我们成功了。这里我们用相同的方法可以去删除,清空总制顶的贴子,这里再去分析就有点浪费时间了,大家自己看吧。高兴一阵子后,想起来了,我们怎么能控制整个网站呢?HOHO~~真正的攻击在这里呢......  跟我来~~~~~

  上面这些没什么,无非就是能以管理员身份总制顶、清空和删除帖子,其他的什么也做不了了,但我们却成功的绕过了对管理员权限的验证,绕过之后的我们是与众不同的,不信?呵呵,wait and see...

  我们来看下面的代码:

=========codz begin=========== 
165 if (file_exists("datafile/topsys.php")) $msg=file("datafile/topsys.php");
166 else $msg[0]="";
167
168 $content=stripslashes(safe_convert($content));
169 $title=stripslashes(safe_convert($title));
170 $title="".$title;
171 if($filename) $title=$title."&filename=".$filename;//for wdbread.php
172 $new="$user|$title|$timestamp|$content|$member\n";
173
174 $oldcount=count($msg);
175 if ($oldcount>$msgg_max) {
176 for ($i=$msgg_max; $i<$oldcount; $i++) unset($msg);
177 }
178
179 $old=implode("",$msg);
180 writetofile("datafile/topsys.php",$new.$old);
=========codz endz============

  
第 2 页,共 2 页 [1] [2]
站内搜索