Discuz 7.0 被曝通过后门抓取用户数据
库存袈裟
@bruceku 想象力比知识更重要。
1楼 大 中 小 发表于 2010-8-24 15:53 只看该作者
Discuz 7.0 被曝通过后门抓取用户数据
http://www.sunboyu.cn/2009/12/10/discuz-hole.shtml
使用开源产品,的确能加快我们的产品实现进度,我们也感谢那些提供免费开源产品的人。当然,我个人也喜欢开源技术。
但如果开源的产品中给你下个后门,抓取你的数据,你还能高兴么?
现在分析 discuz 7.0 的几段代码:
复制内容到剪贴板
代码:
` 1. if($adminid == 1 && $action == ‘home’) {
-
echo ‘<sc ‘.’ript language=”Jav’.’aScript” src=”ht’.’tp:/’.’/cus’.’tome’.’r.disc’.’uz.n’.’et/n’.’ews’.’.p’.’hp?’.bbsinformation().’”>’;
-
//echo ‘</sc><sc ‘.’ript language=”Jav’.’aScript” src=”http://localhost/com/n’.’ews’.’.p’.’hp?’.bbsinformation().’”>’;
-
}
-
</sc>`
恩,看见了没,我告诉大家一个写木马常用的方式 eval ,比如asp中查找木马,通常查找fso等关键字,木马一般都给他写成
eval(’f’+’s’,’o’),写php的应该很熟悉这个函数了。这段代码当然不是木马,咱看看他具体做了什么:
复制内容到剪贴板
代码:
` 1. function bbsinformation() {
-
global $db, $timestamp, $tablepre, $charset, $bbname, $_SERVER, $siteuniqueid, $save_mastermobile, $msn;
-
$update = array(‘uniqueid’ => $siteuniqueid, ‘version’ => DISCUZ_VERSION, ‘release’ => DISCUZ_RELEASE, ‘php’ => PHP_VERSION, ‘mysql’ => $db->version(), ‘charset’ => $charset, ‘bbname’ => $bbname, ‘mastermobile’ => $save_mastermobile);
-
$updatetime = @filemtime(DISCUZ_ROOT.’./forumdata/updatetime.lock’);
-
if(empty($updatetime) ($timestamp - $updatetime > 3600 * 4)) {
-
@touch(DISCUZ_ROOT.’./forumdata/updatetime.lock’);
-
$update[‘members’] = $db->result_first(“SELECT COUNT(*) FROM {$tablepre}members”);
-
$update[‘threads’] = $db->result_first(“SELECT COUNT(*) FROM {$tablepre}threads”);
-
$update[‘posts’] = $db->result_first(“SELECT COUNT(*) FROM {$tablepre}posts”);
-
$query = $db->query(“SELECT special, count(*) AS spcount FROM {$tablepre}threads GROUP BY special”);
-
while($thread = $db->fetch_array($query)) {
-
$thread[‘special’] = intval($thread[‘special’]);
-
$update[‘spt_’.$thread[‘special’]] = $thread[‘spcount’];
-
}
-
if($msn[‘on’] && $msn[‘domain’]) {
-
$update[‘msn_domain’] = $msn[‘domain’];
-
}
-
}
-
$data = ‘’;
-
foreach($update as $key => $value) {
-
$data .= $key.’=’.rawurlencode($value).’&’;
-
}
-
return ‘update=’.rawurlencode(base64_encode($data)).’&md5hash=’.substr(md5($_SERVER[‘HTTP_USER_AGENT’].implode(‘’, $update).$timestamp), 8, 8).’×tamp=’.$timestamp;
- }`
看见了吧,看他提交的几个关键字段:$update[‘members’],$update[‘threads’],$update[‘posts’],$thread[‘special’],$update[‘spt_’.$thread[‘special’]],$update[‘msn_domain’],
这些字段提交过去,也许对我们系统安全并无影响,可看看6.0版本的论坛还提交了什么:
uniqueid=&version=6.0.0&release=20081117&php=5.2.6&mysql=5.0.22&charset=utf-8&bbname=&mastermobile=**&members=4965&threads=883&posts=25921&spt_0=879&spt_1=4&
mastermobile 看见这个字段你会汗不?
康盛应该为此行为买单不?不会 。
看下边:
引用:
III 有限担保和免责声明
1\. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。
2\.
用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。
3\. 康盛创想(北京)科技有限公司不对使用本软件构建的论坛中的文章或信息承担责任。
您必须了解使用本软件的风险–用户了解信息泄露的风险么?
康盛创想(北京)科技有限公司不对使用本软件构建的论坛中的文章或信息承担责任。其实,我也不愿意承担。
本文纯属月经文,如有难受,过几天自然恢复。
Terminusbot 整理,讨论请前往 2049bbs.xyz
库存袈裟
@bruceku 想象力比知识更重要。
2楼 大 中 小 发表于 2010-8-24 15:56 只看该作者
http://www.sunboyu.cn/2009/12/24/discuz-hole-2.shtml
自打上篇文章
康盛,这么做是不是有点过火了发表后,引起很多朋友讨论。有些朋友从技术上抨击了这种做法,有些朋友从商业上去理解这种做法。当然,我们是搞技术的,单纯从程序安全和数据安全上来分析一下。
老样子,后台有个get提交:
http://u.discuz.net/customer/upd … B%7D&h=aa380aa3
urldecode并且反序列化,得出这么一堆东西
复制内容到剪贴板
代码:
`Array
(
[sitekey] => f270e28a8b0Qv1Y8
[version] => 2.0
[release] => 20090825
[php] => 5.2.6
[mysql] => 5.0.22
[dbsize] => 1298163
[charset] => utf-8
[sitename] => 我的空间
[feednum] => 10
[blognum] => 0
[albumnum] => 0
[threadnum] => 0
[sharenum] => 0
[commentnum] => 0
[myappnum] => 4
[spacenum] => 3
)`
sitekey是什么?通过阅读代码,sitekey是pre_config表里一个字段,跟以下代码配合工作
复制内容到剪贴板
代码:
`$hash =
$_SCONFIG[‘my_siteid’].’ ‘.$_SGLOBAL[‘supe_uid’].’ ‘.$appid.’ ‘.$current_url.’ ‘.$extra.’ ‘.$timestamp.’ ‘.$_SCONFIG[‘my_sitekey’];`
它跟manyou服务器配合,才有权从你的服务器上拉取你数据库中的某些信息。
其他字段,我们看字面意思基本也能知道是干啥用的。
继续运行程序,我们看当一个用户第一次安装应用的时候做了什么。
这个信息要从服务器上截取,我是根据nginx日志和程序中截取反馈信息获得的。
服务器日志:
复制内容到剪贴板
代码:
`124.238.249.171 - - [24/Dec/2009:20:02:40 +0800] “POST /uhome/api/my.php
HTTP/1.0” 200 192 “-“ “myop/1.0” “-“`
manyou服务器发来post请求。post信息不会在日志里,底下是我抓取来的信息:
复制内容到剪贴板
代码:
` [post] => Array
(
[module] => Users
[method] => getInfo
[sign] => 271ce9942c94fc4f4d39445e133105bc
[params] => a:1:{s:4:\"uIds\";a:1:{i:0;s:1:\"3\";}}
)`
做过sns网站应用开发的应该很容易看懂底大概是什么意思。
看看我们的程序给manyou平台返回了什么信息:
复制内容到剪贴板
代码:
`[result] => Array
(
[0] => Array
(
[uId] => 3
[handle] => sunboyu1
[action] =>
[realName] =>
[realNameChecked] =>
[gender] => unknown
[email] => [email]dfafdasf@123.fdsafds[/email]
[qq] =>
[msn] =>
[birthday] => 0000-00-00
[bloodType] => unknown
[relationshipStatus] => unknown
[birthProvince] =>
[birthCity] =>
[resideProvince] =>
[resideCity] =>
[viewNum] => 0
[friendNum] => 0
[myStatus] =>
[lastActivity] => 0
[created] => 1261655045
[credit] => 25
[isUploadAvatar] =>
[adminLevel] => none
[homepagePrivacy] => public
[profilePrivacyList] => Array
(
)
[friendListPrivacy] => public
)
)
[mode] =>`
有了这些数据,我又注册了一个号码,把资料填全,看看是不是都被抓走:
复制内容到剪贴板
代码:
`[result] => Array
(
[totalNum] => 0
[friends] => Array
(
)
[me] => Array
(
[uId] => 4
[handle] => sunboyu2
[action] =>
[realName] => 一个程序猿
[realNameChecked] => 1
[gender] => male
[email] => [email]1231231@fdsfdsa.com[/email]
[qq] => 176300676
[msn] => [email]sunboyu@gmail.com[/email]
[birthday] => 2004-02-01
[bloodType] => B
[relationshipStatus] => single
[birthProvince] => 北京
[birthCity] => 东城
[resideProvince] => 黑龙江
[resideCity] => 佳木斯
[viewNum] => 0
[friendNum] => 0
[myStatus] =>
[lastActivity] => 1261657227
[created] => 1261657100
[credit] => 40
[isUploadAvatar] => 1
[adminLevel] => none
[homepagePrivacy] => friends
[profilePrivacyList] => Array
(
[relationshipStatus] => friends
[birthday] => friends
[bloodType] => me
[birthPlace] => public
[residePlace] => public
[qq] => me
[mobile] => public
[msn] => public
)
[friendListPrivacy] => me
)
)
[mode] =>
)`
差不多基本资料都过去了。
这样,可以看出,康盛的服务器不断得在抓取用户的信息。这个事情是不是过火,从商业的角度,是应该很过火的。他把用户产品内的账号信息等关键东西都抓走,这些信息到他们手里,难免会交易给竞争对手。
但是,从技术上讲,康盛的manyou服务器还有个缓存的功能。如果拉取用户信息这个请求都放在网站的服务器上,我相信大多数虚拟主机的用户会不堪重负,而康盛其实为这些负载买单了。买单的结果,就是你得把用户的信息提供给康盛。就这么简单。
从程序安全上讲,你的数据库信息,尤其用户信息,在你的网站和manyou之间共享,而康盛没有拉走用户或者管理员资料,也没有发现其他信息的提取,所以,两者之间是安全的。第三方网站是无法获得这些资料的。
但从商业安全上讲,康盛的服务器是否可信?康盛是否会拿这些信息作一些站长不希望做的事情?这个只能由官方来解释了。
睡一觉,研究其他产品去。
库存袈裟
@bruceku 想象力比知识更重要。
3楼 大 中 小 发表于 2010-8-24 15:58 只看该作者
扩展阅读
https://1984bbs.com/viewthread.php?tid=56200
腾讯已收购Discuz!
大王
从听谣人士到传谣人士的淫荡岁月
4楼 大 中 小 发表于 2010-8-24 15:59 只看该作者
很好。。QQ上抓获异见者的几率增加了。。。
大王
从听谣人士到传谣人士的淫荡岁月
5楼 大 中 小 发表于 2010-8-24 16:00 只看该作者
有幸看到活的1984第一帅锅袈裟童鞋,但是沙发被抢…
zpclxc
6楼 大 中 小 发表于 2010-8-24 16:07 只看该作者
我D会更有效地监控论坛
darrenlee
7楼 大 中 小 发表于 2010-8-24 19:29 只看该作者
凡是纯国内的产品,甭管是不是开源,一律不能信任——这都快成为常识了
大祥云
松下问童子 言师采药去 只在此山中 云深不知处
8楼 大 中 小 发表于 2010-8-24 20:51 只看该作者
嘿嘿,这下该明白“狗日的”并非浪得虚名了吧。
企鹅能有今天,其背后不排除有黑衣人在狞笑~~~^_^
Shuangyan
爱IT,更爱Animations & Cosmics . 爱RPG & RTS,更爱暴雪出品。 爱《Animal Farm》,更爱 《Canon in D
major》. 爱《1812序曲》,更爱《1984》. 爱Nonviolence Revolution,更爱Social Democracy.
我是ShuangYan,我与你分享 …
9楼 大 中 小 发表于 2010-8-24 21:40 只看该作者
应该介绍几款国外的论坛程序,当然要支持中文化
发粪涂墙
10楼 大 中 小 发表于 2010-8-24 21:44 只看该作者
还好国内的注册全部都乱填,问题在于国外有多少是使用Discuz的?
流逝的古典
兼听则明,偏听则暗,不要拉不出大便也怪垬
11楼 大 中 小 发表于 2010-8-25 06:04 只看该作者
袈裟能把1984修改版的discuz程序文件给我一份么
tywtyw2002
12楼 大 中 小 发表于 2010-8-25 07:15 只看该作者
dz 用5.0改改吧 5.0至少還沒有什么 只要以上sns我就懶得看代碼
清风笑豪情
好读书人
13楼 大 中 小 发表于 2010-8-25 11:41 只看该作者
回复 11楼 流逝的古典 的话题
同求
darrenlee
14楼 大 中 小 发表于 2010-8-25 11:59 只看该作者
jsp开源论坛
http://www.open-open.com/09.htm
php开源论坛
http://www.php-open.com/5.htm
02304H
10001100000100B
15楼 大 中 小 发表于 2010-8-25 16:21 只看该作者
http://www.phpbb.com/
-——-
http://en.wikipedia.org/wiki/Com … software%28PHP%29
License非Proprietary均为开源
库存袈裟
@bruceku 想象力比知识更重要。
16楼 大 中 小 发表于 2010-8-25 16:25 只看该作者
phpbb负载不理想,推荐punbb和esotalk
偶佯疯
我是个读书人
17楼 大 中 小 发表于 2010-8-26 18:01 只看该作者
小组的用户数据会不会被窃取?
02304H
10001100000100B
18楼 大 中 小 发表于 2010-8-26 23:16 只看该作者
回复 17楼 偶佯疯 的话题
小组用的应该是6.x
我记得站方说代码改过了,这一点还请袈裟确认
库存袈裟
@bruceku 想象力比知识更重要。
19楼 大 中 小 发表于 2010-8-27 09:20 只看该作者
回复 18楼 02304H 的话题
09年时做了较大修改
twiter
20楼 大 中 小 发表于 2010-10-5 09:22 只看该作者
终于知道了小组是用DZ的,哈
zhangsongq
Across the Great Firewall, you can reach every corner of the world.
21楼 大 中 小 发表于 2010-10-5 10:00 只看该作者
了解一下,谢谢
nustbobo
不明真相的群众,目睹俯卧撑、躲猫猫、撞墙死、临时工等一系列怪
22楼 大 中 小 发表于 2010-10-5 10:42 只看该作者
被腾讯收购了就是不一样