用于枚举用户名的自定义漏洞利用程序(Python 2.7),针对 CVE-2016-6210(OpenSSH 7.2-p2 及更早版本)
仅应在授权系统上使用
我编写此程序作为利用 CVE-2016-6210 的工具,该漏洞存在于 OpenSSH(7.3 版本之前)中,由 Eddie Harari 披露
据我所知,问题在于这些版本的 OpenSSH 在处理大密码(这里是 25KB)时,哈希处理时间会导致我们可以判断用户名是否存在,因为有效用户的时间更长。
此程序通过允许用户发送多个用户名(来自字典列表)并计算处理时间来帮助利用此漏洞。用户可以设置一个适合自身的时间阈值,当处理时间超过该阈值时,将显示时间和用户名。
用户还可以添加一个 IP 或电子邮件地址,以测试列表中的项以及附带该附加结尾的项。 默认情况下(如果不提供附加内容),程序将以 word 和 word@IP 的形式测试字典中的每个词。 如果提供了附加内容,则执行相同操作,但将 word@IP 替换为 word@appendage。
每个词发送的次数和响应计时可以自定义,程序会自动生成平均处理时间,并用于替换单次时间,以提高可靠性。
还可以设置延迟,防止程序发送请求过快。
至于 SSH 请求代码本身,cveCode.py 中的大部分代码归功于 Eddie Harari:发送和计算时序的部分使用了 Harari 代码的修改版本。他的公告和示例代码可在此处找到。
注意:我的代码仅在 OpenSSH-7.2p2(客户端为 Kali Linux)上进行了黑盒测试,需要进一步测试。结果和参数由用户控制和解释。
python exploit_6210.py IP_ADDRESS [-h] [-a ALERT] [-w WORDLIST] [-e EMAIL] [-av ITERATE_AMOUNT] [-d DELAY]
其中:
IP_ADDRESS 是您要测试的目标主机
-a ALERT(可选,默认值为 0.1)是您希望触发警报的处理时间阈值(以秒为单位),当处理时间大于该值时发出警报
-w WORDLIST(可选,默认值为 usernamelist)是要测试的用户名列表文件路径
-e EMAIL(可选)是要附加到字典中每个元素末尾的 IP 或电子邮件(应类似于:@IP_ADDRESS 或 @email.com)(注意:会同时尝试原始项和项+电子邮件两种形式)
-av ITERATE_AMOUNT(可选,默认值为 1)是每个用户名查询 SSH 服务器的次数,用于获得更可靠的时序平均值(数值越高,耗时越长,差距明显)
-d DELAY(可选,默认值为 0.5)是每次请求之间的大致延迟(以秒为单位)(数值越大,耗时越长,差异巨大)