legacy-knowledge-base
公開されました Sep. 10, 2025

パス /o/js_resolve_modules での SQL インジェクションの脆弱性

written-by

David Tello

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • スキャナ ツール (Tenable など) を使用して脆弱性スキャンを実行した後、次の脆弱性が見つかりました ブラインド SQL インジェクション.

  • この脆弱性は、攻撃ベクトル http://URL_LIFERAY/o/js_resolve_modules?modules=10001%3D%28select%201%2C2%29%3D1 を使用し、スキャナー ツールは次のような情報を表示します。
    Vulnerability has been detected on URL '/o/js_resolve_modules' by exploiting 'link' element named 'modules' and injecting following payload:

    | 10001=(select 1,2)=1

    To confirm the presence of the vulnerability, this proof has been identified in the target response:

    | 10001=(select 1,2)=1 for TRUE statement and 10001=(select 1)=1 for FALSE statement

Environment

  • Liferay DXP 7.3.

解決策

  • この脆弱性は誤検出の可能性があります。
  • SQL インジェクション テストの後、一部のツールは 200 以外の HTTP 結果コードを予期し、その他の応答はエラー テストとしてマークされます。
  • Liferay は結果コード 200 に応答できますが、結果を返さず、SQL インジェクションの試行を禁止します。
  • それを確認するには、いくつかのテストを実行して攻撃ベクトル /o/js_resolve_modules?modules= を確認します。 これらのテストの目的は、SQL インジェクション攻撃がある場合と、リクエストに間違ったパラメーター値がある場合のこのエンドポイントの動作が同じであることを確認することです。 テストは次のとおりです。
    • CURL などのツールを使用して、攻撃ベクトルに SQL を挿入しようとする HTTP 呼び出しを送信します。 呼び出しは次のようになります。
      curl http://URL_LIFERAY/o/js_resolve_modules?modules=10001%3D%28select%201%2C2%29%3D1
      攻撃が正しく回避された場合、答えは次のようになります。
      {"pathMap":{},"configMap":{},"resolvedModules":[],"moduleMap":{},"errors":["Missing required module '10001'=(select 1'","Missing required module '2)='1'"],"moduleFlags":{}}
      HTTP 結果コードは 200 であり、スキャナー ツールによって誤って解釈される可能性があります。 しかし、攻撃は正しく回避されました。
    • 間違ったパラメータ値を持つリクエストをこのエンドポイントに送信するには、次のような CURL を使用できます。
      curl http://URL_LIFERAY/o/js_resolve_modules?modules=badModuleName123321
      応答は、前のテストと同じである必要があります。
      {"pathMap":{},"configMap":{},"resolvedModules":[],"moduleMap":{},"errors":["Missing required module 'fdjksalfjdskfjdsklafjdsak'"],"moduleFlags":{}}
      これらの応答は、悪意のあるコードがエンドポイントによって間違った入力値として解釈され、インジェクションを実行できないことを証明しています。

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base