独家提供补丁 小小插件 竟致论坛“沦陷”

安全阵线

本期主角 Discuz!2Fly礼品(序号)发放插件

问题所在 对变量过滤不严

主要危害 夺取网站最高权限

调研时间 2009.8.13~2009.8.23

Discuz!论坛使用范围广,相应的各种各样的插件也非常多,其中很多都不是官方开发的,所以官方也不保障插件的安全。如果插件出了漏洞,甚至比论坛系统本身出了漏洞还严重。论坛系统出了漏洞,官方会推出补丁,而插件出了漏洞,却容易出现无人管的情况。例如本期讲的Discuz!2Fly礼品(序号)发放插件,就是这个样子。

大家好,我是习科信息技术组织的王磊,我给大家带来的是Discuz!论坛2Fly礼品(序号)发放插件的漏洞。该漏洞最大的危害就是可以让黑客不费吹灰之力就获得论坛的控制权。让人无语的是,该插件漏洞没有修复补丁,近20万论坛存在巨大的安全隐患(图1)。

34-f06-01.jpg

插件中gameid过滤不严

漏洞存在于插件的2fly_gift.php文件中,因为对gameid参数没有进行过滤,导致通过构造注入代码就可以爆出管理员密码的MD5密文,再破解出MD5的原文就可以控制整个论坛了。2fly_gift.php文件源代码中,输出礼品(序号)信息分支的变量gameid没有进行过滤,发布人分支输出的变量gameid同样也没有进行过滤,连空格这个基本的字符都没有过滤。

安全小百科:注入攻击是黑客对数据库进行攻击的常用手段之一。由于程序员的水平及经验参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入的数据的合法性进行判断。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些敏感数据。

Discuz!论坛安装时创建的用户表名是cdb_members,所以直接将cdb_members带入注入代码中即可。如果注入攻击的是非Discuz!论坛,注入语句中应该含有username(用户名)、password两项。如果登录时可以使用UID登录(图2),注入代码中就可以不含有username项。

34-f06-02.jpg

安全小百科:UID的全称是 User ID(Identification),意思是会员代码,每一个会员都有一个账号,对应一个唯一的代码。

利用该漏洞的注入代码是:2fly_gift.php?pages=content&gameid=1 and 1=2 union select 1,2,3,4,concat(password),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37 from cdb_members。

安全小百科:注入代码中的concat(password)意思是连接密码表段。如果想知道用户名,只需要将该句改为concat(username,password)即可。不过这样最终得到的用户名和密码MD5值是紧密连在一起的,所以在username与password中间通常会加“0x3a”(显示为冒号)、“0x5f”(显示为小下画线),以分隔开用户名和密码(图3)。

34-f06-03.jpg

利用插件漏洞控制网站

第一步:打开谷歌搜索页面,输入关键字inurl:2fly_gift.php或者“为了确保资源有效性请你在领取后立刻使用”(搜索时去掉引号),得到的搜索结果都是使用了2Fly礼品(序号)发放插件的论坛。挑选一个论坛作为目标论坛即可(支持UID登录最好),然后在论坛根目录后面输入注入代码即可爆出密码(图4)。

34-f06-04.jpg

安全小百科:如果网站对黑客提交的SQL注入代码进行了过滤,黑客也有应对之法,例如将空格替换成“%20”、将“縗\”替换成“%df\”,这些都需要手工完成。

第二步:第一步得到的管理员密码是经过MD5加密的,需要登录专门的网站去解密,例如www.cmd5.com、www.md5.com.cn、www.xmd5.org等。如果MD5解密失败,最好重新换一个目标或者进行暴力破解。

第三步:得到管理员密码后登录论坛。登录时“UID”选择1,输入密码即可。在前台登录后,页面的右上角会出现“系统设置”(图5),这里就是后台的入口。利用同样的密码登录后台。

34-f06-05.jpg

进入后台,就可以进行各种操作。UID为1的用户对应着网站的创始人,得到管理员密码就意味着得到了这个论坛!如果是黑客做到这一步,他们还会继续,例如使用在线模板编辑功能在论坛首页挂马(图6)等。

34-f06-06.jpg

深度分析

Discuz!论坛的插件,数量多到小编数都数不过来。据小编所知,还有人故意写有后门的插件,所以选择插件也是有技巧的:插件作者以前有人气较高的作品,如果插件是知名组织出的更有安全保证;注意查看插件的版本,如果是评测版要慎用。

由于该插件此前没有正式补丁,所以我们的安全研究人员梁子恩研制了补丁程序(补丁下载地址:http://www.shudoo.com/bzsoft),大家赶紧去下载吧。此外,要定期对网站的程序进行安全检测,及时发现问题早日解决。

对普通用户而言上网时一定要开启杀毒软件的实时监控,最好使用带网页木马拦截功能的安全辅助工具,避免因为访问到被挂马的页面而导致邮箱账号、网上银行账号、QQ账号等被盗,甚至成为黑客的“肉机”。