22 - Pentesting SSH/SFTP
最后更新于
最后更新于
漏洞赏金提示:注册 Intigriti,一个由黑客创建的高级漏洞赏金平台!立即加入我们,访问 https://go.intigriti.com/hacktricks,开始赚取高达**$100,000**的赏金!
SSH(Secure Shell 或 Secure Socket Shell) 是一种网络协议,可在不安全的网络上实现与计算机的安全连接。在访问远程系统时,它对于维护数据的机密性和完整性至关重要。
默认端口: 22
SSH服务器:
openSSH – OpenBSD SSH,在BSD、Linux发行版和Windows自Windows 10起内置
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服务器和客户端配置审计的工具。
https://github.com/jtesta/ssh-audit 是从https://github.com/arthepsy/ssh-audit/ 更新的分支。
特点:
支持SSH1和SSH2协议服务器;
分析SSH客户端配置;
获取横幅,识别设备或软件和操作系统,检测压缩;
收集密钥交换,主机密钥,加密和消息认证代码算法;
输出算法信息(可用自从,已移除/禁用,不安全/弱/遗留等);
输出算法建议(根据识别的软件版本追加或删除);
输出安全信息(相关问题,分配的CVE列表等);
基于算法信息分析SSH版本兼容性;
来自OpenSSH,Dropbear SSH和libssh的历史信息;
在Linux和Windows上运行;
无依赖项
这是默认由 nmap 发现的。但你也可以使用 sslcan 或 sslyze。
ssh
在某些版本的OpenSSH中,您可以进行时间攻击以枚举用户。您可以使用metasploit模块来利用这一点:
如果你知道一些可以使用的ssh私钥...让我们试试。你可以使用nmap脚本:
或者使用MSF辅助模块:
或者使用ssh-keybrute.py
(原生python3,轻量级且启用了传统算法):snowdroppe/ssh-keybrute。
一些系统在用于生成加密材料的随机种子中存在已知缺陷。这可能导致密钥空间大幅缩小,从而可以进行暴力破解。在此处提供了在受弱PRNG影响的Debian系统上生成的预生成密钥集:g0tmi1k/debian-ssh。
您应该在这里搜索受害机器的有效密钥。
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服务器,您可以尝试执行中间人攻击以窃取这些凭据:
攻击路径:
流量重定向: 攻击者转移受害者的流量到其计算机,有效地拦截连接尝试到SSH服务器。
拦截和记录: 攻击者的计算机充当代理,通过假装是合法的SSH服务器捕获用户的登录详细信息。
命令执行和中继: 最后,攻击者的服务器记录用户的凭据,将命令转发到真实的SSH服务器,执行它们,并将结果发送回用户,使整个过程看起来无缝且合法。
SSH MITM正是描述的操作。
为了捕获执行实际中间人攻击,您可以使用ARP欺骗、DNS欺骗或其他在网络欺骗攻击中描述的技术。
如果您想要使用在系统上发现的SSH私钥在网络中遍历,对每个系统上的每个主机使用每个私钥以供新主机使用,那么SSH-Snake就是您需要的工具。
SSH-Snake自动且递归执行以下任务:
在当前系统上查找任何SSH私钥,
在当前系统上查找可能接受私钥的任何主机或目的地(user@host),
尝试使用发现的所有私钥连接到所有目的地的SSH,
如果成功连接到目的地,则在连接到的系统上重复步骤#1 - #4。
它完全自我复制和自我传播 - 完全无文件。
SSH服务器通常默认允许root用户登录,这构成了重大安全风险。禁用root登录是保护服务器的关键步骤。通过进行此更改,可以减轻使用管理员特权的未经授权访问和暴力攻击。
禁用OpenSSH中的Root登录:
使用以下命令编辑SSH配置文件:sudoedit /etc/ssh/sshd_config
将设置从#PermitRootLogin yes
更改为**PermitRootLogin no
**。
使用以下命令重新加载配置:sudo systemctl daemon-reload
重新启动SSH服务器以应用更改:sudo systemctl restart sshd
在SFTP设置中经常出现一个常见的疏忽,管理员希望用户在不启用远程shell访问的情况下交换文件。尽管将用户设置为非交互式shell(例如,/usr/bin/nologin
)并将其限制在特定目录,但仍存在一个安全漏洞。用户可以通过在登录后立即请求执行命令(如/bin/bash
)来绕过这些限制,在他们指定的非交互式shell接管之前。这允许未经授权的命令执行,破坏了预期的安全措施。
以下是用户noraj
的安全SFTP配置示例(/etc/ssh/sshd_config
- openSSH):
这个配置将只允许 SFTP:通过强制启动命令禁用 shell 访问,禁用 TTY 访问,同时禁用所有类型的端口转发或隧道。
如果你可以访问一个 SFTP 服务器,你也可以通过这个服务器进行流量隧道,例如使用常见的端口转发:
sftp 命令中有 "symlink"。因此,如果你在某个文件夹中拥有 可写权限,你可以创建 其他文件夹/文件 的 符号链接。由于你可能被 限制 在 chroot 中,这对你来说 不会特别有用,但是,如果你可以从 非 chroot 服务(例如,如果你可以从 web 访问符号链接)中 访问 创建的 符号链接,你可以通过 web 打开符号链接的文件。
例如,要将一个新文件 "froot" 创建为指向 "_/_"** 的 符号链接:
如果您可以通过网络访问文件"froot",您将能够列出系统根目录("/")。
在高安全环境中,通常会启用基于密钥或双因素认证,而不是简单的基于密码的认证。但经常会在启用更强的认证方法的同时未禁用较弱的方法。一个常见情况是在openSSH配置中启用publickey
并将其设置为默认方法,但未禁用password
。因此,通过使用SSH客户端的详细模式,攻击者可以看到启用了较弱的方法:
例如,如果设置了身份验证失败限制,并且您从未有机会到达密码方法,您可以使用PreferredAuthentications
选项来强制使用此方法。
审查SSH服务器配置是必要的,以确保只有预期的方法被授权。在客户端上使用详细模式可以帮助查看配置的有效性。
You can find interesting guides on how to harden SSH in https://www.ssh-audit.com/hardening_guides.html
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!