22 - Pentesting SSH/SFTP
漏洞赏金提示:注册 Intigriti,一个由黑客为黑客创建的高级 漏洞赏金平台!今天就加入我们 https://go.intigriti.com/hacktricks,开始赚取高达 $100,000 的赏金!
基本信息
SSH(安全外壳或安全套接字外壳) 是一种网络协议,能够在不安全的网络上与计算机建立安全连接。它在访问远程系统时对于维护数据的机密性和完整性至关重要。
默认端口: 22
SSH 服务器:
openSSH – OpenBSD SSH,自 Windows 10 起在 BSD、Linux 发行版和 Windows 中提供
Dropbear – 针对内存和处理器资源有限环境的 SSH 实现,随 OpenWrt 提供
PuTTY – Windows 的 SSH 实现,客户端常用,但服务器的使用较少
CopSSH – Windows 的 OpenSSH 实现
SSH 库(实现服务器端):
wolfSSH – 用 ANSI C 编写的 SSHv2 服务器库,针对嵌入式、RTOS 和资源受限环境
Apache MINA SSHD – 基于 Apache MINA 的 Apache SSHD Java 库
paramiko – Python SSHv2 协议库
枚举
横幅抓取
自动化 ssh-audit
ssh-audit 是一个用于 ssh 服务器和客户端配置审计的工具。
https://github.com/jtesta/ssh-audit 是一个来自 https://github.com/arthepsy/ssh-audit/ 的更新分支
特点:
支持 SSH1 和 SSH2 协议服务器;
分析 SSH 客户端配置;
抓取横幅,识别设备或软件和操作系统,检测压缩;
收集密钥交换、主机密钥、加密和消息认证码算法;
输出算法信息(可用自、已移除/禁用、不安全/弱/遗留等);
输出算法建议(根据识别的软件版本添加或移除);
输出安全信息(相关问题、分配的 CVE 列表等);
根据算法信息分析 SSH 版本兼容性;
来自 OpenSSH、Dropbear SSH 和 libssh 的历史信息;
在 Linux 和 Windows 上运行;
无依赖
服务器的公钥 SSH
弱加密算法
这可以通过nmap默认发现。但你也可以使用sslcan或sslyze。
Nmap脚本
Shodan
ssh
暴力破解用户名、密码和私钥
用户名枚举
在某些版本的 OpenSSH 中,您可以进行时间攻击以枚举用户。您可以使用 metasploit 模块来利用这一点:
私钥暴力破解
如果你知道一些可以使用的 ssh 私钥... 那就试试吧。你可以使用 nmap 脚本:
或 MSF 辅助模块:
Or use ssh-keybrute.py
(native python3, lightweight and has legacy algorithms enabled): snowdroppe/ssh-keybrute.
已知的坏密钥可以在这里找到:
弱SSH密钥 / Debian可预测的PRNG
一些系统在生成加密材料时使用的随机种子存在已知缺陷。这可能导致密钥空间显著减少,从而可以被暴力破解。受弱PRNG影响的Debian系统上生成的预生成密钥集可以在这里找到:g0tmi1k/debian-ssh。
您应该在这里查找受害者机器的有效密钥。
Kerberos
crackmapexec 使用 ssh
协议可以使用选项 --kerberos
来 通过kerberos进行身份验证。
有关更多信息,请运行 crackmapexec ssh --help
。
默认凭据
供应商 | 用户名 | 密码 |
APC | apc, device | apc |
Brocade | admin | admin123, password, brocade, fibranne |
Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, _Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
D-Link | admin, user | private, admin, user |
Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin |
Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer |
Juniper | netscreen | netscreen |
NetApp | admin | netapp123 |
Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle |
VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default |
SSH-MitM
如果您在本地网络中作为即将使用用户名和密码连接到SSH服务器的受害者,您可以尝试 执行MitM攻击以窃取这些凭据:
攻击路径:
流量重定向: 攻击者 转移 受害者的流量到他们的机器,有效地 拦截 连接尝试到SSH服务器。
拦截和记录: 攻击者的机器充当 代理,通过假装是合法的SSH服务器来 捕获 用户的登录信息。
命令执行和转发: 最后,攻击者的服务器 记录用户的凭据, 将命令转发 到真实的SSH服务器, 执行 它们,并 将结果发送回 用户,使过程看起来无缝且合法。
SSH MITM 完全按照上述描述进行。
为了捕获执行实际的MitM,您可以使用ARP欺骗、DNS欺骗或在网络欺骗攻击中描述的其他技术。
SSH-Snake
如果您想使用在系统上发现的SSH私钥遍历网络,利用每个系统上的每个私钥连接到新主机,那么SSH-Snake 是您所需要的。
SSH-Snake自动和递归地执行以下任务:
在当前系统上,查找任何SSH私钥,
在当前系统上,查找任何主机或目标(user@host),这些私钥可能被接受,
尝试使用所有发现的私钥SSH连接到所有目标,
如果成功连接到某个目标,则在连接的系统上重复步骤#1 - #4。
它是完全自我复制和自我传播的——并且完全无文件。
配置错误
根登录
SSH服务器默认允许root用户登录,这构成了重大安全风险。 禁用root登录 是保护服务器的关键步骤。通过进行此更改,可以减轻未经授权的管理权限访问和暴力攻击的风险。
在OpenSSH中禁用根登录:
编辑SSH配置文件:
sudoedit /etc/ssh/sshd_config
将设置更改 从
#PermitRootLogin yes
到PermitRootLogin no
。使用以下命令重新加载配置:
sudo systemctl daemon-reload
重启SSH服务器 以应用更改:
sudo systemctl restart sshd
SFTP暴力破解
SFTP命令执行
在SFTP设置中常见的一个疏忽是,管理员希望用户在不启用远程shell访问的情况下交换文件。尽管将用户设置为非交互式shell(例如,/usr/bin/nologin
)并将其限制在特定目录中,但仍然存在安全漏洞。 用户可以通过在登录后立即请求执行命令(如/bin/bash
)来规避这些限制,在其指定的非交互式shell接管之前。这允许未经授权的命令执行,破坏了预期的安全措施。
这是用户 noraj
的安全 SFTP 配置示例(/etc/ssh/sshd_config
– openSSH):
此配置将仅允许 SFTP:通过强制启动命令并禁用 TTY 访问来禁用 shell 访问,同时还禁用所有类型的端口转发或隧道。
SFTP Tunneling
如果您可以访问 SFTP 服务器,您还可以通过此方式隧道您的流量,例如使用常见的端口转发:
SFTP Symlink
The sftp have the command "symlink". Therefore, if you have 可写权限 in some folder, you can create symlinks of 其他文件/文件夹. As you are probably 被困 inside a chroot this 对你来说不会特别有用, but, if you can 访问 the created symlink from a no-chroot 服务 (for example, if you can access the symlink from the web), you could 通过网络打开链接的文件.
For example, to create a symlink from a new file "froot" to "/":
如果您可以通过网络访问文件 "froot",您将能够列出系统的根 ("/") 文件夹。
认证方法
在高安全性环境中,通常的做法是仅启用基于密钥或双因素认证,而不是简单的基于密码的单因素认证。但通常情况下,较强的认证方法被启用而没有禁用较弱的认证方法。一个常见的情况是在 openSSH 配置中启用 publickey
并将其设置为默认方法,但没有禁用 password
。因此,通过使用 SSH 客户端的详细模式,攻击者可以看到较弱的方法被启用:
例如,如果设置了身份验证失败限制,并且您从未有机会达到密码方法,您可以使用 PreferredAuthentications
选项强制使用此方法。
检查SSH服务器配置是必要的,以确保仅授权预期的方法。使用客户端的详细模式可以帮助查看配置的有效性。
配置文件
Fuzzing
References
你可以在 https://www.ssh-audit.com/hardening_guides.html 找到有关如何加固 SSH 的有趣指南
Bug bounty tip: 注册 Intigriti,一个由黑客为黑客创建的高级 bug bounty 平台!今天就加入我们 https://go.intigriti.com/hacktricks,开始赚取高达 $100,000 的赏金!
HackTricks Automatic Commands
Last updated