事情是这样的,最近所使用的GitLab被云厂商发出安全告警,若在规定时限内未处理,将关停服务器。
于是乎,打开吃饭的工具,依据告警信息,查看服务器运行情况。既然,告警中提到GitLab,首先,果断将其kill掉
gitlab-ctl stop
然后,top命令实时观察
top
发现这时有两个git用户在执行的程序很可疑,一个在执行命令 psql
,一个在执行命令/usr/sbin/sql
另外打开一个终端窗口,kill掉这两个进程
kill -9 [可疑进程号]
不久发现 git 用户执行的操作又会出现,到此判断为有定时任务在执行
查看定时任务日志 tail -f /var/log/cron
果然git用户执行的操作有问题
再次观察git用户进程,切换到git 用户 su git
,查看定时任务 crontab -l
查看定时配置 crontab -e
发现空空的,毛也没有
于是乎查看目录/var/spool/cron/
ls /var/spool/cron/
查看/var/spool/cron/git 文件内容 cat /var/spool/cron/git
再来一套组合拳: top
加 tail -f /var/log/cron
查看定时任务日志
观察一段时间后,没有异常情况出现,到此处理完毕,接下来就是升级GitLab
查看GitLab版本信息 rpm -qa|grep gitlab
利用GitLab ExifTool RCE漏洞攻击受影响的 GitLab版本:
9 <= GitLab(CE/EE)< 13.8.8
9 <= GitLab(CE/EE)< 13.9.6
10 <= GitLab(CE/EE)< 13.10.3
开始修复过程,执行以下一系列命令
cd ~
curl -JLO https://gitlab.com/gitlab-org/build/CNG/-/raw/master/gitlab-ruby/patches/allow-only-tiff-jpeg-exif-strip.patch
cd /opt/gitlab/embedded/lib/exiftool-perl patch -p2 < ~/allow-only-tiff-jpeg-exif-strip.patch
开启GitLab服务 gitlab-ctl start
使用 top
观察各个进程及资源占用情况
很详细