id: CVE-2023-6553 info: name: Worpress Backup Migration <= 1.3.7 - Unauthenticated Remote Code Execution author: FLX severity: critical description: | The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1.3.7 via the /includes/backup-heart.php file. This is due to an attacker being able to control the values passed to an include, and subsequently leverage that to achieve remote code execution. This makes it possible for unauthenticated threat actors to easily execute code on the server. reference: - https://www.wordfence.com/blog/2023/12/critical-unauthenticated-remote-code-execution-found-in-backup-migration-plugin/ - https://github.com/Chocapikk/CVE-2023-6553 - http://packetstormsecurity.com/files/176638/WordPress-Backup-Migration-1.3.7-Remote-Command-Execution.html - https://www.synacktiv.com/en/publications/php-filters-chain-what-is-it-and-how-to-use-it - https://www.wordfence.com/threat-intel/vulnerabilities/id/3511ba64-56a3-43d7-8ab8-c6e40e3b686e?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-2023-6553 epss-score: 0.91621 epss-percentile: 0.98837 cpe: cpe:2.3:a:backupbliss:backup_migration:*:*:*:*:*:wordpress:*:* metadata: max-request: 2 vendor: backupbliss product: backup_migration framework: wordpress shodan-query: http.html:/wp-content/plugins/backup-backup/ fofa-query: body=/wp-content/plugins/backup-backup/ publicwww-query: /wp-content/plugins/backup-backup/ google-query: inurl:"/wp-content/plugins/backup-backup/" tags: packetstorm,cve,cve2023,wp-plugin,rce,unauth,wordpress,wp,backupbliss flow: http(1) && http(2) http: - method: GET path: - "{{BaseURL}}/wp-content/plugins/backup-backup/readme.txt" matchers: - type: dsl internal: true dsl: - 'status_code == 200' - 'contains(body, "Backup Migration")' condition: and - method: POST path: - "{{BaseURL}}/wp-content/plugins/backup-backup/includes/backup-heart.php" headers: Content-Dir: "{{rand_text_alpha(10)}}" matchers: - type: dsl dsl: - 'len(body) == 0' - 'status_code == 200' - '!contains(body, "Incorrect parameters")' condition: and # digest: 490a00463044022046570b0b4e58d3527a4c3be37e4e041ff3d731e2af4b42eb4066bd36bad48675022031023b285a24e0cc53f113f29c661a3ae15229879be46347a6cf87b0ee2eecf2:922c64590222798bb761d5b6d8e72950