CVE-2023-51385 OpenSSH ProxyCommand命令注入漏洞

2024-01-09 17:45:05

一、背景介绍

ProxyCommand 是 OpenSSH ssh_config 文件中的一个配置选项,它允许通过代理服务器建立 SSH 连接,从而在没有直接网络访问权限的情况下访问目标服务器。这对于需要经过跳板机、堡垒机或代理服务器才能访问的目标主机非常有用。

二、漏洞简介

ssh_config文件中的ProxyCommand、LocalCommand指令或"match exec"谓词通过%u、%h或类似的扩展标记引用用户或主机名时,可能会导致命令注入的风险。

在Git中,用户或主机名中的shell元字符未被禁止(如在主机名中进行命令拼接),这可能导致存储库包含一个带有shell元字符的子模块用户或主机名。这种情况可能引发命令注入漏洞。

三、影响版本

OpenSSH < 9.6

四、漏洞复现

1、复现版本

请添加图片描述

2、配置SSH规则

在~/.ssh/config中配置如下规则

host *.example.com
  ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p

请添加图片描述
这条配置意为:对于所有以.example.com结尾的主机,通过地址为192.0.2.0、端口为8080的代理服务器连接到目标主机。

3、命令执行

使用命令

git clone https://github.com/zls1793/CVE-2023-51385_test --recurse-submodules

请添加图片描述
https://github.com/zls1793/CVE-2023-51385_test?tab=readme-ov-file
项目结构为:
请添加图片描述
其中.gitmodules如下:
请添加图片描述
git的submodule是一个被仓库包含的子仓库,图中的url本应指向该子仓库的地址

git clone执行后效果如图
请添加图片描述

五、漏洞修复

升级至OpenSSH 9.6p1
水平有限,分析开摆

文章来源:https://blog.csdn.net/mirocky/article/details/135485164
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。