Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-12877-Exploit — 교육용 CVE-2024-12877 익스플로잇 데모: GiveWP WordPress 플러그인의 PHP 객체 주입 취약점 시연. 근본 원인 분석, 정규식 우회 기법, 안전한 익스플로잇 관행 포함. | Kitploit
도구/GitHubGitHub/soltanali0/cve-2024-12877-exploit
Static AnalysisVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationCTFPenetration TestingLearning & EducationPayload Development
GitHubsoltanali0/cve-2024-12877-exploit

CVE-2024-12877-Exploit

교육용 CVE-2024-12877 익스플로잇 데모: GiveWP WordPress 플러그인의 PHP 객체 주입 취약점 시연. 근본 원인 분석, 정규식 우회 기법, 안전한 익스플로잇 관행 포함.

1111년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
저장소 보기
공유

GO-TO CVE – CVE-2024-12877-Exploit

66주차 | 작성자: Ali Soltani (soltanali0))

GO-TO CVE 시리즈의 66주차에 오신 것을 환영합니다. 이 시리즈에서는 취약점을 분석하고, 근본 원인을 파악하며, 안전한 교육적 맥락에서 실용적인 익스플로잇 기술을 시연합니다.


🚨 개요

CVE-2024-12877는 가장 널리 사용되는 WordPress 기부 플러그인 중 하나인 GiveWP에서 발견된 PHP 객체 주입 취약점입니다. 사용자 제어 입력에 대한 unserialize()의 안전하지 않은 사용으로 인해 공격자가 PHP 매직 메서드(예: __wakeup())를 트리거하여 다음과 같은 결과를 초래할 수 있습니다:

  • 원격 코드 실행(RCE) ⚡
  • 민감한 데이터 도용 🕵️‍♂️
  • 권한 상승 🔑
  • 전체 서버 장악 ☠️

CVSS: 9.8 치명적 | 벡터: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H


🧩 GiveWP 소개

image

GiveWP는 수천 개의 자선 웹사이트, NGO, 기금 모금 플랫폼을 지원합니다. 민감한 재정 및 기부자 데이터를 처리하기 때문에 이곳의 취약점은 매우 큰 영향을 미칩니다. 객체 주입을 악용하는 공격자는 단일 플러그인에서 전체 WordPress 설치 및 기본 서버를 손상시킬 수 있습니다.


⚙️ 취약점 세부 정보

  • 근본 원인: 신뢰할 수 없는 입력에 대한 unserialize() 사용.

  • PHP 매직 메서드: PHP는 객체 수명 주기 동안 이를 자동으로 호출합니다:

  • 취약점은 사용자 제어 입력에 대한 PHP 함수 unserialize()의 안전하지 않은 사용에서 비롯됩니다. unserialize()는 PHP 데이터 구조를 재구성하도록 설계되었지만 위험한 부작용이 있습니다: 객체가 재구성될 때 PHP는 자동으로 매직 메서드를 호출합니다.

PHP의 매직 메서드

  • __wakeup() – 객체가 역직렬화될 때 트리거됩니다.

  • __destruct(), __toString(), __get/__set(), __call/__callStatic() – 악의적인 실행에 활용될 수 있습니다.

  • 정규식 검증: GiveWP는 직렬화된 입력을 감지하기 위해 정규식 검사를 구현했습니다. 새로운 정규식은 더 많은 데이터 유형을 감지하지만, 정규식은 객체 주입을 안정적으로 방지할 수 없습니다.

image

핵심 통찰력:

조작된 직렬화 객체를 사용하여 공격자는 객체 속성을 설정하고, PHP 자체가 매직 메서드를 호출하여 공격자의 논리를 실행합니다.

정규식 검증

GiveWP는 입력이 직렬화되었는지 확인하기 위해 정규식 기반 검증을 구현했습니다. 이전 정규식 (불완전)

  • 배열과 객체만 인식했습니다.

  • 다른 직렬화 유형(문자열, 정수, 부울, 실수, null)은 탐지를 우회했습니다.

carbon

새로운 정규식 (개선되었지만 여전히 결함 있음)

  • 모든 PHP 직렬화 유형을 인식합니다.

  • 일부 간단한 페이로드를 차단합니다.

  • 그러나 핵심 문제는 남아 있습니다: 사용자 입력에 대해 unserialize()가 사용된다면, 정규식으로는 해결할 수 없습니다.

carbon (1)

이 스니펫은 두 가지 다른 정규식 구현을 비교하기 위해 작성되었습니다:

  • is_serialized_old() → 배열과 객체만 감지하는 이전 버전.

  • is_serialized_new() → 모든 PHP 직렬화 데이터 유형(배열, 객체, 문자열, 정수, 부울, 실수, null)을 인식하는 개선된 버전. 테스트 값 집합(배열, 객체, 문자열, 정수, 부울, 실수, null)을 만들고, 직렬화한 후 각각을 두 정규식 함수로 확인합니다. 간단히 말하면:

image

그리고 이 코드를 도커에서 실행한 후 브라우저에서 이 결과를 볼 수 있습니다.

image

💥 익스플로잇 데모

1단계

carbon (2)

2단계: 취약한 클래스 생성

carbon (4)

이 클래스에는 역직렬화될 때 자동으로 실행되는 __wakeup() 메서드가 있습니다.

3단계: 페이로드 제작

image

4단계: 출력 파일을 저장한 후 이 파일에서 익스플로잇을 볼 수 있습니다.

image

익스플로잇:

image
  • 이전 정규식: FALSE → 페이로드 감지 실패.

  • 새 정규식: TRUE → 직렬화된 입력으로 감지.

  • 실행: Hello RCE! → 페이로드가 역직렬화되었고, 매직 메서드 __wakeup()이 공격자 제어 코드를 실행했습니다.

결과:

  • 이전 정규식: ❌ 페이로드 감지 실패
  • 새 정규식: ✅ 직렬화된 입력은 감지하지만 RCE를 방지할 수 없음

핵심 통찰력: unserialize()를 보호하기 위해 정규식에 의존하지 마십시오. 가장 안전한 접근 방식은 신뢰할 수 없는 입력을 역직렬화하지 않는 것입니다.


🛡 방지 방법

  • 신뢰할 수 없는 입력에 대해 unserialize()를 사용하지 말고 json_decode() 또는 다른 안전한 대안을 사용하십시오.
  • GiveWP 및 모든 WordPress 플러그인을 최신 상태로 유지하십시오.
  • 웹 애플리케이션 방화벽(WAF)을 배포하여 악성 페이로드를 차단하십시오.
  • PHP 및 데이터베이스 계정에 최소 권한 원칙을 적용하십시오.

📱 주간 CVE 분석 팔로우하기

저는 취약점 연구와 익스플로잇에 전념하는 두 개의 텔레그램 채널을 운영하고 있습니다.

  1. GO-TO CVE 주간 에피소드: 매주 새로운 CVE를 깊이 파고들어 상세한 분석, 데모 및 통찰력을 공유합니다. 🔗 여기서 가입하세요

  2. CVEdb – 익스플로잇 아카이브: 이 채널은 1일 익스플로잇 및 맞춤형 PoC를 CVE별로 보관합니다. 활성 익스플로잇 기술을 보고 싶은 연구자에게 좋은 자료입니다. 🔗 CVEdb 가입하기

채널을 팔로우하여 최신 CVE, 익스플로잇 기술 및 보안 연구 통찰력을 놓치지 마세요.


📚 참고 자료

  • NVD CVE-2024-12877
  • Wordfence 분석
  • GiveWP 소스

⚖️ 법적 고지

이 저장소는 교육 및 연구 목적으로만 제공됩니다. 허가 없이 취약점을 악용하는 것은 불법이며 비윤리적입니다. 작성자는 오용에 대해 책임을 지지 않습니다.

도구 다운로드