flex-AMF和Cross Site脚本的脆弱性混乱
我刚刚在德勤的SFDC上进行了安全审计.基本上我们使用flex和通过AMF进行??通信.我们使用FluorineFX(而不是LCDS和Blaze).我们被告知,因为AMF响应没有编码,有人可以操纵AMF参数并插入
Javascript这是一个XSS漏洞.我正在努力地了解AMF响应如何响应,这可以回应JS中传递的错误消息,可以由浏览器或其他任何事情执行.我对HTML和JS的XSS有丰富的经验,但是看到它被AMF标记是一个惊喜.我和FluorineFx团队保持联系,他们也很困惑.
我会惊讶地看到一个AMF库编码响应数据,氟肯定不会.似乎PortSwigger和IBM AppScan等安全应用程序将这种类型的测试包含在其工具箱中.您是否遇到过AMF的漏洞,可以解释XSS问题如何显现?只是好奇.如果有争论存在或修补漏洞,我需要争辩我的出路.考虑到Flex的AMF使用,我以为你可能有一些洞察力. 附加信息 … 所以从实际的供应商PortSwigger这一点.我向他们提出了这个问题,网,他们承认这种攻击是非常复杂的.最初他们把这个分类为高严重性安全问题,但我认为他们的调整现在正在改变.我以为我会把你的答复的内容发贴给大家,因为我认为这个观点是非常有趣的. —来自PortSwigger的问题— 谢谢你的消息.我认为答案是这可能是一个 你说得对,在响应消耗的时候不会出现这个问题 所以问题的反应格式不是太多,而是反应的 简而言之,这是一个理论上的攻击,这取决于你的风险 我认为Burp应该将AMF请求格式标记为缓解 希望有帮助. 干杯 —更多信息审核— 什么portSwigger做的不一定混乱二进制有效负载,他们做的是混乱与实际AMF参数发布到处理程序来指示请求.例如,这里是审计的代码段,它显示了对请求的AMF响应的一部分… HTTP/1.1 200 OK Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 P3P: CP="CAO PSA OUR" Content-Type: application/x-amf Vary: Accept-Encoding Expires: Tue,06 Apr 2010 18:02:10 GMT Date: Tue,06 Apr 2010 18:02:10 GMT Connection: keep-alive Content-Length: 2595 ......../7/onStatus....... .SIflex.messaging.messages.ErrorMessage.faultCode.faultString .faultDetail.rootCause.extendedData.correlationId.clientId.destination .messageId.timestamp.timeToLive body.headers.#Server.Processing..kFailed to locate the requested type com.Analytics.ca.Services.XXX5c2ce<script>alert(1)</script>9ccff0bda62.. ....I506E8A27-8CD0-598D-FF6E-D4490E3DA69F.Id95ab281-d83b-4beb-abff-c668b9fd42d5 ..fluorine.I04165c8e-f878-447f-a19a-a08cbb7def2a.A.q..@............ . DSId.Aeb5eeabcbc1d4d3284cbcc7924451711.../8/onRes ...[SNIP]... 请注意那里的“警报”脚本,他们做了什么是附加一些脚本封装的JS到传递的参数之一,包含调用的方法即’com.Analytics.ca.Services.XXX’.通过这样做,JS回来了一个错误消息,但是有很多事情会发生在JS中,以使任何地方接近执行.似乎是间接的威胁. – 安全审计员的最新观点 – 我已经与更大的团队进行了讨论,我们都认为这是一个有效的攻击. PortSwigger在他的第一段中提到,理论上,由于您将内容类型设置为x-amf,并希望它不会在浏览器中渲染,因此大多数浏览器将忽略此请求并呈现.我认为供应商非常依赖内容类型设置的事实;不过像IE和某些版本的Safari那样流行的浏览器会忽略这一点. 攻击可以通过利用CSRF或任何其他形式的启动XSS攻击来触发. 解决方法
你似乎已经回答了你自己的疑问.
因此,您有一个服务器端实现,将参数传递给amf函数调用,并将输入数据包含在返回的输出中的某处. 我明白,这主要是理论上的攻击,因为它涉及使有效载荷由浏览器呈现,而不是amf客户端.甚至可能需要浏览器/插件中的其他漏洞,甚至可以启用此方案.只要浏览器将输出处理为html / js,就可以通过一个gateway.php或类似的CSRF文章来实现这一点. 但是,除非您需要调用方能够将尖括号传递到响应中,否则仅使用html编码或剥离它们,并且此攻击场景消失. 这很有趣.通常情况下,只能对数据的预期消费者执行输出编码,但有趣的是,浏览器通常可能是一种特殊情况.这真的是一个边缘案件的一个地狱,但我都是为了人们习惯于消毒和编码他们的不信任的投入. 这让我想起在许多方面,跨协议注入可以用来滥用诸如smtp之类的协议的反射功能来在浏览器中实现XSS.见http://i8jesus.com/?p=75 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |