
報告者: Marco Paciaroni (BomboBombone)。
MediaWikiのaction=emailuser APIパスはEmailUserAuthorizeSendフックを呼び出していませんでした。拡張機能やサイトポリシーがこのフックを使用して送信者を拒否した場合、Webフォームでは拒否が適用されましたが、APIパスでは依然としてメッセージを送信できました。
これは設定に依存します。ローカルポリシーまたは拡張機能がEmailUserAuthorizeSendを認可制御として使用している場合にのみ、ウィキに影響します。標準のコア設定自体は拒否フックを提供していません。影響を受けるアカウントには、通常のメール送信権限も必要です。
使い捨ての送信者を拒否する一時的なフックを使用して、分離されたローカルテストウィキを設定し、MediaWikiのメールをMailpitなどのローカルSMTPシンクにのみ配信するように設定します。そのシンク用の使い捨て受信者アカウントを作成します。このスクリプトは、拒否されたWebフォームとAPIリクエストを比較し、APIがポリシーフックをスキップしたかどうかを報告します。
このスクリプトは非ループバックのウィキURLを拒否し、明示的なローカルSMTP確認フラグと入力による確認を要求し、送信者のパスワードを入力するよう求めます。外部にメールを送信するように設定されたウィキは使用しないでください。
python poc.py --base http://127.0.0.1:8080 --username PolicyTestSender --target CVE102973TestRecipient --confirm-local-smtp
フックの拒否メッセージにはemail-policy-denied(デフォルトのマーカー)が含まれている必要があります。送信者には通常のsendemail権限が必要で、受信者はローカルシンクのアドレスを使用する必要があります。