PR 本記事には広告(Amazonアソシエイト・もしもアフィリエイト・A8.net等)が含まれます。掲載情報の正確性には努めていますが、商品の詳細は必ずリンク先で最新情報をご確認ください。
CTF・セキュリティ学習

【Linux権限昇格の基本編】侵入後にrootへ届くまでの思考|CTF思考フレームワーク P01

かも次郎とアンペンが「Linux権限昇格の基本」を解説するマスコットイラスト
安全に生きたい編集部

広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・キャンペーン内容はリンク先で最新情報を確認してください。

こんにちは、アンペンです!ここから新ルート権限昇格(Privesc)編。その第一歩P01はLinux権限昇格の基本です。侵入後に『一般ユーザーからroot』へ上がる発想——その核心は派手な攻撃ではなく、徹底した観察(列挙)にあります。守る側の視点もセットで学びましょう。

『侵入できたら、もう勝ちでは?』——そう思いますよね。でも実際の攻撃では、最初に入れるのはたいてい“いちばん弱い一般ユーザー”の権限だけ。これでは大事なファイルも読めず、設定もいじれません。本当に好き勝手できるのは、管理者=rootになってから。つまり侵入は“ゴール”ではなく“スタート地点”なんです。なお、ここからは侵入後の手法なので、試すのは必ず自分のVMかCTFで。他人のサーバで動かせば、それは犯罪です。

侵入できたら、もうゴールじゃないの?なんでさらにrootを狙うの?

最初に入れるのはたいてい権限の弱い一般ユーザーなんだ。ファイルを読んだり設定を変えたりするにはroot(管理者)が要る。だから『より強い権限』へ上がる=権限昇格が必要になる。鍵は列挙(enumeration)——システムの隅々を観察して、設定の隙間を見つけることだよ。

まず結論

権限昇格(Privilege Escalation)とは「侵入後に、より高い権限(Linuxならroot)を得ること」。攻撃の主役は破壊ではなく列挙(enumeration)——sudo -l・SUIDバイナリ・cron・平文認証情報・カーネル版数をくまなく観察し、設定の隙間を探す。典型ベクターはsudo誤設定・不要なSUID・書込み可能なcronスクリプト・置き忘れた認証情報・古いカーネル。守る側は『最小権限+sudoers/SUIDの棚卸し+cron権限の厳格化+平文認証情報を置かない+パッチ適用』。権限昇格対策の9割は「余計な権限と隙間を残さない」ことです。

この記事で分かること

  • 権限昇格とは何か、なぜ列挙が9割なのか
  • Linux権限昇格の典型ベクター5つ
  • sudo -l・SUID・cron・認証情報・カーネルの調べ方
  • 自動列挙ツール(LinPEAS)とGTFOBinsの役割
  • 守る側の「隙間を残さない」チェックリスト
難易度:中級 所要時間:12分 体験:自分のVM・CTFのみ おすすめ:偵察ルートの後

📖 はじめてのWebセキュリティP01|Linux権限昇格の基本
侵入後にrootへ上がる発想と、その隙間を塞ぐ守りを学ぶ。 シリーズ一覧を見る →

⚠️ 大事なお約束
権限昇格は侵入後の手法です。他人のサーバで試すのは不正アクセス禁止法に直結します。本記事の手順は自分で構築したVM・CTF・書面で許可された検証環境に限定してください。本記事の目的は防御側の理解です。「できる」と「やってよい」は全く別です。

Linux権限昇格:典型ベクター5つ

  • ①sudoの誤設定:sudo -lで「パスワードなしで実行できるコマンド」を確認。NOPASSWDやワイルドカードが昇格経路に
  • ②不要なSUIDバイナリ:所有者(root)権限で動く実行ファイル。GTFOBins掲載のバイナリにSUIDが付くとroot奪取の踏み台
  • ③書込み可能なcron:rootで定期実行されるスクリプトが書込み可能だと、中身を差し替えてroot実行させられる
  • ④置き忘れた認証情報:設定ファイル・.bash_history.envに平文のパスワードや鍵が残っていることがある
  • ⑤古いカーネル:uname -aで版数を確認。既知のカーネルエクスプロイトが刺さる場合がある

5つを一言でまとめると、どれも『管理者が残した“うっかり”』を拾う話です。sudoの設定ミス、消し忘れたSUID、誰でも書き換えられるcron、置きっぱなしのパスワード、更新し忘れたカーネル——どれも高度な攻撃ではなく、“片付け忘れ”なんです。だから攻撃者は破壊ではなく、ひたすら観察して、その片付け忘れを探す。これが権限昇格の正体です。

sudo誤設定・SUID・cron・平文認証情報・古いカーネルの5ベクターを階段で示す権限昇格の図
図1:一般ユーザーからrootへ上がる5つの典型ベクター

ここで覚える用語:権限昇格と列挙(Enumeration)
意味:権限昇格は低い権限から高い権限(root)へ上がること。列挙は、システムの設定・ファイル・プロセスをくまなく調べて昇格の糸口を探す作業です。
例:sudo -lでパスワードなし実行可能コマンドを確認、find / -perm -4000 -type f 2>/dev/nullでSUIDバイナリを一覧化する。
使いどころ:権限昇格の9割は列挙です。だから守る側の発想は逆——「列挙されても何も出てこない状態」を作る。sudoers最小化とSUID棚卸しがその核心です。

なぜ「観察」が主役なのか

🏢 たとえるなら、社員証で入ったオフィスを歩き回る

権限昇格は、社員証で正規に入ったオフィス(=初期侵入済み)の中を歩き回る作業に似ています。あなたは平社員の権限しかありませんが、館内を観察すると——机に貼られた管理者パスワードの付箋(=平文認証情報)開けっ放しの鍵付き棚(=書込み可能なcron)誰でも使える管理者用の道具(=SUIDバイナリ)が見つかる。これらを拾い集めれば、立入禁止の最上階(=root)へ上がれてしまう。派手な破壊ではなく、観察と発見が主役なのです。だから守る側は「歩き回られても何も拾えない」よう、付箋を剥がし、棚に鍵をかけ、道具を片付けます。

一般ユーザーがオフィスを歩き付箋パスワード・鍵なし棚・共有道具を拾いrootへ上がるたとえイラスト
図2:観察して隙間を拾えば最上階(root)へ

ここまでで『権限昇格は観察が9割』と分かりました。では、観察して見つかる“うっかり”の中で、とくに頻出のものを一つ、掘り下げてみましょう。それが次に出てくる『SUID』です。名前は地味ですが、仕組みを知ると“なぜこれが踏み台になるのか”がスッと腑に落ちますよ。

SUIDビット:意図せぬroot実行の入口

5つのベクターの中でもとくに頻出なのがSUIDバイナリです。次回P02で深掘りしますが、ここで基礎だけ押さえておきましょう。SUIDの仕組みを理解すると、なぜ「不要なSUIDの棚卸し」が守りの定番になるのかが見えてきます。

SUIDを一言でいうと、『実行した人ではなく、ファイルの持ち主の権限で動く』仕組みです。たとえばパスワード変更コマンドは、一般ユーザーが実行しても“root権限”で動く必要があるので、正当にSUIDが付いています。問題は、本来そんな権限が要らないコマンドにまでSUIDが付いてしまったとき。それは“誰でも使える管理者の道具”が、その辺に転がっているのと同じなんです。攻撃者はその道具を使って、root権限でシェルを起動してしまう、というわけです。

ここで覚える用語:SUIDビットとroot実行
意味:SUID(Set User ID)ビットが立った実行ファイルは、実行した人ではなく所有者の権限で動きます。所有者がrootなら、一般ユーザーが実行してもroot権限で処理が走ります。
例:/usr/bin/passwdは正規のroot所有SUID(パスワード変更にroot権限が要るため)。一方、本来不要なバイナリにSUIDが付くと、GTFOBins掲載の悪用法でシェルをroot権限で起動できてしまう。
使いどころ:守る側はfind / -perm -4000で定期棚卸しし、不要なSUIDを削除します(詳細はP02)。

CTFでやってみよう:自分のVMで列挙を体感

やってみよう / 自分のVM・CTFのみ

「列挙だけで昇格の糸口がどれだけ出るか」を手を動かして確かめる

対象は必ず自分で構築したVMかCTFです。攻撃者がrootを狙う順で、自分の環境にどんな隙間があるかを点検します。各ステップに「なぜやるか」を添えました。

  1. id/whoami/hostnameで現在の権限を把握 → なぜ:出発点を確認するため
  2. sudo -lでパスワードなし実行可能コマンドを確認 → なぜ:最速の昇格経路を探すため
  3. find / -perm -4000 -type f 2>/dev/nullでSUID一覧 → なぜ:踏み台候補を洗うため
  4. crontab -l/etc/cron*で定期実行を確認 → なぜ:書込み可スクリプトのroot実行を探すため
  5. 設定ファイル・history.envの平文認証情報を探す → なぜ:鍵の置き忘れを見つけるため
  6. uname -aでカーネル版数を確認 → なぜ:既知エクスプロイトの該否を見るため
  7. LinPEAS等の自動列挙を実行し結果を読む → なぜ:手動の見落としを防ぐため
  8. 見つけた経路をGTFOBinsで照合 → なぜ:既知の悪用法と対策を理解するため
対象は必ず自分のVM・CTFのみ。他人のサーバでの列挙・昇格は不正アクセスです。「できる」と「やってよい」は別です。

では守り方。ここまで読めば、もう発想は見えていますよね——攻撃が“観察で隙間を拾う”なら、守りは“拾えるものを置かない”。付箋(平文パスワード)を剥がし、棚(cron)に鍵をかけ、余計な道具(SUID)を片付ける。次のチェックリストは、その“片付け”を漏れなくやるための一覧です。

守る側:隙間を残さない

Linux権限昇格対策チェックリスト
  • 最小権限の原則:sudo権限は必要な人・コマンドだけに限定する
  • sudoersを定期監査:NOPASSWDやワイルドカード(ALL)の乱用を点検する
  • SUID/SGIDを棚卸し:find / -perm -4000で不要なものを削除する
  • cronスクリプトの権限を厳格化:rootで動くスクリプトの書込み権限を絞る
  • 平文認証情報を置かない:Secrets管理を使い、historyや設定ファイルを掃除する
  • カーネル・パッケージを最新に:既知のカーネルエクスプロイトを塞ぐ
  • capabilitiesを最小化:必要以上の権限を付与しない
  • ログ監査:sudo実行やSUID実行を記録・監視する
最小権限・sudoers/SUID棚卸し・cron厳格化・平文認証情報排除・パッチ適用の守り側チェックリスト図
図3:隙間を残さない守り側チェックリスト

攻撃って観察なんだね。守る側は『拾えるものを置かない』——すごく腑に落ちたよ。

その通り!列挙されても何も出てこない状態が理想だよ。次はP02、SUID・sudoers深掘り編。今回さらっと触れたSUIDとsudoの悪用を、GTFOBinsを使って具体的に、そして守り方まで掘り下げるよ。

まとめ:権限昇格は『観察』、守りは『隙間を消す』

今回のポイント
  • 権限昇格は侵入後にrootを得ること。主役は列挙
  • 典型ベクターはsudo誤設定・SUID・cron・平文認証情報・古いカーネル
  • sudo -lfind -perm -4000が最初の一手
  • 自動列挙はLinPEAS、悪用法照合はGTFOBins
  • 守りは最小権限・棚卸し・cron厳格化・認証情報を置かない・パッチ

今日の持ち帰りは『権限昇格は派手な技ではなく、地道な観察』。裏返せば、守る側がやることも地道で——“余計な権限と片付け忘れを残さない”、これに尽きます。攻撃者がいくら隅々を観察しても、何も拾えなければ昇格できない。『列挙されても、何も出てこない』状態を目指すのが、いちばんの防御です。

次はP02、SUID・sudoers深掘り編。今回基礎を押さえたSUIDとsudoの悪用を、GTFOBinsで具体的に、守り方まで掘り下げます。

次に読みたい記事

参考資料

PR / 広告 CTFの練習は「壊しても作り直せる自分専用の環境」があると一気に捗ります。VPSなら数百円/月からLinux環境を持てて、ローカルPCを汚さずに検証できます(攻撃は必ず自分の環境・許可された環境だけで)。

▶ ConoHa VPS(時間課金あり・すぐ作ってすぐ消せる)を見る

次に読みたい記事

未経験からセキュリティ・インフラエンジニアを目指すロードマップ

CTFの先のキャリア。インフラ基礎固めから就職までの4ステップ。

記事URLをコピーしました