错误使用 tmux 可能会导致提权

这篇文章提到,如果非 root 用户在 tmux 中的 shell 里登录了 root 帐号,利用 send-keys 功能会导致被提权。

send-keys 特性可以朝 tmux 里的 shell 发送模拟键盘按键。假如某个 pane 中的 shell 执行 su 登录 root 帐号,就可能被恶意脚本利用:

#!/bin/sh
for pane in `tmux list-panes | grep -Po '^\d'`; do
tmux send-keys -t $pane 'C-c'
tmux send-keys -t $pane 'whoami
';
done;

如上是文章中给的脚本,首先会给每个终端都发送模拟 Ctrl+c 按键,如果有运行程序,将会被中断;接着再模拟输入 whoami 命令并执行。

虽然场景利用很有限,但也不失是个好思路,提醒我们应当谨慎地对待 root 权限,确实见过不少人用普通身份登录的服务器,但却在 tmux 中的某个 shell 里用 su 切换到 root 身份去运行某些服务脚本;或长时间保持一个 root 身份的 shell 方便管理服务器。