Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2022-46169 — CVE-2022-46169용 익스플로잇 | Kitploit
도구/GitHubGitHub/0xn7y/cve-2022-46169
Authentication & AuthorizationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and Control
GitHub0xn7y/cve-2022-46169

CVE-2022-46169

CVE-2022-46169용 익스플로잇

저장소 보기
172년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2022-46169

CVE-2022-46169에 대한 익스플로잇 (Cacti 1.2.3 이전 버전 대상)

여기서 remote_client_authorized는 폴러(poller) 테이블에서 클라이언트의 호스트 이름을 확인합니다.

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를 사용하여 해당 호스트 이름을 확인하고, 폴러 테이블에 이 호스트 이름과 일치하는 항목이 있는지 확인하여 클라이언트를 인가합니다.

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

따라서 요청 헤더를 수정하면 인증을 우회할 수 있습니다.

그리고 여기서는 사용자 입력을 소독하지 않고 외부 명령어 실행에 사용합니다.

// ... 폴러 항목을 데이터베이스에서 가져옴 ...

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에 전달하기 전에 검증해야 합니다.

도구 다운로드