SSH服务渗透测试利用指北

本文介绍了SSH和SFTP的基础知识,常见的SSH服务器和库,以及配置错误,如允许root登录和SFTP命令执行。此外,讨论了密码爆破、漏洞利用(如CVE-2018-10933)以及模糊测试方法。最后,提供了相关工具资源和SSH安全准则,以提升服务器安全性。
摘要由CSDN通过智能技术生成

0x01 SSH和SFTP是什么

SSH是一种安全的远程shell协议,用于通过不安全的网络安全地运行网络服务。默认的SSH端口是22,通常会在Internet或Intranet上的服务器上看到它的打开状态。

SFTP是SSH文件传输协议,该协议用于通过SSH连接传输文件,大多数SSH实现也支持SFTP。

0x02 SSH服务器/库

最著名和最常见的SSH服务器和客户端是openSSH(OpenBSD安全shell)。它是一个功能强大的实现,维护良好,于1999年首次发布。因此,这是自Windows 10以来在Windows中附带的BSD,Linux的软件中Windows上最常看到的实现。

但是openSSH并不是唯一的实现,这里还有其他软件实现:

SSH服务器:

· openSSH – OpenBSD SSH,自Windows 10起在BSD,Linux发行版和Windows中提供

· Dropbear – OpenWrt附带的用于内存和处理器资源较少的环境的SSH实现

· PuTTY – Windows的SSH实现,通常使用客户端,很少使用服务器

· CopSSH – Windows版OpenSSH的实现

SSH库(在服务器端实现):

· libssh -多平台C库实现与在绑定SSHv2的协议的PythonPerl的ropensci ; 它由KDE用于sftp,由GitHub用于git SSH基础结构

· wolfSSH –用ANSI C编写的SSHv2服务器库,面向嵌入式,奇热RTOS和资源受限的环境

· Apache MINA SSHD – Apache SSHD Java库基于Apache MINA

· paramiko – Python SSHv2协议库

0x03 常见配置错误

root账号登录

默认情况下,大多数SSH服务器实现将允许root登录,建议禁用它,因为如果该帐户的凭据泄漏,攻击者将直接获得管理特权,这也将允许攻击者对该帐户进行暴力攻击。

如何禁用openSSH的root登录

1. 编辑SSH服务器配置 sudoedit /etc/ssh/sshd_config

2. 更改#PermitRootLogin yes成PermitRootLogin no

3. 进行配置更改: sudo systemctl daemon-reload

4. 重启SSH服务器 sudo systemctl restart sshd

SFTP命令执行

另一个常见的SSH错误配置通常出现在SFTP配置中。在大多数情况下,创建SFTP服务器时,管理员希望用户具有SFTP访问权限来共享文件,而不希望在计算机上获得远程Shell。因此,他们认为创建用户,为用户分配占位符shell(如/usr/bin/nologin或/usr/bin/false)并将其chroot足以避免shell访问或滥用整个文件系统。但这是错误的,用户可以在身份验证后立即要求执行命令,然后再执行其默认命令或shell程序。因此,要绕过将拒绝shell访问的占位符shell,只需执行以下操作即可要求执行一条命令(例如/bin/bash)

 $ ssh -v noraj@192.168.1.94 id
 ...
 Password:
 debug1: Authentication succeeded (keyboard-interactive).
 Authenticated to 192.168.1.94 ([192.168.1.94]:22).
 debug1: channel 0: new [client-session]
 debug1: Requesting no-more-sessions@openssh.com
 debug1: Entering interactive session.
 debug1: pledge: network
 debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
 debug1: Sending command: id
 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
 uid=1000(noraj) gid=100(users) groups=100(users)
 debug1: channel 0: free: client-session, nchannels 1
 Transferred: sent 2412, received 2480 bytes, in 0.1 seconds
 Bytes per second: sent 43133.4, received 44349.5
 debug1: Exit status 0
 
 $ ssh noraj@192.168.1.94 /bin/bash

这是用户的安全SFTP配置(/etc/ssh/sshd_config– openSSH)的noraj示例:

 Match User noraj
         ChrootDirectory %h
         ForceCommand internal-sftp
         AllowTcpForwarding no
         PermitTunnel no
         X11Forwarding no
         PermitTTY no

此配置将仅允许SFTP通过强制启动命令并禁用TTY访问来禁用shell程序访问,还可以禁用所有类型的端口转发或隧道。

认证方式

在高安全性环境中,通常的做法是仅启用基于密钥或两因素的身份验证,而不是基于简单因素密码的身份验证。但是通常启用更强的身份验证方法而不会禁用较弱的身份验证方法。一种常见的情况是启用publickeyopenSSH配置并将其设置为默认方法,而不是禁用password。因此,通过使用SSH客户端的详细模式,攻击者可以启用了一种较弱登录的方法:

 $ ssh -v 192.168.1.94
 OpenSSH_8.1p1, OpenSSL 1.1.1d  10 Sep 2019
 ...
 debug1: Authentications that can continue: publickey,password,keyboard-interactive

例如,如果设置了身份验证失败限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值