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.
  impact: |
    Unauthenticated attackers can leverage file inclusion via backup-heart.php to achieve arbitrary code execution, potentially compromising the entire WordPress site and server.
  remediation: |
    Upgrade Backup Migration plugin to version 1.3.8 or later.
  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.93531
    epss-percentile: 0.99834
    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,vkev,vuln
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: 4b0a00483046022100f926e81b2b44a792b2d9c28e2ed786ae8ac2c0bf5fbeab4974a5279ef7c68efd022100a3670b5e898cc6c1a6484c35010fba24c82d3e38a0b5975fe59bfa01c52ec839:922c64590222798bb761d5b6d8e72950