利用Kibana无头Chrome实现远程代码执行:真实世界RCE代码详解

3 阅读1分钟

仅限会员阅读

“利用Kibana的无头Chrome:一个真实世界远程代码执行漏洞的代码详解” Aman Sharma

阅读时长约6分钟·发布于2025年12月3日

分享

当一个报表功能演变成一个远程代码执行(RCE)漏洞入口时,魔鬼往往藏在细节之中——尤其是在代码里。让我带您详细了解Kibana内置的Chromium如何与不当的沙箱配置相结合,从而打开了通向系统级攻击的大门。

免费链接 (按回车键或点击以全尺寸查看图片)

漏洞代码:一切开始的地方 在Kibana的源代码中,无头Chrome的配置位于/x-pack/plugins/reporting/server/browsers/chromium/driver_factory/args.ts。关键部分如下所示:

// 易受攻击版本的第58-60行
getArgs(options: BrowserArgs): string[] {
  const args = [
    // ... 其他参数
    '--no-sandbox', // 👈 这是绕过安全的关键
    '--disable-dev-shm-usage',
    '--disable-setuid-sandbox',
  ];
  if (options.disableSandbox) {
    args.push('--no-sandbox');
    args.push('--disable-setuid-sandbox');
  }
  return args;
}

--no-sandbox标志不仅仅是一个调试选项——它被硬编码到了Elastic Cloud的生产部署中。沙箱机制将浏览器的渲染进程与宿主系统隔离开来。没有它,渲染进程的漏洞利用就会演变为对宿主系统的攻击。

漏洞利用链:逐步代码逻辑FINISHED CSD0tFqvECLokhw9aBeRqvYTD3cAv2GUNlJNRecGo+ImnapmorFQB55yexoECFMRMmlp+/Bf5Sv6DGLZ6xvQWVPur9qIGmk8asYi5kfvs0LV9zJ95JXHHCGTOpY/8uPfA/tyPckIlFzDdbUgDbNqX59f23KEkeBGoUPzLud7BIQ=