Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-27630 — CVE-2024–27630 参照 | Kitploit
ツール/GitHubGitHub/ally-petitt/cve-2024-27630
脆弱性分析情報収集ウェブセキュリティペネトレーションテスト論文と研究学習と教育
GitHubally-petitt/cve-2024-27630

CVE-2024-27630

CVE-2024–27630 参照

リポジトリを見る
2年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2024–27630 脆弱性の詳細

概要

Savane v3.12 およびそれ以前のバージョンでは、/bugs/index.php からファイルを削除する際の file_id パラメータに対する検証が不十分なため、安全でない直接オブジェクト参照 (IDOR) の脆弱性が発生します。これにより、バグトラッカーを持つグループの認証済み管理者が、任意のバグトラッカーのファイル添付を恣意的に削除でき、これらのファイルの可用性が損なわれる可能性があります。ファイル ID はアップロードのたびに増加するため、file_id を指定してサーバー上のすべてのファイル添付を反復的に削除するスクリプトを作成することが可能です。

CWE分類: CWE-639: Authorization Bypass Through User-Controlled Key

報告者: 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;

検証手順

以下の手順は、許可されていない1つのファイルを削除する方法を示しています。ただし、攻撃者は予測可能なIDを使用してすべてのファイルの削除を自動化できることに注意してください。

  1. バグトラッカーを持つグループの管理者アカウント(攻撃者アカウント)を持っていること。
  2. 別のユーザーアカウント(被害者)を使用して、攻撃者が管理者ではないグループのバグレポートにファイル添付をアップロードします。その後のアップロードディレクトリのサンプルは以下の通りで、被害者がファイル 40231 をアップロードしたことを示しています。
root@kitploit:~
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230  40231
  1. 攻撃者が管理者であるグループのホームページにアクセスします。次に、Bugs > Browse に移動し、テーブルの左端の列にある有効なアイテム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 以上にアップグレードしてください。パッチは こちら にあります。

ツールをダウンロード