CVE-2016-20045HNB Organizer 1.9.18-10版本中存在严重的本地缓冲区溢出漏洞。该漏洞是由于程序在处理命令行参数时缺乏足够的边界检查引起的。具体而言,当用户向`-rc`参数提供超过108字节的超长字符串时,程序无法正确处理输入长度,导致缓冲区溢出。本地攻击者可利用此漏洞,通过精心构造包含恶意Shellcode和特定返回地址的输入数据,覆盖栈上的返回地址,从而劫持程序的执行流,最终以当前用户权限在系统上执行任意代码。
该漏洞属于典型的基于栈的缓冲区溢出。在HNB Organizer解析`-rc`命令行参数时,程序使用了不安全的内存拷贝操作(如`strcpy`),未对输入数据的长度进行验证。由于目标缓冲区大小有限(约为108字节),一旦输入数据超过此限制,多余的数据将溢出缓冲区并覆盖相邻的栈帧数据,包括保存的基指针(EBP)和返回地址(EIP)。攻击者通过控制输入字符串的结构,首先填充垃圾数据以达到偏移量,然后植入恶意Shellcode,最后将返回地址覆盖为指向Shellcode的地址。当函数尝试返回时,CPU会跳转到攻击者指定的地址执行Shellcode,从而实现任意代码执行。由于攻击向量为本地(AV:L),攻击者需要能够本地执行或诱骗用户执行特定命令。