一个知道你是谁的ssh服务器 $ ssh whoami.filippo.io
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/FiloSottile/whoami.filippo.io
whoami.filippo.io网站
一个知道你是谁的 ssh 服务器。
尝试一下(它是无害的)
ssh whoami.filippo.io
ED25519 按键指纹为 SHA256:qGAqPqtlvFBCt4LfMME3IgJqZWlcrlBMxNmGjhLVYzY .
RSA 密钥指纹是 SHA256:O6zDQjQws92wQSA41wXusKquKMuugPVM/oBZXNmfyvI .
怎么运行的
当 ssh 尝试通过公钥进行身份验证时,它会将您所有的公钥一一发送给服务器,直到服务器接受一个。 可以利用这一点来枚举所有客户端安装的公钥。
另一方面,GitHub 允许每个人下载用户的公钥(这有时非常方便)。 Ben Cox 利用了这一点并 构建了所有 GitHub 公钥的数据集 。
这是一个非常普通的 golang.org/x/crypto/ssh Go 服务器,它将发布 (publickey,keyboard-interactive) 身份验证。 它不会接受任何公钥,但会记下它们。 一旦客户端完成了公钥,它将尝试 keyboard-interactive ,服务器将接受而不发送任何挑战,因此不需要用户交互。
然后它让你打开一个 shell+PTY,使用公钥和 Ben 的数据库找到你的用户名,向 GitHub API 询问你的真实姓名,打印所有这些并关闭终端。
所有有趣的部分都在 server.go 中。
我该如何阻止它?
如果此行为对您来说有问题,您可以告诉 ssh 默认情况下不要向服务器提供您的公钥。
在你的末尾添加这些行 ~/.ssh/config (在其他“主机”指令之后)
Host *
PubkeyAuthentication no
IdentitiesOnly yes
然后指定每个主机应该使用什么密钥
Host example.com
PubkeyAuthentication yes
IdentityFile ~/.ssh/id_rsa
# IdentitiesOnly yes # Enable ssh-agent (PKCS11 etc.) keys
如果你愿意,你可以使用不同的键,这样它们就不能链接在一起
Host github.com
PubkeyAuthentication yes
IdentityFile ~/.ssh/github_id_rsa