Olivetin中的OS命令注入漏洞CVE-2025-50946
OliveTin是为管理和执行命令而设计的工具,通过 Web 界面提供预定义 Shell 命令的安全执行功能,支持零代码门槛操作和灵活权限控制。
一、基本情况
OliveTin是一款开源的Web化Shell命令执行平台,简单来说,该平台能把复杂的Linux命令封装成网页按钮,通过权限控制实现安全操作。
OliveTin 是一款允许用户通过 Web 界面安全简单地访问预定义 shell 命令的工具,该工具适用于多种场景,尤其适合技术水平较低的用户。
栋科技漏洞关注到在Olivetin 2025版本中的自定义主题功能中存在命令注入漏洞,该漏洞被追踪为CVE-2025-50946,CVSS 3.1评分6.5。
二、漏洞分析
CVE-2025-50946漏洞是安全人员在分析OliveTin如何在其预定义的操作(如olivetin-get-theme操作)中处理用户输入时发现的严重漏洞。
漏洞存在于 Olivetin 2025 版本中的自定义主题功能中,导致漏洞的原因是因为OliveTin在shell中执行输入之前未能对其进行清理或转义。
具体而言,CVE-2025-50946漏洞是个命令注入漏洞,漏洞位于service/internal/executor/arguments.go文件中的ParseRequestURI函数。
攻击者可以通过特定输入参数,执行未授权的操作系统命令,从而获取敏感信息或执行恶意操作,由于OliveTin用户群体广泛,建议修复。
该漏洞的核心问题在于OliveTin如何处理用户提供的URL参数,特别是在themeGitRepo字段中,这属于OliveTin-get-theme操作的一部分。
(一)以下是细目分类:
User input:用户可以为themeGitRepo参数提供一个URL。
Validation:应用程序使用typeSafetyCheckUrl函数来验证所提供的Url的格式是否正确。
Execution:一旦通过验证,URL就可以在shell命令中使用,而不需要正确的转义。
此设置为攻击者在URL中注入恶意命令创造了机会,然后由系统执行,例如,攻击者可提交一个类似http://a:cat</etc/passwd的URL,
这将通过URL验证,但仍然在服务器上执行cat命令,从而可能泄露敏感信息,如/etc/passwd。
(二)逐步分解
1、arguments.go中的URL参数处理
负责验证URL参数的代码的关键部分在typeSafetyCheckUrl函数中。该函数尝试使用url验证输入。
ParseRequestURI,它检查URL的格式是否正确。下面是代码的相关部分:

虽然该方法检查URL的结构正确性,但是它没有考虑将URL传递到shell命令中的安全性问题。
因此,包含特殊字符的URL,例如:;, $(), < and >仍然可以被用于命令注入。
2、Shell命令执行
一旦URL参数被验证,它就会包含在OliveTin执行的最后一个shell命令中。这里代码的关键部分在stepExec函数中:

在这一步中,可能包含用户提供的URL的finalParsedCommand被直接传递给shell(sh-c),shell在shell中解释任何特殊字符。
如果没有适当的净化或转义,攻击者可以注入任意命令,如$(id) or ;cat /etc/passwd,将由系统执行。
3、POC开发验证
让我们来看一个攻击者如何利用此漏洞的示例:
(1)攻击者提交一个类似http://a:cat</etc/passwd的URL到/?action=Get+OliveTin+Theme
(2)URL通过了类型SafetyCheckUrl验证,因为url.ParseRequestURI只检查URL是否格式正确,不考虑shell元字符。
(3)然后,URL被合并到shell命令中。因为cat</etc/passwd是一个有效的shell命令,所以它将在最后一个命令运行时执行。
(4)然后,攻击者可以访问敏感的系统文件,如/etc/passwd,从而可能泄露用户凭据以及整个系统的信息
三、影响范围
Olivetin 2025
四、修复建议
未知
五、参考链接
