CVE-2024-36057Koha Library 23.05.10之前版本存在严重的远程代码执行漏洞。漏洞原因在于`upload-cover-image.pl`脚本在处理用户上传的ZIP文件时,未对文件名进行充分清理,直接将其传递给系统解压命令。攻击者无需身份认证,可通过构造包含Shell元字符的恶意文件名,在服务器端执行任意系统命令,完全控制受影响的服务器。
该漏洞属于典型的操作系统命令注入(OS Command Injection)。漏洞点位于Koha的`upload-cover-image.pl`文件中的代码行`qx/unzip $filename -d $dirname/;`。在Perl中,`qx`运算符用于执行外部系统命令,类似于反引号。程序设计初衷是解压用户上传的ZIP文件到指定目录,但由于未对`$filename`进行安全校验,攻击者可以控制文件名内容。攻击者构造一个ZIP文件,其中包含带有Shell元字符(如分号`;`、反引号`` ` ``或管道符`|`)的文件名。当系统调用`unzip`命令时,Shell会将这些元字符解释为命令分隔符,从而执行攻击者注入的任意命令。由于该接口未要求身份验证(PR:N),且通过网络即可触达(AV:N),任何能够访问服务器的攻击者均可利用此漏洞获取系统最高权限。