Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2022-46169 — Exploit para CVE-2022-46169 | Kitploit
Herramientas/GitHubGitHub/0xn7y/cve-2022-46169
Autenticación y AutorizaciónAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónComando y Control
GitHub0xn7y/cve-2022-46169

CVE-2022-46169

Exploit para CVE-2022-46169

Ver Repositorio
12hace 2 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2022-46169

Exploit para CVE-2022-46169 Cacti versiones anteriores a 1.2.3

Aquí remote_client_authorized verifica el nombre del host del cliente en la tabla poller para la entrada

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;
      // ...

La función get_client_addr se utiliza para obtener la dirección del cliente, la cual puede ser modificada por el atacante al determinar la dirección IP. Usa la IP para resolverla al nombre de host correspondiente y verifica si la tabla poller contiene una entrada con este nombre de host autorizando al cliente.

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;
}

por lo que modificar la cabecera de la solicitud nos permite evitar la autenticación.

Y aquí se utiliza entrada de usuario sin sanitizar para ejecutar un comando externo

root@kitploit:~
// ... recuperar items del poller de la base de datos ...

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

Solución

omisión de autenticación

configurar qué cabeceras HTTP deben usarse al determinar la IP utilizada de un cliente

recomendación

dado que el valor de poller_id debe ser un entero, validarlo antes de pasarlo a proc_open

Descargar herramienta