Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2022-46169 — 针对 CVE-2022-46169 的漏洞利用 | Kitploit
工具/GitHubGitHub/0xn7y/cve-2022-46169
身份验证与授权漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制
GitHub0xn7y/cve-2022-46169

CVE-2022-46169

针对 CVE-2022-46169 的漏洞利用

查看仓库
12年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2022-46169

CVE-2022-46169 漏洞利用:Cacti 版本早于 1.2.3

此处,remote_client_authorized 函数检查 poller 表中的客户端主机名以进行授权

root@kitploit:~
function remote_client_authorized() {
   // ...
   $client_addr = get_client_addr();
   // ...
   $client_name = gethostbyaddr($client_addr);
   // ...
   $pollers = db_fetch_assoc('SELECT * FROM poller', true, $poller_db_cnn_id);
   foreach($pollers as $poller) {
      if (remote_agent_strip_domain($poller['hostname']) == $client_name) {
         return true;
      // ...

get_client_addr 函数用于获取客户端地址,攻击者可以在确定 IP 地址时修改该地址。它使用 IP 解析对应的主机名,并检查 poller 表中是否包含该主机名的条目,从而授权客户端。

root@kitploit:~
<?php
// ...
function get_client_addr($client_addr = false) {
   $http_addr_headers = array(
       // ...
       'HTTP_X_FORWARDED',
       'HTTP_X_FORWARDED_FOR',
       'HTTP_X_CLUSTER_CLIENT_IP',
       'HTTP_FORWARDED_FOR',
       'HTTP_FORWARDED',
       'HTTP_CLIENT_IP',
       'REMOTE_ADDR',
   );

   $client_addr = false;
   foreach ($http_addr_headers as $header) {
      // ...
      $header_ips = explode(',', $_SERVER[$header]);
      foreach ($header_ips as $header_ip) {
         // ...
         $client_addr = $header_ip;
         break 2;
      }
   }
   return $client_addr;
}

因此,修改请求头允许我们绕过身份验证。

此外,这里使用了未经处理的用户输入来执行外部命令

root@kitploit:~
// ... retrieve poller items from database ...

foreach($items as $item) {
   switch ($item['action']) {
   // ...
   case POLLER_ACTION_SCRIPT_PHP: /* script (php script server) */
      // ...
      $cactiphp = proc_open(read_config_option('path_php_binary') . ' -q ' . $config['base_path'] . '/script_server.php realtime ' . $poller_id, $cactides, $pipes);

修复

身份验证绕过

配置在确定客户端 IP 时应使用哪些 HTTP 头

建议

由于 poller_id 值需要是整数,因此在传递给 proc_open 之前应验证它

下载工具