IPBUF安全漏洞报告
English
CVE-2021-47759 CVSS 6.2 中危

CVE-2021-47759 MTPutty SSH密码明文泄露漏洞

披露日期: 2026-01-15

漏洞信息

漏洞编号
CVE-2021-47759
漏洞类型
敏感信息泄露
CVSS评分
6.2 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
MTPutty

相关标签

CVE-2021-47759敏感信息泄露MTPuttySSH密码泄露本地攻击PowerShell进程注入Windows安全

漏洞概述

MTPutty是一款流行的多标签页Putty管理工具,允许用户集中管理多个SSH连接。该工具在1.0.1.21版本中存在严重的敏感信息泄露漏洞。由于MTPutty在启动SSH连接时将用户密码以明文形式作为命令行参数传递给底层进程,攻击者只需在本地系统上执行简单的PowerShell命令,即可通过进程列表获取所有SSH连接的明文密码。该漏洞的CVSS评分为6.2,属于中等严重程度。虽然攻击向量为本地,但攻击者无需任何认证和用户交互即可成功利用。机密性影响为高,意味着SSH登录凭据等敏感信息存在被完全泄露的风险。对于管理多台服务器的系统管理员而言,如果使用MTPutty存储了生产环境的SSH密码,这些密码将面临被本地恶意用户或恶意软件窃取的风险。

技术细节

MTPutty在处理SSH连接认证时,采用了将密码作为命令行参数传递给底层PuTTY进程的实现方式。当用户在MTPutty中输入SSH密码并发起连接时,该密码会以明文形式出现在Windows进程列表中。攻击者可以通过以下方式利用此漏洞:

1. 使用PowerShell的Get-Process cmdlet获取所有MTPutty相关进程
2. 使用Get-CimInstance或wmic命令查询进程的完整命令行参数
3. 通过解析命令行字符串提取存储在其中的明文密码

具体来说,MTPutty进程的命令行可能包含类似如下的密码信息:
"-pw" "user_password" 或在某些实现中将密码直接附加到连接参数中。

由于Windows进程列表默认对本地所有用户可见,且无需特殊权限即可查询进程信息,因此任何能够访问系统的本地用户都可以获取这些敏感凭据。攻击者可以利用获取到的SSH密码远程登录目标服务器,进而可能获取服务器完全控制权。

该漏洞的根本原因在于将敏感凭据以明文形式存储在进程参数中,这是安全编码实践中应当避免的做法。

攻击链分析

STEP 1
步骤1
攻击者获得目标系统的本地访问权限,可以是合法用户账户或通过其他漏洞获取的有限权限shell
STEP 2
步骤2
攻击者打开PowerShell或命令提示符,执行进程查询命令列出系统上运行的MTPutty或PuTTY相关进程
STEP 3
步骤3
通过Get-CimInstance Win32_Process或wmic命令获取进程的完整命令行参数,其中包含明文SSH密码
STEP 4
步骤4
攻击者解析命令行输出,提取出SSH用户名和密码等敏感凭据信息
STEP 5
步骤5
使用窃取的SSH凭据远程登录目标服务器,获取服务器访问权限
STEP 6
步骤6
根据服务器角色和权限,攻击者可能进一步横向移动或提升权限,获取更大范围系统的控制权

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PowerShell PoC for CVE-2021-47759 # MTPutty SSH Password Disclosure via Process Listing # Method 1: Using Get-Process with CommandLine Get-Process | Where-Object {$_.ProcessName -like "*mtputty*" -or $_.ProcessName -like "*putty*"} | ForEach-Object { $process = Get-CimInstance Win32_Process -Filter "ProcessId=$($_.Id)" Write-Host "Process: $($_.ProcessName) (PID: $($_.Id))" Write-Host "Command Line: $($process.CommandLine)" Write-Host "---" } # Method 2: Using WMIC to query all process command lines wmic process where "name like '%putty%' or name like '%mtputty%'" get commandline,processid # Method 3: PowerShell one-liner for extracting passwords Get-CimInstance Win32_Process | Where-Object {$_.CommandLine -match 'putty|mtputty'} | Select-Object ProcessId, CommandLine | Format-List

影响范围

MTPutty <= 1.0.1.21

防御指南

临时缓解措施
在官方修复发布之前,建议采取以下临时缓解措施:1) 停止使用MTPutty存储SSH密码,改用SSH公钥认证方式;2) 使用第三方凭据管理器(如KeePass)单独管理SSH密码,手动输入而非自动填充;3) 通过Windows组策略限制非管理员用户使用PowerShell和wmic命令;4) 部署应用白名单策略,阻止未经授权的进程查询工具运行;5) 监控安全日志中的异常进程访问行为。长期来看,应等待MTPutty官方发布安全更新并及时应用。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表