現在発生中:ランダムSSRFからLFI、そしてAWSの乗っ取りまで
このブログ記事ではLocal File Inclusion(LFI)にエスカレーションしたServer-Side Request Forgery(SSRF)脆弱性について説明します。この脆弱性のエクスプロイトに成功すると機密性の高いアクセスキーやプライベートトークンがエクスポーズされ、接続しているAWS インスタンスへのアクセスが可能になってしまいます。事実、私の調査でもこの脆弱性によってウェブサイトの完全性、可用性、機密性が失われる可能性があることがわかりました。そして必ずしも直接接続されていない20以上のAWSインスタンスも対象となることが判明しました。
企業にとってこの種の脆弱性の潜在的リスクや影響や防止策を理解しておくことは非常に重要であると言えます。
SSRF とは
Server-SideRequest Forgery(SSRF)攻撃では、リソースへのアクセスや変更を目的として、攻撃者がサーバー機能を悪用します。攻撃者はURL からのデータインポートをサポートする、あるいは URL からのデータ読み込みが可能なアプリケーションを標的としています。
SSRF(ServerSide Request Forgery)
サイトのインフラ内で一部のパラメータを調査したところ、あるパラメータに目が留まりました。このパラメータで、様々なプロトコルスキームを使って内部情報にアクセスができました。さらに、インフラストラクチャの細部を調べて、攻撃者によるエクスプロイトがあった場合の影響も理解することができました。
SSRF脆弱性は、"url" パラメータ入力を有効にしないエンドポイントで検出されました。
攻撃者は任意のURL を挿入できるので、様々なプロトコルを使って内部ネットワークとのインタラクションが可能になります。
以下はSSH プロトコルを使った PoC の一例です。
- http://www.REDACTED.com/?url=http://localhost:22
- これによってホストから内部 SSH バナーを取得します。
- SSH-2.0-OpenSSH_8.0
SSRFからLFI(LocalFile Inclusion)へ
SSRF脆弱性は file:// プロトコルを使用することで LFI にエスカレーションできました。
以下はファイルプロトコルを使ったPoCの一例です。
· http://www.REDACTED.com/?url=file:///etc/passwd
· 内部ファイルの読み込み結果により、パスワードファイルの内容がエクスポーズされます。
既知のウェブディレクトリ(/var/www/html/)の下に複数のユーザーが存在しており、このインスタンスで複数のサイトが稼働していることがわかります。
SSRFからAWSのアクセスキーへ
SSRF脆弱性のエスカレーションによってAWS のアクセスキーとプライベートトークンを抽出できました。
これにより攻撃者は企業の複数のクラウド環境アセットに対する読み書き権限を使って、各種のAWS インスタンスを制御することができます。
これはAWS キーをプレーンテキストにする PoC の一例です。
- http://www.REDACTED.com/?url=http://169.254.169.254/REDACTED/meta-data/iam/security-credentials/REDACTED
- 本来表示してはならないような情報が確認できます。
- "Code" : "Success",
"Type" : "AWS-REDACTED",
"AccessKeyId" : "REDACTED",
"SecretAccessKey" : "REDACTED",
"Token" : "REDACTED",
"Expiration" : "REDACTED"
脅威アクターはAWS クレデンシャルを使用してインスタンスの制御、機密情報の表示または編集を行い、さらに高度な攻撃を仕掛けることができます。これにより攻撃者は目的に応じて自在に被害規模を設定し、多大な被害を生じさせることもできます。
たとえば、機密データを盗み出して操作し、ラテラルムーブメントで他のデバイスに拡大しながら、さらなる機密情報を抜き出すために休止状態を維持することもできます。同時に感染させたネットワークをマッピングして感染したインフラストラクチャやそこに接続されたサイトでランサムウェア攻撃を仕掛けることもできます。
被害は業務上および評判の両方で発生するので、非常に公的で深刻な影響が発生します。
常に以下の点に注意してください。
- すべてのユーザー入力はサニタイズすること。
- 転送や外部からの通信はホワイトリストによって特定のドメインやIP アドレスに限定すること。
- 適切な監視機能を導入し、機密内容への不正なアクセスがあったばあいはアラートを発出する。