听老外讲解如何将XSS转化为RCE

简介: 本文讲的是听老外讲解如何将XSS转化为RCE,Black Hat 2017可谓成果丰硕,除了各种安全工具和理论出现之外,也出现了许多新的安全研究方向,比如Doyensec的联合创始人Luca Carettoni就介绍了关于Electron安全方面的新思路 https://twitter.com/lucacarettoni 。
本文讲的是 听老外讲解如何将XSS转化为RCE

听老外讲解如何将XSS转化为RCE

前言

Black Hat 2017可谓成果丰硕,除了各种安全工具和理论出现之外,也出现了许多新的安全研究方向,比如Doyensec的联合创始人Luca Carettoni就介绍了关于Electron安全方面的新思路 https://twitter.com/lucacarettoni 。为了对他的这个思路有更深入的了解,我在会后和他讨论了可能基于Electron应用程序的设计漏洞和运行漏洞,特别是在安全防护框架到位的情况下,黑客如何绕过这些漏洞,比如,也可以通过跨站脚本来呈现不可信内容来实现可靠的远程执行代码(RCE)。

了解nodeIntegration标志

其实对信息安全方面有所了解的开发人员都知道,在整合了Node.js的应用中直接呈现不受信任的远程或本地内容是非常危险的。正是出于这一方面的考虑,Electron框架提供了两种不同的机制来帮助应用程序在“沙盒环境”中呈现不受信任的资源:

BrowserWindow机制

听老外讲解如何将XSS转化为RCE

WebView机制

听老外讲解如何将XSS转化为RCE

在上面的例子中,将nodeIntegration标志设置为false。即使在渲染器进程中运行了Node.js引擎,页面中运行的JavaScript将无法访问全局引用。

寻找绕过nodeIntegration的方法

现在应该明白为什么nodeIntegration是框架的关键安全相关设置,这种机制中的漏洞可能会导致完全的主机攻击,简单地渲染不受信任的网页。作为一个网络极客,我使用这种漏洞将传统的XSS变成了RCE。由于所有Electron应用程序都与框架代码捆绑在一起,因此在整个生态系统中解决这些漏洞也是复杂的。

在我的研究中,我已经广泛分析了所有的项目代码变化,以发现先前发现的实际绕过案例,目的是研究Electron的设计漏洞。只有掌握了这些知识,才能找到绕过漏洞的办法。

通过研究官方文档,我很快就发现了Electron的“glorified”JavaScript API引起的与标准浏览器的显着偏差。当创建一个新窗口时,Electron返回一个BrowserWindowProxy的实例。该类可用于操纵子浏览器窗口,从而颠覆同源策略(SOP)。

绕过SOP的第一种办法:

听老外讲解如何将XSS转化为RCE

绕过SOP的第二种办法:

听老外讲解如何将XSS转化为RCE

绕过SOP的第二种办法使用的评估机制可以用下图解释:

听老外讲解如何将XSS转化为RCE

另外的源代码审查揭示了存在特权的URL(类似于浏览器的特权区域)。通过设计将SOP-bypass与在 lib/renderer/init.js中定义的特定特权URL相结合,我意识到我可以覆盖nodeIntegration设置。

听老外讲解如何将XSS转化为RCE

包括影响1.6.7版本之前的所有Electron发布的nodeIntegration绕过的简单但可靠的Poc:

听老外讲解如何将XSS转化为RCE

2017年5月10日,我通过Electron邮件向维护者报告了此问题。在几个小时之内,我收到了一个答复,他们已经在修复了,因为特权的chrome-devtools://在我报告的前几天已经被发现。

缓解措施

1.升级到最新的Electron版本,因为Electron使用Chromium和Node.js,影响这些组件的漏洞可能会影响应用程序的安全性。通过将Electron更新到最新版本,你可以确保关键漏洞(例如nodeIntegration绕过)已经被修补,并且不能被利用来滥用你的应用程序。

2.采用安全编码的方式,你的应用程序的第一道防线是你自己的代码。通常的网络漏洞(如XSS)对Electron的安全性影响较大,因此强烈建议采用安全软件进行应用搭建并执行定期的安全测试。

3.了解所使用的的框架,目前流行的浏览器所采用的特定规则以及安全机制并不能适用于Electron(例如同源策略),应采取深度防范机制来缓解这些漏洞。详细信息,请参Electron木安全演示和Electron安全清单的白皮书

4.使用最新的“沙箱”实验功能,即使nodeIntegration被禁用,Electron的当前实现也不能完全缓解加载不可信资源引入的所有风险。因此,建议使用利用Chromium的沙箱功能。沙箱渲染器没有运行Node.js环境(除了预加载脚本之外),渲染器只能通过IPC将任务委派给主进程来对系统进行更改。请注意,目前<webview>标签等还不支持沙箱检测。




原文发布时间为:2017年8月17日
本文作者:xiaohui 
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
13天前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
48 5
|
15天前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
42 5
|
13天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
43 3
|
14天前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
63 1
|
5月前
|
XML 安全 JavaScript
|
存储 数据库
力大砖飞-存储型Xss Fuzz手法
力大砖飞-存储型Xss Fuzz手法
147 0
|
JavaScript 前端开发 网络安全
[网络安全]DVWA之XSS(DOM)攻击姿势及解题详析合集
XSS(DOM)-low level 源代码未进行任何过滤 复选框中的内容为可变参数
163 0
|
移动开发 安全 JavaScript
XSS绕过安全狗方法【持续更新】
XSS绕过安全狗方法【持续更新】
387 0
|
存储 JavaScript 安全
pikachu 靶场之XSS(跨站脚本) -下篇
pikachu 靶场之XSS(跨站脚本) -下篇
160 0