返回列表

basic-ftp: CRLF 注入保护不完整导致可通过凭据和 MKD 命令执行任意 FTP 命令

PoC
RCE2026-04-10

影响软件

basic-ftp

CWE

CWE-93

CVSS

8.2 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L)

受影响版本

<= 5.2.1

修复版本

5.2.2

关联产品

漏洞描述

## 漏洞概述 basic-ftp 的 CRLF 注入保护机制存在缺陷。攻击者可以通过控制登录凭据或远程路径,在 FTP 控制连接中注入任意 FTP 命令,从而实现对 FTP 服务器的非法操作。 ## 影响范围 - 软件名称: basic-ftp (npm package) - 受影响版本: <= 5.2.1 ## 利用条件 1. 攻击者能够控制传递给 `access()` 方法的 `user` 或 `password` 参数。 2. 攻击者能够控制传递给 `ensureDir()` 或 `_uploadToWorkingDir()` 等方法的远程路径字符串。 ## 漏洞原理 该漏洞主要通过两个向量实现: 1. **凭据注入 (login 方法)**: `login()` 方法在构建 `USER` 和 `PASS` 命令时直接进行字符串拼接,未调用 `protectWhitespace()` 进行 CRLF (`\r\n`) 校验。这使得攻击者可以在用户名或密码中注入额外的 FTP 命令。 2. **MKD TOCTOU 绕过 (_openDir 方法)**: 在 `_openDir()` 方法中,程序先发送了 `MKD` 命令,随后才调用 `cd()` 进行路径校验。由于 `MKD` 命令在校验前已发出,攻击者可以利用包含 CRLF 的路径注入后续命令。 ## 影响 - **文件删除**: 注入 `DELE` 命令删除服务器文件。 - **文件操作**: 注入 `RNFR`/`RNTO` 重命名文件,或 `MKD`/`RMD` 操作目录。 - **权限变更**: 注入 `SITE` 命令(如 `SITE CHMOD`)修改文件权限。 - **会话劫持**: 注入 `USER`/`PASS` 进行身份重认证。 ## 修复建议 - 在 `login()` 方法中对 `user` 和 `password` 进行 CRLF 及空字符 (`\0`) 校验。 - 在 `_openDir()` 发送 `MKD` 命令之前,先对 `dirName` 进行校验。 - 建议在 `FtpContext.send()` 核心发送方法中统一进行 CRLF 过滤,以确保所有命令都受到保护。 ## 参考链接 - https://github.com/advisories/GHSA-6v7q-wjvx-w8wg

PoC / 利用代码

公开来源 PoC,尚未在平台侧验证。

登录后可查看 PoC 内容

查看原文

当前页面内容可能涉及 AI 翻译、补全或规范化处理,请结合原始来源核对关键信息。