log4j 通常在哪个操作系统特权级别运行?

信息安全 开发 特权升级 log4shell
2021-08-18 19:27:58

考虑到最近在 log4j 库中发现了一个 RCE 漏洞,该库用于比我想象的更多的应用程序。我想到了以下问题。

如果攻击者成功利用 log4shell,payload 是以 root 身份运行还是以普通(低权限)用户身份运行?

换句话说,负载执行权限级别是否取决于使用 log4j 的服务或应用程序运行的权限级别?

如果有效载荷以普通用户运行,攻击者除了 log4shell 之外还需要权限提升才能获得 root 权限。控制整个机器并造成更多损害会更加困难(例如禁用系统审计工具以隐藏其他恶意活动,安装系统范围的键盘记录程序或任何类型的间谍软件)。

3个回答

这完全取决于您的系统设置!

从技术角度来看,RCE 的执行权限与java系统上的进程相同。这可能意味着以 root 身份运行,但通常情况下,这意味着以特权较低的用户身份运行。当我谷歌“debian tomcat”时,是我遇到的第一个指南,它建议为 tomcat 进程设置一个专用用户。

从我做渗透测试的个人经验来看,这就是你期望的服务器设置方式。正如您正确评估的那样,这意味着攻击者需要找到某种方法来提升他们的权限。在正确设置的系统上,这应该是不可能的,但是您永远不知道系统管理员在一天很长并且不想过去的时候会做什么。

我已经发布了一个相关的问题,以获得有信誉和权威的答案。

这是我的答案:

1.) CVE-2021-44228 涉及向使用特定版本 log4j 库的 Java 应用程序注入格式错误的字符串。如果构造正确,此字符串可以实例化库的查找功能以查询恶意 LDAP 服务器,该服务器通过格式正确的响应,可以在易受攻击的应用程序的主机上执行命令。

2.) 虽然可能存在可以通过在目标主机上执行所述远程代码来利用的其他漏洞,但没有迹象表明该漏洞利用本质上执行特权提升方法。

3.) 典型的基于 Java 的 Web 应用程序的执行上下文可能具有一些提升的权限,包括对应用程序或服务配置文件的写入权限,以及启动\停止\启动已发布服务的能力。在这种情况下,我同意高严重性级别。

4.) 一个不同的场景涉及由非特权用户实例化任意 Java 堆栈。这里的典型执行环境在系统影响方面会受到更多限制。例如,标准用户级帐户只能访问用户级功能,并且在对系统文件的写入访问方面受到更多限制。此外,远程访问用户实例化的应用程序在某种程度上是不典型的。

5.) 如果我的断言是正确的,对于在非特权执行上下文中运行的 Java 应用程序,CVE-2021-44228 的严重性会显着降低。

6.) 主要利益相关者对这些常见用例之间在严重性方面的差异缺乏权威的澄清,这令人不安。我想从权威、有信誉的来源获得对我的断言的确认。

根权限是一个红鲱鱼,在典型的现代服务器设置中相当不相关。

照原样,log4shell RCE 漏洞有效地为攻击者提供了 Java 服务器进程可以访问的所有信息。

这样,攻击者通常会得到:

  • 对应用程序数据库的读写访问权限。
  • 其他系统的各种 API 密钥和密码。
  • 可能所有活动用户的凭据(可以在其他地方重用或通过中央身份管理(如(原文如此!)LDAP)完全与更关键的系统相同)。
  • 当然,他们可以启动进程,例如僵尸网络客户端、加密矿工或垃圾邮件引擎。

这基本上已经是皇冠上的明珠了——服务器通常是一个虚拟机或容器,上面没有运行其他任何东西,也没有人直接登录过它。谁在乎在那里扎根?根权限是实现业务目标的中间步骤,而不是其本身的目标。

即使你真的很在意 root 权限:权限提升漏洞也很常见——而且经常被打折扣,因为“它是一个服务器,我们没有不受信任的操作系统用户”。