报告者:Marco Paciaroni (BomboBombone)。
MediaWiki 的 action=emailuser API 路径未调用 EmailUserAuthorizeSend 钩子。当扩展或站点策略使用该钩子拒绝某个发件人时,Web 表单会执行拒绝操作,而 API 路径仍可发送邮件。
这取决于配置。仅当本地策略或扩展使用 EmailUserAuthorizeSend 作为授权控制时,才会影响 wiki。默认核心配置本身不提供拒绝钩子。受影响的账户还需要正常的发送电子邮件权限。
配置一个隔离的本地测试 wiki,使用临时钩子拒绝一次性发件人,并将 MediaWiki 邮件配置为仅投递到本地 SMTP 接收器(如 Mailpit)。为该接收器创建一个一次性收件人账户。该脚本会比较被拒绝的 Web 表单与 API 请求,并报告 API 是否跳过了策略钩子。
该脚本拒绝非回环 wiki URL,要求显式的本地 SMTP 确认标志和键入确认,并提示输入发件人密码。请勿使用配置为向外部发送邮件的 wiki。
python poc.py --base http://127.0.0.1:8080 --username PolicyTestSender --target CVE102973TestRecipient --confirm-local-smtp
钩子的拒绝消息必须包含 email-policy-denied(默认标记)。发件人需要正常的 sendemail 权限,收件人必须使用本地接收器地址。