[ 首页 ] [ 渗透测试 ] [ 黑客接单 ] [ 黑客技术 ] [ 黑客论坛 ] [ 黑客松 ]



标题 : Cacti命令注入漏洞
日期 : 2023-06-21

咨询编号:H3C-SA-202303005

漏洞:CVE-2022-46169

首次发表:2023-06-21

最近更新时间:2023-06-21

CVSS 分数:9.8

漏洞风险:高危

注入漏洞

一、总结

Cacti 是一个开源平台,为用户提供强大且可扩展的操作监控和故障管理框架。在受影响的版本中,如果为任何受监控设备选择了特定数据源,则命令注入漏洞允许未经身份验证的用户在运行 Cacti 的服务器上执行任意代码。该漏洞位于“remote_agent.php”文件中。无需身份验证即可访问此文件。此函数通过 get_client_addr 获取客户端的 IP 地址,并通过 gethostbyaddr 将此 IP 地址解析为相应的主机名。之后,验证“poller”表中是否存在条目,其中主机名对应于解析的主机名。如果找到这样的条目,该函数将返回“true”并且客户端被授权。由于“get_client_addr”函数的实现,可以绕过此授权。该函数在文件“lib/functions.php”中定义,并检查多个“$_SERVER”变量以确定客户端的 IP 地址。以“HTTP_”开头的变量可以被攻击者任意设置。由于在 `poller` 表中有一个默认条目,其中包含运行 Cacti 的服务器的主机名,攻击者可以绕过身份验证,例如通过提供标头 `Forwarded-For:`。这样函数 get_client_addr 返回运行 Cacti 的服务器的 IP 地址。以下对“gethostbyaddr”的调用会将这个 IP 地址解析为服务器的主机名,由于默认条目,该服务器将通过“poller”主机名检查。绕过 `remote_agent.php` 文件的授权后,攻击者可以触发不同的动作。其中一项操作称为“polldata”。被调用的函数 `poll_for_data` 检索一些请求参数并从数据库中加载相应的 `poller_item` 条目。如果 `poller_item` 的 `action` 等于 `POLLER_ACTION_SCRIPT_PHP`,则函数 `proc_open` 用于执行 PHP 脚本。攻击者控制的参数“$poller_id”通过函数“get_nfilter_request_var”检索,该函数允许任意字符串。该变量随后被插入到传递给“proc_open”的字符串中,这会导致命令注入漏洞。例如,通过提供“poller_id=;id”,执行“id”命令。为了到达存在漏洞的调用,攻击者必须提供“host_id”和“local_data_id”,其中相应“poller_item”的“action”设置为“POLLER_ACTION_SCRIPT_PHP”。这两个 id(“host_id”和“local_data_id”)很容易被暴力破解。唯一的要求是存在具有“POLLER_ACTION_SCRIPT_PHP”操作的“poller_item”。这在生产实例上很可能发生,因为此操作是由一些预定义模板添加的,例如“设备 – 正常运行时间”或“设备 – 轮询时间”。如果配置了“action”类型“POLLER_ACTION_SCRIPT_PHP”(“2”)的“poller_item”,则此命令注入漏洞允许未经身份验证的用户执行任意命令。应通过不允许攻击者使“get_client_addr”(文件“lib/functions.php”)返回任意 IP 地址来防止授权绕过。这可以通过不遵守 `HTTP_…` `$_SERVER` 变量来完成。如果出于兼容性原因应保留这些内容,则至少应防止伪造运行 Cacti 的服务器的 IP 地址。此漏洞已在 1.2.x 和 1.3.x 版本分支中得到解决,其中“1.2.23”是包含该补丁的第一个版本。应通过不允许攻击者使“get_client_addr”(文件“lib/functions.php”)返回任意 IP 地址来防止授权绕过。这可以通过不遵守 `HTTP_…` `$_SERVER` 变量来完成。如果出于兼容性原因应保留这些内容,则至少应防止伪造运行 Cacti 的服务器的 IP 地址。此漏洞已在 1.2.x 和 1.3.x 版本分支中得到解决,其中“1.2.23”是包含该补丁的第一个版本。应通过不允许攻击者使“get_client_addr”(文件“lib/functions.php”)返回任意 IP 地址来防止授权绕过。这可以通过不遵守 `HTTP_…` `$_SERVER` 变量来完成。如果出于兼容性原因应保留这些,至少应防止伪造运行 Cacti 的服务器的 IP 地址。此漏洞已在 1.2.x 和 1.3.x 版本分支中得到解决,“1.2.23”是第一个包含该补丁的版本。

2、受影响的产品

产品名称受影响版本旋转的产品和版本
没有任何

3、解决方法

没有任何

4、来源

NVD 发布的公共咨询

5、修订历史

版本描述部分地位日期
V1.0初始发行最初的2023-06-21

6、法律免责声明

LVBUG倡导尽一切努力维护产品用户的最终利益,遵守安全事件负责任披露的原则,按照安全问题处理机制处理产品安全问题。有关LVBUG安全应急响应服务和LVBUG产品漏洞的信息,请访问https://www.lvbug.com/