之前网上,某著名站长论坛曾经爆出Disscz4.1.0论坛程序出现了跨站漏洞,官方正在进行修补的消息,当然,Disscz官方也随即发布了补丁,但是在这个时间之内,许多大型论坛,包括电脑报,木蚂蚁这些论坛都已经被挂马了。这次网络事件也曾被多方面关注。
Crossday Discuz!Board论坛系统(简称Discuz!论坛,中国国家版权局著作权登记号 2003SR6623是一个采用php和mysql等其他多种数据库构建的高效论坛解决方案。它作为一款商业软件产品,Discuz!无论无论是在代码质量,运行效率,负载能力,安全等级,功能操纵性和权限严密性方面等都在广大用户中具有良好的口碑。凭借,Discuz!开发组长长期积累的丰富的web开发及数据库经验和强于创新,追求完美的设计理念,使得Discuz!在很短时间内以其鲜明的个性特色从国内外同款产品中脱颖而出。经过了效率最优化和负载能力最佳化设计的Discuz!,已经已经获得了行内业越来越多专家和权威企业的认可。
wap的全称是whiess Application PrOtoc0,即无线通信应用协议,我相信大家应该对wap有过了解吧!这种技术能让手机与互联网结合起来,为用户带来更大的通信空间。,比如摩托罗拉,诺基亚爱立信,和美国的软件公司PHONE.COM(前UNWIRED PLANET)于1997年中,联合发起设立无线应用协议,就是wap标准。它定义了一系列将互联网内容过滤和转化,为适用移动通信的标准,使内容可以更容易地在移动终端上显示。就算你不知道,但是你平时上网也应该能了解到wap这个字眼吧!wap技术的出现,使许多新兴的增值业务成为可能。就像现在我们在移动的情况下,就可以在淘宝上购物,网上炒股票,,聊天微信,以及在线玩游戏等等。这些都要归功于wap技术。
XSS又叫CSS(cross site script),就是跨站脚本攻击。他指的是恶意攻击者,网wap页面里,插入恶意的html代码,当用户浏览该网页的时候,网页中的html代码就会被执行,从而达到恶意用户的某种特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人往往不在乎它的危害性,但是其实它对我们造成的危害性确实有很大的。
因为,Discuz论坛允许使用手机访问论坛wap目录来访问论坛,用wap方式访问论坛时,可以查看帖子和发送帖子,短消息等,但是在其服务端的处理过程中,并没有过滤wap方式发帖的标题,使得我们可以输入特殊构造的字符从而引发跨站攻击。
首先我们来查看一下wap/index.php这个文件,我们可以看到如下的关键代码。
当然从代码中我们可以知道,这个文件根据动作不同,分别引入不同的处理文件,所以经过我们的测试,发帖动作,是post,适时引入的是wap/include/post.inc.php这个文件。然后通过我们的分析,我们可以得到发帖处理的关键代码如下。
通过这个我们不难发现,其实并没有对获取的$subject这个变量进行过滤就直接插入到数据库当中,因此此处就构成了跨站漏洞,所以说,对于初步学习夸张攻击的朋友们来说,洞察力一定很重要。
因为我们要使用wap发帖,使用手机进行测试当然可以,但是确实比较不方便,因此我们使用PC机上的wap模拟器-winwap来进行漏洞测试。当然首先,我们需要在本地搭建一个php环境,访问地址为http://127.0.01:8080/,安装Discuz论坛,wap浏览,是默认打开的,这个时候我们应该注册一个新用户通过它来进行测试。
首先我们要安装winwap for windows 3.2,然后使用winwap访问http://127.0.01:8080/wap。
随后我们点击登录,使用我们刚才注册的那个账号登录论坛,登录成功后进入任何一个页面。
然后我们点击发布话题这个链接,会打开发表话题页面,这个时候我们就应该在标题处填写跨站字符。
这里我们只是作为测试,因此我们填写一段弹出对话框的代码,当然实际操作中因为目的的不同,可以填写其他的html或者是代码(基本上就是木马了),但是同时我们也应该需要注意两点:第一点,标题默认最多字数为八十字,第二,winwap,对中文支持不好,所以我们只能在此输入英文,但是读者可以使用其他的wap模拟器来测试,这些都是随便你们的。
然后就是我们在使用ie正常方式打开此论坛版面,就会发现跨站代码已经被执行了。
以下是引自Discuz官方的漏洞修补方法。
当然我们还可以自己来修改post.inc.php和pm.inc.php这两个文件来实现对特殊字符的修改。但是因为篇幅的原因,我就不在此详细叙述了,大家感兴趣的可以自己去找一下。Discuz官方的补丁未打补丁版本的源文件大家都可以在百度上搜索一下,然后大家可以自己对比查看一下,看看有什么区别没有。
当然为了使得用户可以随时随地的访问网站,为一个网站开放wap功能,增加用户的粘度,我想现在应该已经成为许多大网站的一致做法。同时许多程序发布商也为其相应的程序制作了wap功能,例如我写的到的具有漏洞的Discuz论坛程序,以及非常流行的动网论坛,动易建站程序。但是在传统的web中的安全威胁,有些程序员可能是没有考虑到。或许是有部分程序员太过于轻视wap,认为在手机中进行漏洞,测试和利用是十分繁琐,大部分手机甚至由于功能所限,所以根本不可能用来漏洞测试,但是他们没想到的是无论是wap还是web都是可以使用正常的数据发包进行测试,像PC上的wap模拟器一样可以浏览wap网站,并且还可以进行更好的漏洞测试,我想我说到这里,许多朋友应该想自己挖掘一下网上wap功能的程序中可能存在的威胁了吧,并对比一下与传统的漏洞再利用方式,危害以及漏洞成因方式的不同,这些我觉得大家都应该去思考一下。
在此最后,我要特别感谢在发现漏洞后及时通知了Discuz论坛官方的落伍者论坛上的某些朋友,发现漏洞并及时通知官方,而不是在没有补丁的情况下随便公布漏洞,这才是一个合格的网络安全人员必备的职业道德。
本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。