はじめに
サイバーセキュリティエンジニアとして、私は安全なソフトウェア開発とコード レビューに特化しています。この記事では、HackTheBoxプラットフォームでのハッキング演習を通して、さまざまなセキュリティの脆弱性を探索し、それらを軽減する方法を学びます。
初期の列挙とクッキーの解析
まずはnmapスキャンを実行して、ターゲットシステムのオープンポートとサービスを特定します。次に、サーバーが設定したクッキーを調べます。クッキーには、base64でエンコードされた文字列と署名が含まれています。’ent’ツールを使って署名のエントロピーを測定すると、ランダムデータではないことがわかります。
お問い合わせフォームとダッシュボードの探索
次に、お問い合わせフォームのメッセージにHTMLを挿入して、「ハッキング試行が検出された」というメッセージを引き起こします。これは、アプリケーションが潜在的な攻撃を検出し対応しようとしていることを示しています。また、クッキーを操作して’/dashboard’ページにアクセスしようとしますが、失敗します。
XSSによる管理者クッキーの盗難
あきらめずに、「ハッキング試行が検出された」メッセージにXSSペイロードを挿入して、管理者のクッキーを盗み取ります。盗まれたクッキーを捕捉するためにローカルのWebサーバーをホストし、それを再利用して管理者ダッシュボードにアクセスします。
「レポート生成」機能のコマンド インジェクションの攻撃
ダッシュボードに入ると、「レポート生成」機能にコマンド インジェクションの脆弱性があることがわかります。この脆弱性を利用して、サーバー上で任意のコマンドを実行し、リバースシェルを取得します。
SUIDの exploit によるroot権限の昇格
さらに調査を進めると、SUID権限で実行できるbashスクリプト(Syscheck)が見つかりました。Syscheck スクリプトのbashインジェクションの脆弱性を攻撃することで、システムのroot権限を取得できます。また、より複雑なJavaScriptペイロードを使って、HTTPオンリーのクッキーを exfiltrate する方法についても説明します。
まとめ
この記事では、クロスサイトスクリプティング(XSS)、コマンドインジェクション、SUIDの特権昇格など、さまざまなセキュリティの脆弱性を特定し、攻撃する包括的なハッキング演習を行いました。これらの攻撃手法と対策を理解することで、自身のアプリケーションやシステムのセキュリティを強化することができます。
キーポイント:
- ターゲットシステムの徹底的な列挙と分析を行い、潜在的な脆弱性を特定する。
- XSSやコマンドインジェクションなどの脆弱性につながる入力検証とサニタイズの問題に注意を払う。
- 特権実行ファイルやSUIDスクリプトを慎重に評価し、特権昇格攻撃を防ぐ。
- コンテンツセキュリティポリシーや入力検証など、クライアントサイドの攻撃(クッキーの盗難など)に対する堅牢なセキュリティ対策を実装する。