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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-27630 — CVE-2024–27630 참조 | Kitploit
도구/GitHubGitHub/ally-petitt/cve-2024-27630
Vulnerability AnalysisInformation GatheringWeb SecurityPenetration TestingPapers & ResearchLearning & Education
GitHubally-petitt/cve-2024-27630

CVE-2024-27630

CVE-2024–27630 참조

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024–27630 Vulnerability Details

개요

Savane v3.12 및 이전 버전에서는 /bugs/index.php에서 파일을 삭제할 때 file_id 매개변수에 대한 검증이 없어 안전하지 않은 직접 객체 참조(IDOR) 취약점이 발생합니다. 이 취약점으로 인해 버그 트래커가 있는 그룹의 인증된 관리자가 임의의 버그 트래커 첨부 파일을 임의로 삭제할 수 있으며, 그 결과 해당 파일의 가용성이 상실됩니다. 파일 ID는 새 업로드마다 증가하므로 file_id를 이용해 서버의 모든 파일 첨부물을 반복적으로 삭제하는 스크립트를 작성할 수 있습니다.

CWE 분류: CWE-639: 사용자 제어 키를 통한 인증 우회

보고자: Ally Petitt

영향받는 제품: Savane

영향받는 버전: 3.12 및 이전 버전

기술적 세부 사항

버그 트래커에서 파일 첨부물을 삭제하는 함수는 아래 코드 블록에 정의된 trackers_data_delete_file()입니다.

frontend/php/include/trackers/data.php:2417

root@kitploit:~
function trackers_data_delete_file ($group_id, $item_id, $file_id)
{
  global $sys_trackers_attachments_dir;
  # Make sure the attachment belongs to the group.
  $res = db_execute ("
    SELECT bug_id from " . ARTIFACT . " WHERE bug_id = ? AND group_id = ?",
    [$item_id, $group_id]
  );
  if (db_numrows ($res) <= 0)
    {
      # TRANSLATORS: the argument is item id (a number).
      $msg = sprintf (
        _("Item #%s doesn't belong to project"), $item_id
      );
      fb ($msg, 1);
      return;
    }

  $result = false;
  # Delete the attachment.
  if (unlink ("$sys_trackers_attachments_dir/$file_id")) 
    $result = db_execute ("
      DELETE FROM trackers_file WHERE item_id = ?  AND file_id = ?",
      [$item_id, $file_id]
    );
도구 다운로드

이 함수는 item_id에 지정된 버그 ID가 공격자가 속한 그룹(즉, $group_id)에 속해 있는지 확인하는 SQL 쿼리로 시작합니다. 함수는 file_id도 해당 그룹에 속하는지 확인하지 못하므로, item_id가 공격자 그룹의 유효한 버그에 해당하는 한 공격자는 file_id를 수정하여 업로드 디렉터리 /var/lib/savane/trackers_attachments의 모든 파일을 가리키게 할 수 있습니다.

또한 이 함수는 버그 트래커 관리자만 호출할 수 있습니다.

frontend/php/bugs/index.php:586

root@kitploit:~
  case 'delete_file':
    # Remove an attached file.
    if ($is_trackeradmin)
      {
        trackers_data_delete_file($group_id, $item_id, $item_file_id);

         # Unset previous settings and return to the item.
         $depends_search = $reassign_change_project_search = $add_cc
           = $input_file = $changed = $vfl = $details = null;
         include '../include/trackers_run/mod.php';
      }
    else
      exit_permission_denied ();
    break;

검증 단계

다음 단계는 권한이 없는 파일 하나를 삭제하는 것을 보여줍니다. 단, 공격자는 파일 ID가 예측 가능하므로 ID를 이용해 모든 파일 삭제를 자동화할 수 있다는 점에 유의하세요.

  1. 버그 트래커가 있는 그룹의 관리자 계정(공격자 계정)을 보유합니다.
  2. 별도의 사용자 계정(피해자)으로 공격자가 관리자가 아닌 그룹의 버그 보고서에 파일 첨부물을 업로드합니다. 이후 업로드 디렉터리의 예시는 다음과 같으며, 파일 40231은 피해자가 업로드한 것입니다:
root@kitploit:~
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230  40231
  1. 공격자가 관리자인 그룹의 홈페이지를 방문합니다. 그런 다음 Bugs > Browse를 방문하여 표의 가장 왼쪽 열에 있는 유효한 Item ID를 확인합니다. 이 ID는 다음 단계에서 사용됩니다.

  2. 공격자는 /bugs/index.php?func=delete_file&item_id=<ATTACKER_ITEM_ID>&item_file_id=<FILE_ID_TO_DELETE> 경로로 GET 요청을 보냅니다.

    제 경우에는 http://172.17.0.2:7890/bugs/index.php?func=delete_file&item_id=50697&item_file_id=40231 과 같은 형태입니다.

  3. 피해자의 파일(공격자에게 권한이 없는 그룹의 파일)이 삭제되었는지 확인합니다. 예를 들면 다음과 같습니다:

root@kitploit:~
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230

완화 조치

Savane 3.13 이상 버전으로 업그레이드하세요. 패치는 여기에서 확인할 수 있습니다.