近日,亚信安全CERT监控到Cacti存在命令执行漏洞(CVE-2022-46169),漏洞细节已公开。该漏洞存在于remote_agent.php文件中,无需身份验证即可访问此文件,攻击者可通过设置网络头HTTP_变量绕过身份验证,触发polldata功能,当get_nfilter_request_var()函数检索的参数$poller_id满足特定条件时,可触发proc_open()函数,从而导致命令执行。此命令注入漏洞允许未经身份验证的用户在构造恶意请求的情况下执行任意命令。
对此,目前厂商已发布修复补丁,但暂未发布版本更新。鉴于该漏洞受影响面较大,亚信安全CERT建议使用Cacti的用户及时关注官方更新,参照官方修复方案尽快采取相关措施,做好资产自查以及预防工作,以免遭受黑客攻击。
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的开源网络流量监测图形分析工具,提供了非常强大的数据和用户管理功能。
漏洞编号和等级
CVE-2022-46169
CVSS3.1 9.8分
漏洞状态
漏洞细节 已公开
PoC 暂无
EXP 暂无
在野利用 未知
受影响版本
Cacti = 1.2.22
修复建议
临时缓解措施
1. 禁止lib/functions.php文件中的get_client_addr函数返回任意IP地址来防止授权绕过,设置不遵循HTTP_... $_SERVER变量。若无法修改,应禁止伪造运行Cacti的服务器的IP地址。
2. 对remote_agent.php文件进行修改以防止命令注入,变量$poller_id应该是一个整数,因此应该通过函数get_filter_request_var代替get_nfilter_request_var进行检索:
function poll_for_data() { // ... $poller_id = get_filter_request_var('poller_id'); // ...}3. 为了进一步加强对命令注入的防御,$poller_id参数应该在传递给proc_open之前使用escapeshellarg进行转义:
function poll_for_data() { // ... $cactiphp = proc_open(read_config_option('path_php_binary') . ' -q ' . $config['base_path'] . '/script_server.php realtime ' . escapeshellarg($poller_id), $cactides, $pipes); // ...}安全补丁修复
目前Cacti官方已发布安全补丁,建议受影响用户尽快安装修复补丁。
1.2.x版本补丁:
1.3.x版本补丁:
对于在PHP < 7.0下运行的1.2.x实例,还需要进一步更改:
页面更新:2024-03-23
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号