我花了很长时间试图弄清楚为什么使用公钥-私钥的 SSH 在两台服务器之间不起作用。事实证明,原因是用户的主目录对于我尝试连接的服务器上的组是可写的。
当用户文件夹可写入组时与不可写入组时相比,SSH 拒绝公钥-私钥登录会增加什么安全风险?我了解 .ssh 文件夹本身以及其中的文件的预期限制的基本原理。但是,为什么主目录本身存在危险呢?什么星座可以做出这样危险的事?
我花了很长时间试图弄清楚为什么使用公钥-私钥的 SSH 在两台服务器之间不起作用。事实证明,原因是用户的主目录对于我尝试连接的服务器上的组是可写的。
当用户文件夹可写入组时与不可写入组时相比,SSH 拒绝公钥-私钥登录会增加什么安全风险?我了解 .ssh 文件夹本身以及其中的文件的预期限制的基本原理。但是,为什么主目录本身存在危险呢?什么星座可以做出这样危险的事?
如果主目录是组可写的,则该组中的任何用户都可以修改
.ssh
目录本身,例如:并获得对该用户帐户的访问权限。
如果
/home
或.ssh
目录的任何其他父目录是可写的,我可以将直接子目录移开,至少导致拒绝服务:现在
victim
无法使用 ssh 密钥登录。(不过,密码仍然有效。)让我们假设“受害者”拥有有效的密码,并且可以将密钥失败
ssh
视为其中之一。特别是(我们希望)这不会是一个可重现的问题。在这种情况下,我们可以创建一个安静的权限升级:最后,将您自己的公钥
ssh
放入/tmp/.id.pub
并等待受害者登录。一旦他们完成,您应该发现您自己的ssh
密钥已添加到他们的authorized_keys
列表中,您可以以他们的身份登录:为了获得奖励积分,您可以扩展攻击以捕获文件上的原始日期戳
authorized_keys
,并在添加您自己的密钥后恢复它(请参阅 和stat --format '%Y'
)touch --date
。如果情况只是用户的主目录本身是可写的,那么据我所知
ssh
,只会针对密钥本身生成拒绝服务:要么就这样保留,以便
ssh
密钥不再可用,或者尝试添加新密钥:在第二种情况下
ssh
,反对,攻击失败:但是,所有权和权限仍然会受到检查
.ssh
,.ssh/authorized_keys
因此您的情况实际上并没有更好。