繁体中文
设为首页
加入收藏
当前位置:在线教程首页 >> 电脑应用 >> 安全防御 >> WDB论坛存在多个严重漏洞

WDB论坛存在多个严重漏洞 (1)

2005-06-06 18:21:00  作者:Jambalaya  来源:www.itaq.org  浏览次数:161  文字大小:【】【】【

作者:[I.T.S]Jambalaya  来自:www.itaq.org

===============================================
仅以此文送给我的好友Bytes,
并祝他和他的女友璐子能够真的相爱一生,白头偕老

===============================================

前言:
我在和很多网管谈到WEB安全的时候,很多人告诉我WEB安全就是sql injection,“不就是在一个变量后面嵌入你的sql语句么,这个我也会”,这是我听到最多的人们对WEB安全的认识,WEB安全难道仅仅是sql injection,当然不是!sql injection只不过是冰山一角罢了。认为注入就是WEB安全全部的人们阿,睁大你的眼睛,看我用实际行动给你一击响亮的耳光吧!

描述:
最近在读WDB论坛,这个论坛很好看,风格华美而且和LB5有一点相像,但是安全性实在是不敢恭维,如果我说平均5个文件就有一个漏洞,那是一点都不夸张,虽然作者好像已经有意的作了一些防范,但是过滤不是非常严格。导致恶意用户或者非典型恶意用户可以写入自己的代码,然后可以执行自己语句进而控制整个系统。

一、topsys.php全局变量未初始化导致控制整个论坛

1、漏洞分析

topsys.php是管理员用来集中管理论坛总制顶贴子的文件,这个文件可用来对论坛帖子实现总制顶,清空,删除等操作, 就是这样的小小的文件,由于编程人员对其中的个别变量没有初始化,却带来了可以控制整个论坛,甚至整个控制系统的危害。
让我们先看看,要如何绕开限制先,部分代码如下:
=========codz begin===========
13 if ($login_status==1 && ($username==$admin_name ||($manager && in_array($username,$manager)))) {$announceadmin=1;}
14 //----让增加的管理员有权管理!----------
15 if (file_exists("datafile/admin_user.php")) {
16 include("datafile/admin_user.php");
17 if ($admin_user && in_array($username,$admin_user)) {
18 $announceadmin=1;
19 }
20 }
21 //----让增加的管理员有权管理!----------
22 $musia=0;
23 if ($announceadmin==1) $musia=1;
=========codz endz============

我们从第13行的检查可以看出来,他这段代码就是为了判定是不是有管理员权限,如果有的话则设定$announceadmin变量为1,好,后面管理员没忘记初始化一下$musia,然后检查$announceadmin变量是不是为1,如果为1,再设定$musia变量为真。这里我们先不管,往后面看。
再来看一段代码:

=========codz begin===========
150 if ($job=="write") {
151 if ($announceadmin!=1) {require("header.php");
152 echo "对不起,未登陆或者身份不正确,请 <a href="javascript:history.back(1);">返回检查</a>";
153 require("footer.php");
154 exit;}
//后面进行制顶操作......
=========codz endz============

程序是如何验证管理员身份呢?编程人员就凭借了一个值来进行判断。他这里检查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 ";
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============

这些是我们得到管理员权限后可以看到的东西,让我们看看,他首先检查是不是存在datafile/topsys.php,这个文件是用来纪录那些制顶的贴子的。好了,看看他都写入了什么?writetofile("datafile/topsys.php",$new.$old)从这句可以看出,他将$new.$old写入topsys.php中,而$new="$user|$title|$timestamp|$content|$member ",其中$user和$timestamp是固定的,$title和$content似乎可以用,只是那个safe_convert函数看着有点吓人。但对安全的人来说,细心、耐力是不可以缺少的,否则所谓的好运是不会主动找到你的。为了不放过一个细节,我们还是看一下这个函数,看看是不是存在过滤不严。于是去global.php翻出这个函数:
=========codz begin===========
837 function safe_convert($d) {
838 $d = str_replace(" ","",$d);
839 $d = str_replace("<","&lt;",$d);
840 $d = str_replace(">","&gt;",$d);
841 $d = str_replace(" ","<br>",$d);
842 $d = str_replace(" ","",$d);
843 $d = str_replace("|","│",$d);
844 $d = str_replace(" "," &nbsp;",$d);
845 return $d;
846 }
=========codz endz============

 

此文章不能满足您的需求?那就就Google一下吧:)

Google
 
[1] [2]

责任编辑:admin


相关文章
Linux有效服务综合列表
Linux操作系统的高级电源管理
Linux操作系统下设置基本网络参数四法
关掉linux文本模式下的滴滴声
高性能Linux集群管理监控之道
Linux初始化系统V的Init过程
Linux系统可卸载内核模块完全指南
使用TSIG和DNSSEC加固域名服务器
Linux日志文件系统及性能分析
Linux服务器上的备份和恢复
SSH公钥(public key)验证
 

最新文章

更多

· 教你识辨几个容易被误认...
· sxs.exe病毒手动删除方法
· 小心防范网话病毒!病毒搜...
· SA空口令破解和保护
· 怎样使MySQL更安全?
· Mysql数据库的安全配置、...
· 如何安全的配置和应用My...
· Oracle数据库安全策略分析
· SQL Server 2000的安全配置
· 使一个新的MySQL安装更安全

推荐文章

更多

· 教你识辨几个容易被误认...
· sxs.exe病毒手动删除方法
· 小心防范网话病毒!病毒搜...
· SA空口令破解和保护
· 怎样使MySQL更安全?
· Mysql数据库的安全配置、...
· 如何安全的配置和应用My...
· Oracle数据库安全策略分析
· SQL Server 2000的安全配置
· 使一个新的MySQL安装更安全

热点文章

更多