手把手教你手动更新 nexus 私服索引

1 背景

strut2 又爆出漏洞了(不得不吐槽 strut2 的漏洞可真多啊,不过也说明还有很多系统使用它):

漏洞影响范围: 


Struts 2.3.5 – Struts 2.3.31
Struts 2.5 – Struts 2.5.10

解决办法:Upgrade to Struts 2.3.32 or Struts 2.5.10.1

无独有偶,spring 框架也出现了漏洞:

1、CVE-2018-1270 漏洞: Spring Framework 的 5.* 版本 、4.3.* 版本以及不再支持的旧版本,通过 spring-messaging 和 spring-websocket 模块提供的基于 WebSocket 的 STOMP ,攻击者可以通过建立 WebSocket 连接并发送一条消息造成远程代码执行,从而实现远程代码执行攻击 。
2、CVE-2018-1271 漏洞: Spring Framework 的 5.* 版本 、4.3.* 版本以及不再支持的旧版本, Spring MVC 允许应用程序对其配置提供静态资源,在 Windows 系统上实现该功能时,攻击者通过请求构造的特定资源 URL ,可能导致目录遍历的效果产生 。
3、CVE-2018-1272 漏洞: Spring Framework 的 5.* 版本 、4.3.* 版本以及不再支持的旧版本,当 Spring MVC 或 Spring WebFlux 服务器接受把客户端请求再转向另一台服务器的场景下,攻击者通过构造和污染 Multipart 类型请求,可能对另一台服务器实现权限提升攻击 。

看了一下 nexus 中的索引还没有自动更新(可能的原因估计是公司的网络太烂了 -_-),所以不能直接替换新包,只好手工更新。

2 实践

2.1 下载公共库索引

在 maven 公共库中,下载最新的索引文件(网页拉到最下面就可以看到):

  • nexus-maven-repository-index.gz (300M 以上,要等一等咯)
  • nexus-maven-repository-index.properties
image.png

下载后的 *.gz 与 *.properties 最好把相应的 *.sha1 文件也一并下载下面,然后通过 Windows 系统的 certutil 工具进行验证:

certutil -hashfile 文件路径

*.gz 与 *.properties 文件计算出的 SHA-1 的值如果与下载的 *.sha1 文件内容一致,就说明文件是完整的。

2.2 下载解析和发布索引的工具(indexer-cli)

在 maven 中心库的搜索页的输入框中,输入:

g:"org.apache.maven.indexer" AND a:"indexer-cli"

2.3 更新索引

1 把刚刚下载的索引和工具放在同一个文件夹下:

2 进入命令行,输入以下命令,对索引进行解析:

java -jar indexer-cli-6.0.0.jar -u nexus-maven-repository-index.gz -d indexer

因为索引文件很大,所以需要等待一段时间,解压后大概 1.5G,在同一个目录会生成 indexer 文件夹。

**注意:如果 Sonatype Nexus 版本为 2.x,请使用 indexer-cli-5.x.x.jar 包。否则, indexer-cli-6.0.0.jar 生成的索引文件无法识别。 **

3 手动更新索引

[1] 关闭 nexus 服务。
[2] 清空 {nexus-xxx}...\sonatype-work\indexer\central-ctx\ 下的所有文件。
[3] 拷贝刚生成的 indexer 文件夹下的所有文件到上面的目录。
[4] 启动 nexus 服务。

3 观察结果

打开 nexus 服务页,搜索 spring-context,哈哈,最新的 spring 库已经更新成功啦,是不是很酷 O(∩_∩)O~

手把手教你手动更新 nexus 私服索引_第1张图片

4 后记

有时候因为补丁包太新了,所以在 Maven 公共库的索引中还没有最新的包,那么这种情况下,就需要到 maven 中心库的搜索页 下载最新的包,然后作为第三方库放入 nexus 中。

你可能感兴趣的:(手把手教你手动更新 nexus 私服索引)