CVE-2018-25221EChat Server 3.1版本中的chat.ghp端点存在严重的缓冲区溢出漏洞。该漏洞源于程序未能正确处理用户提交的username参数。远程攻击者无需经过身份验证,即可通过发送包含恶意构造的超长用户名的GET请求触发溢出。成功利用此漏洞可导致应用程序崩溃,或在服务器上下文中执行任意代码,进而完全控制系统。
该漏洞的根源在于EChat Server处理HTTP GET请求时,直接将username参数的值复制到栈上的缓冲区,而未对数据长度进行校验。由于该缓冲区大小有限,传入超长字符串会覆盖栈上的返回地址及其他关键数据。攻击者通过精心设计payload,可以在溢出数据中填充ROP(面向返回编程)链和Shellcode。当函数返回时,CPU指令指针被重定向到攻击者控制的内存区域,从而执行Shellcode。由于利用过程无需用户交互且绕过了身份验证,攻击者可以在内网或公网中轻易扫描并利用此漏洞获取服务器最高权限,造成数据泄露或服务中断。