はじめに
本稿は、低権限ユーザー karen でログインした Linux 標的(演習環境)に対する「列挙(enumeration)」手順と所見を整理したもの。目的は侵入後にシステムの役割・脆弱性・昇格の手掛かりを把握すること。実行済みコマンドと得られた重要情報、優先的に確認すべきポイント、次のアクション(権限昇格のヒント)を簡潔にまとめる。
1. 環境サマリ
- ログインユーザー:
karen(uid=1001) - ホスト名:
wade7363 - OS:Ubuntu 14.04 LTS(
/etc/issue) - カーネル:
3.13.0-24-generic(uname -a//proc/version) - Python:
2.7.6がインストール済み - 影響ありと思われるカーネル脆弱性:
CVE-2015-1328
2. 実行したコマンド(要点)
以下は典型的な列挙コマンドと用い方(演習で使用済みのものを含む)。
hostname
uname -a
cat /proc/version
cat /etc/issue
id
env
sudo -l
ps aux
ps axjf
cat /etc/passwd
cat /etc/passwd | cut -d ":" -f1
cat /etc/passwd | grep home
history
ifconfig || ip a
ip route
netstat -at
netstat -tp
netstat -s
find / -perm -u=s -type f 2>/dev/null # SUIDビット探索
find / -writable -type d 2>/dev/null # world-writable ディレクトリ
find / -name python* -o -name perl* # 開発ツール探索
find / -size +100M 2>/dev/null # 大きなファイル
find / -mtime -7 2>/dev/null # 直近更新ファイル
各コマンドに対する「狙い」は後述のチェックリスト参照。
3. 取得した主要情報(抜粋)
-
hostname→wade7363 -
uname -a→Linux wade7363 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 -
/etc/issue→Ubuntu 14.04 LTS -
/proc/version→Linux version 3.13.0-24-generic (gcc version 4.8.2 ...) - Python バージョン →
2.7.6(ほとんどの古い Ubuntu に同梱) - 既知の脆弱性(候補)→
CVE-2015-1328(演習で提示された脆弱性) -
/etc/passwdに通常ユーザーmattとkarenあり(mattが uid 1000) -
PATH/ 環境変数に実行可能なツールの情報あり(env出力参照)
4. 列挙チェックリスト(短く実用的に)
目的別に優先度順でコマンドと確認ポイントを示す。
A. システム情報(速攻で把握)
hostname
uname -a
cat /etc/issue
cat /proc/version
- カーネル / OS の脆弱性検索に直結。
B. ユーザー・権限情報
id
groups
cat /etc/passwd
sudo -l
-
sudo -lは root 権限獲得の即効薬になり得る。
C. 実行中プロセス・ポート
ps aux
netstat -tulpn # rootならPID/プロセス名も出る
ss -tulpn
- 潜在的なサービス、ローカルでの資格情報や設定ファイルの場所特定。
D. ファイルシステム・権限探索
find / -perm -u=s -type f 2>/dev/null # SUID
find / -writable -type d 2>/dev/null
find / -name "*id_rsa" -o -name "*.pem" 2>/dev/null
- SUIDバイナリや書き込み可能なディレクトリは昇格ルート。
E. 言語/ビルドツールの有無(ローカルでコードを実行可能か)
which python python2 python3 perl gcc nc netcat 2>/dev/null
- 利用可能な言語で簡易リバースシェルやビルド・コンパイルが可能か判断。
F. 履歴・設定ファイル
history
ls -la ~/.ssh
cat ~/.bash_history
- パスワードや秘密鍵、クリアテキスト情報の漏洩を確認。
5. 権限昇格に有望な探索ポイント(次のアクション)
-
SUID バイナリ探索
find / -perm -u=s -type f 2>/dev/null→ 脆弱な SUID バイナリ経由の権限取得を検討。 -
world-writable ディレクトリ/ファイル
/tmp以外の書き込み可能箇所でスクリプトや設定を書き換えられないか確認。 -
sudo 設定
sudo -lの結果で任意コマンドを root で実行できるかを調べる(/bin/lessや/usr/bin/vimが許可されている場合、エスケープでrootシェル)。 -
古いカーネル脆弱性
カーネル3.13.0-24は古い。CVE-2015-1328 のような既知脆弱性が利用可能ならカーネル昇格の検討(演習環境限定)。 -
サービスの設定ファイル / 資格情報
web サーバや DB の設定にパスワードが埋め込まれていないか(例:/var/www、/etc配下)。 -
ユーザーの SSH キー / 履歴
~/.ssh、~/.bash_history、/home/*/.bash_historyを確認。
注意:演習環境以外で脆弱性の実行やエクスプロイトを行う場合は必ず許可を得ること。
6. 緩和策(運用・構成面)
- 不要な SUID バイナリの削除または適切な権限設定。
-
sudoersの最小権限化(必要最低限のコマンドのみ許可)。 - カーネルと OS の定期的なアップデート(Ubuntu 14.04 は既にサポート終了)。
- 不要なサービスの停止・削除と、サービスごとの構成ファイルにクリアテキストの資格情報を置かない。
- ファイル監査(重要ファイルの改変監視)、ユーザーログの定期的な確認。
7. まとめ
- 列挙は「次に何を試すか」を決めるための情報収集フェーズ。今回の標的は古いカーネルと OS(Ubuntu 14.04 / 3.13 カーネル)であり、SUID バイナリ・sudo 設定・可搬な言語実装(python等)を優先的に調べることで、権限昇格の経路が見つかる可能性が高い。
- 運用側は OS の更新、sudo 設定の最小化、SUID 管理を優先して対処すべき。
付録:よく使うコマンド(コピペ用)
# システム情報
hostname && uname -a && cat /etc/issue && cat /proc/version
# ユーザ情報
id && groups && sudo -l
# プロセス・ポート
ps aux | less
netstat -tulpn 2>/dev/null || ss -tulpn
# SUID / world writable
find / -perm -u=s -type f 2>/dev/null
find / -writable -type d 2>/dev/null
# 検索(履歴・鍵)
grep -R "PASSWORD" /home 2>/dev/null
ls -la /home/*/.ssh 2>/dev/null