容器化相关问题-jenkins漏洞升级

原文地址

漏洞

  • 漏洞名
    Cloudbees Jenkins 跨站脚本漏洞(CVE-2021-21610)
  • 问题描述
    Cloudbees Jenkins(Hudson Labs)是美国CloudBees(Cloudbees)公司的一套基于Java开发的持续集成工具。该产品主要用于监控持续的软件版本发布/测试项目和一些定时执行的任务。
    Jenkins 2.274版本及之前存在跨站脚本漏洞,该漏洞源于程序没有对URL呈现作为查询参数传递的标记的格式化预览实现任何限制,攻击者可利用该漏洞获取敏感信息。以下设备或型号存在漏洞:Jenkins 2.274版本及之前、LTS 2.263.1版本及之前。
  • 修复建议
    厂商补丁:目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
    https://www.jenkins.io/security/advisory/2021-01-13/#SECURITY-1452

解决方式

  • 由于镜像构建有一些特殊配置等,不像想新构建环境
  • 因此通过启动镜像,之后容器内部替换 jenkins.war(新版344地址:jenkins.war),重启,并且从容器内部把镜像导出,之后save镜像为tar文件。替换生产环境镜像。

解决过程

可以针对镜像,直接通过测试主机,或者虚拟机,只要具备docker环境即可。

  • 由于生产环境是在局域网,因此需要构建本地虚拟机环境,且需要测试,因此要具备 docker,harbor,gitlab,环境
    可参考:http://albagu.com/#/artme_go?articleId=304

  • 漏洞版本v2.7.4.5

registry.paas/dianzi/jenkins   v2.7.4.5    d6770122878f   5 years ago      515MB

  • 启动漏洞版本
docker run -d -p 8003:8080 -v /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/jenkins:/data/jenkins -v  --name test_jenkins registry.paas/dianzi/jenkins:v2.7.4.5

  • 备份容器内jenkins.war,到主机目录,20fbab6babb2是容器id
docker cp 20fbab6babb2:/usr/share/jenkins.war  /data_file/data_path/jkens_bbc/warFileBak/jenkins.war 

  • 上传新jenkins.war到 容器里面
docker cp /data_file/data_path/jkens_bbc/warFile/jenkins.war 20fbab6babb2:/usr/share 

  • 重启容器
docker restart 20fbab6babb2

  • 从容器内部导出镜像
# 从容器保存为新镜像
sudo docker commit 20fbab6babb2 registry.paas/dianzi/jenkins:v2.344

  • 保存新镜像
docker save -o /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/jenKinsImageNew_20220419/jenkins_v2.344.tar registry.paas/dianzi/jenkins:v2.344

  • 得到新镜像后,本地启动测试,根据界面提示,更新所有相关插件即可。

docker run -u root -d -p 8003:8080 -v /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/jenkins:/data/jenkins -v /var/run/docker.sock:/var/run/docker.sock -v /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/kube:/data/kube -v /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/maven:/data/maven -v /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/robot:/data/robot -v /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/sonar:/data/sonar -v /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/devops:/data/devops -v /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/maven/conf:/usr/local/share/maven/conf --name test_jenkins344 registry.paas/dianzi/jenkins:v2.344
  • 把得到的镜像,上传到生产环境,把本地/data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/jenkins/*,所有文件打包部署到生产对应目录
# 压缩
tar zcvf jenkins.tar /data_file/data_path/jkens_bbc/jenkins_rel_bak_20220418/jenkins
#解压
cd /data
tar zcvf jenkins.tar

  • 启动新版镜像,即可。

遇到问题

中文问题,下载相关插件即可

参考:https://www.csdn.net/tags/MtTaIgwsOTkwNTgtYmxvZwO0O0OO0O0O.html#_Localization_Chinese_Simplified_10
https://blog.csdn.net/qq_58397358/article/details/124136307

docker.withRegistry报错 $ docker login -u admin -p ******** http://harbor.cn Cannot connect to the Docker daemon. Is the docker daemon running on this host?

  • 新版的 plugins/docker*,相关文件无法自身 docker login -u -p harbor.cn成功。需要特殊处理,让容器也有docker能力。不然登录不上,可以参考:https://blog.csdn.net/liumiaocn/article/details/93749435

  • 但是 jenkins.tar是更新后的(20220422日,最新版的),有问题,docker login不友好,不能用自身能力(旧版能力:Wrote authentication to /root/.dockercfg),此时做法是用 旧的 plugins/docker*替换新的 相关文件,这样就能继续使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ernest ZZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值