漏洞总结:Stocky POS 认证远程代码执行漏洞 漏洞概述 漏洞文件 漏洞原理 1. 任意环境变量注入(输入验证不足) 负责更新系统配置(如Twilio SMS设置)的后端API未对用户输入进行充分过滤,直接将输入写入根目录 配置文件 认证攻击者可在JSON Payload中插入换行符( ),突破原有变量定义,注入任意攻击者控制的环境变量 2. 配置覆盖(.env解析行为) Laravel框架按从上到下的顺序解析 文件 若变量被多次定义,后出现的定义会覆盖前者 通过注入通常位于 文件底部的设置(如 ),攻击者可覆盖早期定义的关键系统变量如 (决定 工具的执行路径) 3. 远程代码执行(RCE)影响 当管理员触发"Generate Backup"功能时,应用程序读取被篡改的 变量,直接拼接到PHP 函数执行的系统命令中,且未进行适当的转义 攻击者可利用Web服务器权限(如Apache/Nginx)执行任意操作系统命令,导致完全系统沦陷、数据外泄和未授权访问 影响范围 攻击向量:需要管理员认证 危害等级:高危(认证后可导致完全系统控制) 受影响功能:Twilio配置更新、数据库备份生成 修复方案 页面未提供官方修复方案,建议: 1. 输入过滤:对所有写入 文件的输入进行严格过滤,禁止换行符等特殊字符 2. 参数化配置:避免直接将用户输入写入配置文件,使用安全的配置存储机制 3. 命令执行防护:对 等危险函数使用的参数进行白名单验证和转义处理 4. 权限控制:限制 文件写入权限,分离配置更新与系统命令执行权限 POC代码(利用代码) 步骤1:准备并注入恶意Payload 认证为管理员后,向Twilio配置更新端点发送POST请求: Payload通过换行符( )重新定义 ,注入恶意命令(如使用 进行带外数据外泄),并使用 注释吸收后续硬编码参数: 注入后的 文件效果: 步骤2:触发Payload(RCE) 发送GET请求到数据库备份生成端点: 此操作强制后端使用被篡改的 调用 函数执行命令。 步骤3:验证利用成功 检查攻击者控制的服务器(如Webhook.site),确认收到来自目标服务器的HTTP请求 或检查目标服务器的活动进程/终端防护日志(如Windows Defender),确认命令行执行和参数劫持成功