ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Nexus 升级失败后恢复数据

2022-04-18 23:00:27  阅读:202  来源: 互联网

标签:repository 漏洞 Nexus jar 仓库 升级 nexus 失败


      背景:Nexus 被安全部门扫到漏洞 CVE-2020-10199,需要升级解决。由于网上资料较少,升级过程中出现数据紊乱的问题,后来经过努力,终于解决了。

 

一、漏洞概要

  2020年03月31 日,Sonatype 官方发布安全公告,声明修复了存在于 Nexus Repository Manager 3 中的远程代码执行漏洞 CVE-2020-10199。

  Sonatype Nexus 是一个 Maven 的仓库管理系统,它提供了强大的仓库管理、构件搜索等功能,并且可以用来搭建 Maven 仓库私服,在代理远程仓库的同时维护本地仓库,以节省带宽和时间。

  在 Nexus Repository Manager OSS/Pro 3.21.1 及之前的版本中,由于某处功能安全处理不当,导致经过授权认证的攻击者,可以在远程通过构造恶意的 HTTP 请求,在服务端执行任意恶意代码,获取系统权限。 

  此漏洞的利用需要攻击者具备任意类型的账号权限。

 

二、漏洞影响

【危险等级】

  高危

【影响版本】  

  Sonatype Nexus Repository Manager OSS/Pro 3.x <= 3.21.1

 

三、漏洞修复

   注:修复漏洞前请将资料备份,并进行充分测试。笔者认为,Nexus 的数据存储和常规的应用不太一样,sonatype-work/nexus3/ 目录里面的 db、keystone 和 blobs 子目录非常重要,可以定期备份。

 

      目前,官方已发布新版本修复了该漏洞,请受影响的用户升级到安全版本。

 

   下载地址:https://help.sonatype.com/repomanager3/download/ 

      官方升级指引:https://help.sonatype.com/repomanager3/installation-and-upgrades/upgrading-a-standalone-instance

 

四、升级失败后恢复数据

      笔者在升级过程中,由于失误没有备份 sonatype-work 目录就进行升级,直接解压下载的安装包,覆盖了 sonatype-work ,导致原有的 nexus 数据库元数据紊乱,nexus 系统整个挂了。后面经过几天的努力,也没能恢复 nexus,虚拟机也没有购买备份服务,服务也没有配置备份,人都差点整抑郁了。


      以后操作一定小心小心再小心,不要犯经验注意错误。

 

      后来经过思考,发现 maven 本地仓库 repository 里面有大部分编译所需要的 jar,只要将仓库 repository 里面的上传到 nexus 系统,从一定程度上恢复 nexus 的数据。

 

      方法如下:

      1、切到仓库 repository 里面

      2、准备上传脚本 trans_jar.sh,赋予执行权限

#!/bin/bash

# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
while getopts ":r:u:p:" opt; do case $opt in r) REPO_URL="$OPTARG" ;; u) USERNAME="$OPTARG" ;; p) PASSWORD="$OPTARG" ;; esac done find . -type f -not -path './trans_jar\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

  

      3、在仓库 repository 里面执行脚本

nohup bash trans_jar.sh -u admin -p 'PASSWORD' -r http://10.10.10.100:8081/repository/local-hosted-release

      注意:http://10.10.10.100:8081/repository/local-hosted-release  jar仓库要提前建好

 

      4、登录 nexus 查看

标签:repository,漏洞,Nexus,jar,仓库,升级,nexus,失败
来源: https://www.cnblogs.com/yanfeng-hb/p/16163285.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有