Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
proftpd-sftp-copy-file-write — ProFTPD 1.3.9d - 高危 - 远程 - 权限残留 / 文件写入 - SFTP copy-file 跳过目标 WRITE | Kitploit
工具/GitHubGitHub/abraxas/proftpd-sftp-copy-file-write
身份验证与授权漏洞分析漏洞利用Web应用程序漏洞利用安全虚拟化渗透测试论文与研究实验室与实践

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
abraxas/proftpd-sftp-copy-file-write

proftpd-sftp-copy-file-write

ProFTPD 1.3.9d - 高危 - 远程 - 权限残留 / 文件写入 - SFTP copy-file 跳过目标 WRITE

查看仓库
64天前尚未审核

Abraxas Labs - proftpd-sftp-copy-file-write

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-sftp-copy-file-write

proftpd-sftp-copy-file-write

类别: 权限残留 / 文件写入 可达性: 远程

ProFTPD 1.3.9d (f59f248) - proftpd.org

contrib mod_sftp 在 SFTPEngine 开启后(SFTP_FXP_EXT_DEFAULT)会通告 copy-file。fxp_handle_ext_copy_file 仅在 pr_fsio_stat(dst) 成功时,才执行目标 WRITE 以及 AllowOverwrite 检查。目标文件尚不存在时会跳过该检查。随后 pr_fs_copy_file2 会以会话 UID 创建该文件,即使在 <Limit WRITE> DenyAll 下也是如此。

FTP STOR 和 SFTP OPEN-write 仍会经过 xfer_pre_stor,它在创建前始终会 dir_check WRITE。公开的 Issue 2095 是相反的情况:SITE COPY 跳过了源 READ。本残留问题是在新文件名上的目标 WRITE。

ID暂无 CVE
类别权限残留 / 文件写入
可达性远程(已认证 SFTP)
CWECWE-863
CVSS高危:7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
产品ProFTPD
受影响版本1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_sftp
认证已认证 SFTP(SFTPEngine on)
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

我固定了标签 v1.3.9d 并阅读了 fxp_handle_ext_copy_file。它分发一个伪造的 SITE COPY 的 PRE_CMD。mod_copy 将 copy_copy 注册为 CMD,而非 PRE_CMD,因此 FTP 的目标 WRITE 检查在此路径上从不运行。源 READ 始终会经过 dir_check。目标 WRITE 则不会,除非目标已存在。实验环境是 127.0.0.1:18710 上的回环 SFTP。

攻击者能做什么

方法汇聚点权限
SFTP EXTENDED copy-file 将可读源复制到尚不存在的目标名称,位于带有 <Limit WRITE> DenyAll 的 <Directory> 下pr_fs_copy_file2完整性(实验证明): 以会话 UID 创建该文件。侦察(实验证明): 当目标 READ 被允许时,对目标进行 SFTP READ 会返回源字节。
相同目标已存在dir_check WRITE + AllowOverwrite已关闭(实验证明): copy-file 覆盖返回权限拒绝。
对相同目标进行 SFTP OPEN / STOR / SCP 上传xfer_pre_stor已关闭(实验证明): OPEN 写入/创建返回 SSH_FX_PERMISSION_DENIED(状态 3)。
未认证 copy-fileSFTP 认证已关闭。无 shell。Unix DAC 仍然适用。

实验证明与推断: 目标创建、对见证文件的目标 READ、OPEN-write 拒绝以及已存在目标的覆盖拒绝均为实验证明。未认证和 Unix DAC 仍根据认证/chroot 模型推断。

要求: 加载 contrib mod_sftp,SFTPEngine on。典型的发行版 SFTP vhost。SFTPExtensions -copyFile 会关闭该扩展。

实验环境

cd lab
./run.sh

回环 127.0.0.1:18710 映射到容器 2222。Compose 项目 proftpd-sftp-copy-file-write。镜像标签 proftpd-sftp-copy-file-write:1.3.9d。见证字符串 PROFTPD-SFTP-COPY-FILE-WRITE-WITNESS。最后一行:

SUCCESS PROFTPD-SFTP-COPY-FILE-WRITE dest-exists=yes open-write=denied copy-file=ok overwrite-denied=yes PROFTPD-SFTP-COPY-FILE-WRITE-WITNESS

修复方案

在 pr_fs_copy_file2 之前,即使目标尚不存在,也要对目标 WRITE 执行 dir_check。或者禁用该扩展:SFTPExtensions -copyFile。

参考资料

  • github.com/proftpd/proftpd 标签 v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • fxp_handle_ext_copy_file 位于 contrib/mod_sftp/fxp.c
  • SFTP_FXP_EXT_DEFAULT 包含 copy-file
  • 相反情况(FTP SITE COPY 上的源 READ 跳过,而非本目标 WRITE 残留):Issue 2095
  • CWE-863
下载工具