Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
liferay-ga4-rce-research — Liferay CE 7.0.3 GA4 のセキュリティ調査: 事前認証RCE(CVE-2020-7961 クラス)を root 権限でエンドツーエンドに再現。さらに16件の発見事項 — うち8件以上は既知のCVEなし。エージェント型ループハント: Docker 上で25個のジェネレータ、22個のジャッジ、9個のライブバリデータ。証跡と一括チェッカー付き。 | Kitploit
ツール/GitHubGitHub/dinosn/liferay-ga4-rce-research
動的分析 (サンドボックス)脆弱性分析エクスプロイトスクリプトと自動化ウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト論文と研究レッドチーミング

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHubdinosn/liferay-ga4-rce-research

liferay-ga4-rce-research

Liferay CE 7.0.3 GA4 のセキュリティ調査: 事前認証RCE(CVE-2020-7961 クラス)を root 権限でエンドツーエンドに再現。さらに16件の発見事項 — うち8件以上は既知のCVEなし。エージェント型ループハント: Docker 上で25個のジェネレータ、22個のジャッジ、9個のライブバリデータ。証跡と一括チェッカー付き。

リポジトリを見る
651ヶ月前未レビュー

Liferay CE 7.0.3 GA4 — 脆弱性リサーチ(RAPTOR Loop-Hunt)

RAPTOR loop-hunt手法で実施した、Liferay Portal CE 7.0.3 GA4(git tag 7.0.3-ga4、コミット b2d7cc68a)のセキュリティ監査: 決定論的リコン → 生ソースを読む25の隔離された生成エージェント → 生ソースから反駁する22の独立した判定エージェント → Docker上の実GA4インスタンスを攻撃する9のライブ検証エージェント。

見出し: root 権限での未認証RCEをエンドツーエンドで再現(CVE-2020-7961クラス)、さらにライブ検証済みの脆弱性8件 — うち複数は既知のCVEなし。

⚠️ 法的/倫理的: ここで扱うものはすべて自己ホストのテストインスタンスを対象としています。Liferay CE 7.0はサポート終了(EOL)(最終リリースは7.0.6 GA7、2018年)であり、これらの問題は上流で未パッチです。この資料は、所有しているシステム、または明示的にテストを許可されたシステムに対してのみ使用してください。


お探しのものはこれでしょう: https://github.com/dinosn/liferay-ga4-rce-research/blob/main/tools/liferay_ga4_check.py :)


発見の概要

ステータス: ✅ Docker GA4インスタンスに対してライブ検証済み · 🔬 コードで確認済み(独立した判定エージェントが生ソースから完全なトレースを再導出) · 🧪 要設定/設定ゲート付き

ID発見深刻度認証ステータスエビデンス
F-1JSONWS型オーバーライド → 任意クラスのインスタンス化+セッター → rootでのRCE(c3p0 HexAsciiSerializedMap → ObjectInputStream → AspectJWeaverファイル書き込み → JSP)重大不要✅verified/f1-jsonws-deser-rce.md
F-2/poller/* jabsorb javaClassヒント → 任意クラスのインスタンス化+フィールド注入、userId検証より前高(潜在)任意アカウント(自己登録はデフォルト有効)✅ シンク確認 / RCEアーム未達verified/F-2-poller.md
F-4XML-RPC pingback.ping の検証前フェッチ → ブラインドSSRF+内部ポートオラクル(127.0.0.1:11311 のGogoシェルに到達)中不要✅verified/f4-xmlrpc-pingback-ssrf.md
F-5SyncDownloadServlet の versionId IDOR → 任意の DLファイルバージョンを読み取り(クロスサイト、配信オブジェクトにVIEWチェックなし)高不要(ゲスト閲覧可能な「leg」経由)✅verified/F-5.md
F-6XSLテンプレートエンジンがサンドボックスを無視(secureProcessing=false、restricted は破棄)→ document() SSRF および XSLTC rt:exec によるコマンド実行重大サイトテンプレート作成者✅verified/F-6-F-7-template-engines.md
F-7Velocity および FreeMarkerの制限付きテンプレートが生の propsUtil / saxReaderUtil を公開 → ポータルプロパティと がゲストに漏えい

却下を含む厳選リスト全体: FINDINGS.md · 詳細レポート: REPORT.md


新規 vs. 既知 — CVE比較

先行知識として使用した既知のLiferay 7.0.x問題 約50件のカタログ: PRIOR-ART.md (OSV [email protected]、NVDスイープ、Code White / CERT-EUアドバイザリ)

「新規」= 2026-07時点でOSV/NVD/Liferayアドバイザリに対応するCVEが見つからなかったもの; 発見は CVE割り当てに提出されていない(製品ラインはEOLのため)。

GA4に存在を確認済みだがライブ再テストはしていない既知CVE

CVE-2020-15840(二重エンコードURLフィルター迂回)、CVE-2024-8980+CVE-2025-43748 (CSRF → スクリプトコンソールRCE)、CVE-2021-33335(会社管理者の乗っ取り — GA4は影響範囲の下限)、 CVE-2017-1000425(flash.jsp XSS)、CVE-2021-29040(詳細なJSONWSエラー)、 CVE-2022-41414 / CVE-2023-33949(列挙/登録のデフォルト)、CVE-2025-62261(平文のリセット トークン — NVDは7.0.3 GA4を直接指定)。PRIOR-ART.md を参照。


プロセス(RAPTOR loop-hunt)

台帳: TRIED.md(試行したすべて。文書化済みの空振りスライス3件を含む)· INVENTORY.md(カバレッジの分母)· 環境/フィクスチャ: ENV.md


Dockerでローカル再現する

公式の liferay/portal:7.0.3-ga4 イメージは存在しないため、公式バンドルからビルドします:

root@kitploit:~
# Dockerfile
FROM openjdk:8-jdk
RUN apt-get update && apt-get install -y --no-install-recommends unzip curl \
 && rm -rf /var/lib/apt/lists/*
RUN curl -sSL -o /tmp/liferay.zip \
    "https://downloads.sourceforge.net/project/lportal/Liferay%20Portal/7.0.3%20GA4/liferay-ce-portal-tomcat-7.0-ga4-20170613175008905.zip" \
 && unzip -q /tmp/liferay.zip -d /opt \
 && mv /opt/liferay-ce-portal-7.0-ga4 /opt/liferay \
 && rm /tmp/liferay.zip
EXPOSE 8080 11311
CMD ["/opt/liferay/tomcat-8.0.32/bin/catalina.sh", "run"]
root@kitploit:~
docker build -t liferay-ga4 .
docker run -d --name liferay-ga4 -p 8080:8080 liferay-ga4

# first boot takes several minutes — wait for it:
until [ "$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/)" = 200 ]; do sleep 10; done

その後、http://localhost:8080/ で初回セットアップウィザードを完了します(デフォルトのHSQL DB。ウィザードが [email protected] の管理者パスワードを設定します)。

一括バリデータを実行

tools/liferay_ga4_check.py は単一ファイル・標準ライブラリのみのPython 3スクリプトです — 任意の GA4インスタンスを指定すると、ライブ検証済みのすべての発見をテストします:

root@kitploit:~
# passive validation of all findings (safe, no payloads detonated)
python3 tools/liferay_ga4_check.py http://localhost:8080

# with an account (self-registration is on by default) for the poller sink test
python3 tools/liferay_ga4_check.py http://localhost:8080 --user [email protected] --password '***'

# full RCE proof (opt-in): drops a SELF-DELETING JSP via the deserialization file-write
# gadget and fetches the command output; adjust --web-root to your install
python3 tools/liferay_ga4_check.py http://localhost:8080 --rce \
    --web-root /opt/liferay/tomcat-8.0.32/webapps/ROOT

デフォルトのGA4インストールに対する期待出力: 9件がVULNERABLE(脆弱)(F-1、F-1+RCE、F-2、F-4、F-5*、F-8、F-11、F-12、F-13*)。 さらにF-10は非脆弱と確認(トンネルバリアは有効)。*F-5とF-13はフィクスチャパラメータが必要 (--leg-uuid/--version-id、--wcd-page/--group-id/--article-id)— --help 参照。

逆シリアライズガジェットはスクリプト内で純Pythonにより生成されます(本調査で使用したysoserial AspectJWeaverペイロードとバイト単位で照合済み)— Java、jar、ysoserialは不要です。


堅牢と確認済み(他の結果を較正するための基準)

パスワードリセットチケット(128ビットUUID、単回使用、24時間)、チケットログイン時のセッション更新、 会社ごとの SecureRandom キーによるAES-128リメンバーミークッキー、デフォルトのPBKDF2ハッシュ、 ポータル全体のXMLスタック(デフォルトで外部エンティティ無効)、WebDAV/SharePointダイジェストゲート、 /api/axis|/api/liferay|/api/atom のlocalhost IPロック、アップロードパス検証、/combo /sprite のトラバーサルガード、スクリプトコンソールとGogo Web UIのオムニアドミンゲート。

カバレッジの声明と制限

カバレッジは完全なインベントリに対してコンポーネント単位で追跡されました(TRIED.md)。 対象外: 4 GBツリー全体の関数単位の精査(Semgrepアンカーのみ)、 modules/apps のうち foundation/web-experience 以外の大半(ファイル単位の精査のみ)、F-2ガジェット研究、 非デフォルト設定でのライブテスト(F-9/F-14)、およびPDFBox 2.0.3依存関係CVEの到達可能性。 ループは枯渇したのではなく、レポート作成のために一時停止されました。

ツールをダウンロード
file://
高
テンプレート作成者
✅
verified/F-6-F-7-template-engines.md
F-8/image/*?img_id=N による Image_ テーブルIDOR — トークンなし、プレフィックススコープのチェックはプレフィックス交換で迂回、連番IDが列挙可能中不要✅verified/f-8-image-idor.md
F-11SimpleCaptcha = 4桁PIN、誤答でも無効化されず、ゲストカウンターも増加しない → 約5,000リクエストで突破中不要✅verified/f11-f12-captcha-reminder.md
F-12パスワード忘れ: ユーザー列挙+リマインダー回答オラクル キャプチャなし(新規セッションで迂回); 空の回答により、シークレット知識ゼロのクエリ未設定アカウントに実際のリセットチケットが発行される中〜高不要✅verified/f11-f12-captcha-reminder.md
F-13Webコンテンツ表示のリクエストパラメータオーバーライド(groupId/articleId/ddmTemplateKey)→ ゲスト非公開記事のクロスサイト読み取り(journal.article.view.permission.check.enabled=false がデフォルト)高不要(ゲストページにWCDが必要)✅verified/F-13-wcd-param-override.md
F-3OSGi axis-extenderがモジュールSOAPサービスのServiceAccessPolicy/リモートアクセス標識をスキップ中(WSDDモジュール利用時は高)不要🔬judge/axis-spring-remoting.md
F-9OpenIDがアサーション検証より前に被害者アカウントを攻撃者のOpenIDにリンク → アカウント乗っ取り高不要(OpenID有効時、非デフォルト)🔬 🧪judge/sso-autologin.md
F-10TunnelServlet readObject はクラスブラックリストのみで防御; ROME/JdbcRowSetImpl/c3p0/AspectJWeaverガジェットがクラスパス上に存在重大(潜在)信頼されたピア(共有シークレット+許可ホスト)✅ 事前認証ではバリアが有効verified/f10-f20-tunnel-auth-pipeline.md
F-14TokenAutoLogin が素の SM_USER ヘッダーを信頼(検証なし、IP許可リストなし)中不要(トークンSSO有効時、非デフォルト)🔬 🧪judge/sso-autologin.md
F-15サイト管理者のLARインポートが RolesAdminPortletDataHandler を混入 → 会社ロールの一括削除/権限ワイプ中サイト管理者🔬judge/export-import-lar.md
F-16OpenSocial(デフォルトバンドルには含まれない): 事前認証の makeRequest SSRF、/gadgets/ifr オリジンJS、偽造可能なセキュリティトークン → なりすまし、保存型XSS高 ×4不要 / サイトメンバー🔬(デプロイ形態依存)judge/opensocial-shindig.md
F-17WSRP(デフォルトバンドルには含まれない): 事前認証の ProxyServlet SSRF; マークアップエンドポイント → 任意ポートレットの描画+レイアウト typeSettings の永続化中不要🔬(デプロイ形態依存)judge/wsrp.md
発見既知CVE?関連性
F-1 JSONWS逆シリアライズRCECVE-2020-7961(CISA KEV、実環境で悪用済み)再現+独立した再導出。 GA4で未パッチであることを確認; AspectJWeaverファイル書き込みガジェットで完全なチェーンを実証(公開PoCは通常JdbcRowSetImpl JNDIを使用)
F-10 TunnelServlet readObjectCVE-2020-15842(クラス一致)既知クラス。 ブラックリストのみの逆シリアライズ防御を確認; 事前認証バリアはライブ検証済み(共有シークレット/許可ホストなしでは悪用不可)
F-7 テンプレート propsUtil エスケープCVE-2020-13445(テンプレートインジェクション、FreeMarker/Velocity)バリアント。 同じバグクラス(テンプレートAPIが機密オブジェクトを制限できない)だが、メカニズムは異なる: 制限コンテキストの内側で生の PropsImpl/saxReaderUtil オブジェクトが公開される
F-12(列挙の部分)CVE-2021-33321(login.secure.forgot.password=false)既知の安全でないデフォルト — ライブで独立に確認
F-12(オラクル+空回答リセットチケット)該当なし新規。 ステップ2で新しいJSESSIONIDによるキャプチャ迂回; 空の answer で、クエリ未設定のアカウントにシークレット知識ゼロで有効な24時間リセットチケットが作成される
F-11 SimpleCaptchaブルートフォース該当なし(CVE-2019-6588は別のキャプチャ問題 — XSS)新規。 4桁PIN+無効化なし+ゲストカウンター迂回
F-2 poller jabsorb逆シリアライズ該当なし新規。 シンクはライブ確認; LiferaySerializer のフィールドインジェクションにより武器化は未達(研究継続中)
F-4 pingback SSRFオラクル該当なし新規。
F-5 sync versionId IDOR該当なし新規。
F-6 XSLエンジンRCE該当なし(CVE-2020-13445はFreeMarker/Velocityのみを対象)新規。 XSLエンジンは従来のテンプレートインジェクション修正のすべての対象外だった
F-8 Image_ IDOR該当なし新規。
F-13 WCDクロスサイト読み取り該当なし新規。 根本原因は安全でないデフォルト(journal.article.view.permission.check.enabled=false)に加え、新しい配信経路(ポートレットのリクエストパラメータオーバーライド)
F-3 axis-extender SAP迂回該当なし新規。
F-9 OpenID検証前リンク該当なし新規。
F-14 SM_USER ヘッダー信頼該当なし新規。
F-15 LARロールデータハンドラー混入該当なし新規。
F-16 / F-17 OpenSocial / WSRP該当なし新規、ただしモジュールはデフォルトのGA4バンドルには含まれない(Liferay-Releng-Bundle: false)
ラウンド実行内容出力
0 — 決定論的raptor-sca 依存関係監査(依存727件)、Semgrepルール17種(アンカー1,098件)、脅威モデル、web.xml から生成したエントリポイントマニフェスト、先行CVEカタログSCA.md SEMGREP.md THREAT-MODEL.md ENTRYPOINTS.md PRIOR-ART.md
1 — 生成25の隔離エージェント。コンポーネントスライス×バグクラスのレンズごとに1つ。生ソースのみから推論(事前の要約なし — アンカリング防止)candidates/ に候補45件
2 — 判定22の独立エージェントが各候補を生ソースから反駁; 却下にはコード内で可視の証拠が必要(「見えない層が安全だと想定しない」)judge/
3 — ライブ検証9エージェントがDocker GA4インスタンスを攻撃; すべての主張は取得したリクエスト/レスポンスで裏付け; クリーンアップ必須verified/