
إضافة متصفح لتتبع وفحص واستغلال ثغرات postMessage عبر المستندات مع إمكانيات إعادة التشغيل ومحاكاة الاستغلال عبر الأصل.
Posta هي أداة للبحث في اتصالات الرسائل عبر المستندات (Cross-document Messaging). تتيح لك تتبع واستكشاف واستغلال ثغرات postMessage، وتتضمن ميزات مثل إعادة إرسال الرسائل المتبادلة بين النوافذ داخل أي متصفح متصل.

تشغيل Posta في بيئة التطوير:
git clone https://github.com/benso-io/posta
cd posta
npm install
npm start
يتضمن وضع التطوير خادم ويب محلي يقدم موقع اختبار صغير وصفحة الاستغلال. عند التشغيل في وضع التطوير، يمكنك الوصول إلى صفحة الاستغلال على http://localhost:8080/exploit/
سيقوم بيئة التطوير بإعادة بناء الإضافة عند تغيير كود المصدر. للعمل على واجهة المستخدم، قم بتشغيل بيئة التطوير، قم بإجراء تغييراتك ثم قم بالتحديث. يُرجى ملاحظة أن التغييرات التي تطرأ على صفحة الخلفية يتم إعادة بنائها، ولكنها لن تصبح سارية المفعول إلا بعد إعادة تشغيل الإضافة (من قائمة المتصفح).
تشغيل Posta كإضافة لـ Chrome / Chromium:
git clone https://github.com/benso-io/posta.git
chrome://extensionschrome-extension داخل Posta ورفعه إلى المتصفحفي قسم Tabs يمكننا العثور على الأصل (Origin) الرئيسي، مع iframes التي يستضيفها ويتواصل معها خلال الجلسة. يمكننا اختيار الإطار المحدد بالنقر عليه، ومشاهدة رسائل postMessage المتعلقة بهذا الإطار فقط.

في قسم Messages، يمكننا فحص كل حركة مرور postMessage المرسلة من الأصل إلى iframes الخاصة به، والعكس.
يمكننا تحديد اتصال معين لمزيد من الفحص بالنقر عليه.
تعرض منطقة Listeners الكود المسؤول عن معالجة الاتصال، يمكننا النقر ونسخ محتوياته لفحص كود JS.

في قسم وحدة التحكم، يمكننا تعديل حركة مرور postMessage الأصلية، وإعادة إرسال الرسائل بالقيم المعدلة التي سيتم إرسالها من الأصل إلى iframe الخاص به.
يجب علينا إجراء اختبارات ومعرفة ما إذا كان يمكننا التأثير على سلوك الموقع عن طريق تغيير محتوى postMessage. إذا نجحنا في ذلك، فقد حان الوقت لمحاولة استغلاله من أصل مختلف، بالنقر على "محاكاة الاستغلال" (Simulate exploit).

انقر على زر "المضيف" (host) للانتقال إلى نافذة الاستغلال.
في قسم الاستغلال، سيحاول Posta استضافة الأصل المحدد كـ iframe لبدء اتصال postMessage. في معظم الأحيان لن نتمكن من ذلك بسبب تفعيل خيار X-Frame-Options على موقع الأصل.
لذلك، لمواصلة استغلالنا، سنحتاج إلى الحصول على مرجع اتصال مع الأصل الخاص بنا عن طريق بدء طريقة window.open، والتي يمكن تحقيقها بالنقر على "فتح كعلامة تبويب" (Open as tab).
لدينا وحدة التحكم على اليمين والتي ستساعدنا في تعديل وإعداد حمولاتنا المحددة واختبارها في الاتصال عبر الأصول، والذي يتم تشغيله بالنقر على زر استغلال (Exploit).
