这是一个运行 CVE-2024-3094 sshd 后门实例的环境,配合此利用工具使用:https://github.com/amlweems/xzbot。
它不是 Docker 容器。我曾尝试用 Docker 构建此漏洞环境,但失败了:
我怀疑这与 systemd 有关,因为我在 Docker 内尝试的所有启动 SSHD 的方式都是从命令行运行的,而非 systemd。
接着,我进行了实验:在已通过 xzbot 成功利用 sshd(systemd) 的 VM 机器上,我直接使用替换后的 liblzma.so 启动了 /sbin/sshd -D -e -p 2024,但 xzbot 利用失败,这表明它可能与 systemd 高度相关。
我放弃了 Docker,因为在 Docker 中通过 systemd 运行 sshd 有点复杂。
最后,我从 VM 中提取了精简的文件系统,并基于 chroot 制成了一个迷你容器,它可以轻松地在主机命名空间中配合 systemd 运行。
它在我自己的 VM 环境和另一个环境中都能正常工作,使 xzbot 利用成功。
我尚未弄清楚原理,但无论如何,我在这个项目中整理了该环境以供研究。
在本项目根目录下执行 ./compose.sh。
在本项目根目录下执行 ./remove.sh。
执行 ./xzbot -addr 127.0.0.1:2024 -cmd 'whoami > /hello',如果利用成功,你可以在 env_fs 下看到名为 hello 的文件。
https://github.com/amlweems/xzbot 提供了一个很棒的工具,它用自己的公钥修补了 liblzma.so,使其可以被访问。详情请参阅 xzbot 项目。
我们的迷你文件系统包含 xzbot 默认修补后的 lzma so 文件。并且这里已静态编译了一个 xzbot 可执行二进制文件。你可以直接执行 ./xzbot -addr 127.0.0.1:2024 -cmd 'whoami > /hello' 进行测试。
一个 systemd xzback.service 文件将被动态部署到你主机的 /etc/systemd/system/ 目录下。
xzback.service 将使用 chroot 启动到我们的迷你文件系统中,不会对你主机的文件系统产生更多影响。