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

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/cduram/notcve-2026-0014
漏洞分析漏洞利用Web应用程序漏洞利用信息收集渗透测试
GitHubcduram/notcve-2026-0014

NotCVE-2026-0014

InputLeap 拖放处理程序中 CWE-22 路径遍历的漏洞验证与安全公告,包含复现步骤、利用脚本及修复建议。

查看仓库
414小时6分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

摘要

产品: InputLeap v3.0.3
厂商: input-leap
漏洞: 路径遍历
CWE: CWE-22 对路径名的限制不当导致目录遍历(“路径遍历”)

描述

InputLeap 的拖放处理程序试图通过查找最后一个路径分隔符并仅保留其后的部分来清理文件名。当未找到分隔符时,C++ 字符串搜索会返回一个称为 npos 的特殊哨兵值以表示失败。然而,代码在将结果用于算术计算之前从未检查该哨兵值。由于 npos 被定义为可能的最大无符号整数,减去它会发生静默回绕,并产生一个看似有效但完全错误的答案:它返回的不是仅文件名,而是整个未清理的原始字符串。攻击者可以利用这一点,构造一条消息,其中某个条目缺少分隔符,而另一个条目包含不匹配的分隔符——代码的全局分隔符检测启发式规则发生翻转,搜索静默失败,于是 ..\..\AppData\...\Startup\evil.exe 原样通过。该字符串随后被拼接到拖放目录并交给操作系统,操作系统会解释 .. 序列并将文件写入预期文件夹之外。该漏洞存在的原因是缺少对“未找到”情况的防御性检查。

复现步骤

  1. 在目标上启用 --enable-drag-drop(需主动开启,默认关闭)。
  2. 作为已连接的节点,发起一条拖放文件传输消息,其内嵌文件名数据在缓冲区某处包含一个 / 字符(以强制 slash="/"),而实际文件名段使用 \\ 分隔符,例如在数据块较早位置嵌入一个多余的 /,并使用文件名 ..\\..\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\evil.exe。
  3. DragInformation::parseDragInfo 的 find_last_of(slash, ...) 对以 \\ 分隔的文件名部分返回 npos,导致无符号算术回绕并返回完整的未截断路径。
  4. DropHelper::writeToDir 将该路径拼接到用户的拖放目标目录(默认为桌面)上,并在未进行规范化的情况下写入文件,使其落入 Startup 文件夹。
  5. 下次登录时,evil.exe 会以受害者用户身份执行。

受影响代码

/src/lib/inputleap/DragInformation.cpp
/src/lib/inputleap/DropHelper.cpp

概念验证,否则免谈

已提供一个 POC,支持 TLS 以及到服务器的非加密连接。

input-leap-directory-traversal-poc.py

影响

攻击者可以利用此漏洞将文件上传到默认或指定文件夹之外的任意路径。这可能导致代码执行

建议修复

  1. 在 DragInformation::parseDragInfo 中,将斜杠检测启发式规则替换为 std::filesystem::path(filename).filename(),以保证仅提取基名。
  2. 在 DropHelper::writeToDir 中,使用 std::filesystem::canonical 对最终路径进行规范化,如果它不以 destination 开头则拒绝。
  3. 拒绝包含 ..、NUL 字节、驱动器盘符(X:)或前导分隔符的文件名。

披露时间线

  • 2026 年 7 月 27 日 -- 尝试向 InputLeap 项目报告,但在我联系的前一天他们已归档该项目。已报告给 NotCVE。
  • 2026 年 9 月 24 日 -- NotCVE-2026-0014 发布。
下载工具