اختبار أمان WebSockets من الصفر
بالمقارنة مع HTTP العادي : - HTTP مبني على request/response . يعني: - client كيبعث request. - server كيرجع response. - الاتصال كيتسد بعد كل طلب.
📌 1. المقدمة#
WebSocket هو بروتوكول كيسمح بتواصل مستمر (persistent connection) ما بين
client (مثلا المتصفح browser) و server (السيرفر ديال التطبيق).
بالمقارنة مع HTTP العادي:
-
HTTP مبني على request/response. يعني:
- client كيبعث request.
- server كيرجع response.
- الاتصال كيتسد بعد كل طلب.
-
WebSocket مختلف:
- كيبدا بواحد HTTP handshake عادي.
- من بعد كيتحوّل لاتصال مفتوح على طول.
- client ↔ server يقدرو يبعثو رسائل في أي وقت (asynchronous, real-time).
📌 2. فين كيتستعمل WebSocket ؟#
WebSocket مستعمل اليوم فبزاف ديال المجالات:
- 💬 Chat applications (بحال WhatsApp Web, Messenger)
- 🎮 Gaming (ألعاب multiplayer real-time)
- 💹 Trading platforms (crypto, stocks, الفوركس)
- 📡 IoT devices (أجهزة مربوطة بالإنترنت، بحال smart home)
- 🛠️ Dashboards real-time (باش البيانات تتحين مباشرة)
📌 3. الهجوم على WebSockets#
حيت WebSockets بحال HTTP كيستعمل data من المستخدم، خاصنا نعرف شنو ممكن يوقع:
-
Input-based attacks
- بحال SQL injection, XSS, XXE …
- كيتنفذو إلا ماكانش validation للـ data.
-
Blind vulnerabilities
- بحال SSRF أو XXE، بعض المرات صعيب تشوف الـ output مباشرة.
- خاصك تستعمل OAST (out-of-band techniques).
-
Cross-site WebSocket Hijacking (CSWSH)
- هجوم بحال CSRF ولكن على handshake ديال WebSocket.
- hacker يقدر يستعمل session ديال victim وينفذ actions بلا ما يعرف.
-
Weak session handling
- السيرفر يربط WebSocket بواحد session قديم أو expired.
- hacker يقدر يعاود handshake ويستغل هاد الضعف.
-
Header trust issues
- بحال الاعتماد على
X-Forwarded-Forباش يعرفوا IP. - hacker يقدر يبدل header ويخدع السيستم.
- بحال الاعتماد على
📌 4. اختبار WebSocket باستعمال Burp Suite#
🟢 الخطوة 1: Intercept الرسائل#
- افتح Burp Proxy
- فعل interception ON
- مشي للتطبيق لي كيتعامل مع WebSockets
- أي رسالة client ↔ server تبان فـ Intercept tab
- بدل المحتوى ودوزها بـ Forward
🟠 الخطوة 2: Replay الرسائل#
- Send to Repeater
- بدل المحتوى
- جرب ترسل نفس الرسالة مرات متعددة
- تقدر حتى تولّد رسائل جديدة وتبعثها server ↔ client
🔵 الخطوة 3: Manipulate Handshake#
- فـ Repeater → ضغط على pencil icon
- تقدر:
- Clone WebSocket
- Reconnect WebSocket
- بدل headers (مثلا Cookie, Origin, X-Forwarded-For)
- جرب CSRF أو session fixation
📌 5. أمثلة عملية (Exploitation)#
🟢 مثال 1: Chat XSS#
رسالة عادية:
{"message":"Hello Carlos"}
رسالة خبيثة:
```json
{"message":"<img src=1 onerror='alert(1)'>"}👉 النتيجة: المستخدم الآخر يشوف الرسالة ويشتغل XSS فالمتصفح ديالو.
🟠 مثال 2: SQL Injection إذا كانت الرسائل كتخزن مباشرة فـ database:
{"id":"1 OR 1=1"}👉 النتيجة: hacker يقدر يطلع data كاملة من الجدول.
🔴 مثال 3: Cross-site WebSocket Hijacking (CSWSH) مهاجم يحط سكريبت فالموقع ديالو:
var ws = new WebSocket("wss://victim.com/socket");
ws.onopen = function() {
ws.send('{"action":"deleteUser","id":"123"}');
};👉 إذا ماكانش CSRF protection فالـ handshake، المهاجم يقدر يستعمل session ديال الضحية.
📌 6. كيفاش نحمي WebSockets ؟ ✅ ديما استعمل wss:// (TLS encryption). ✅ Hard-code WebSocket endpoint (ماتخليش user يدخل URL). ✅ زيد CSRF protection فالـ handshake. ✅ Validate & sanitize أي data داخلة وخارجة. ✅ ما تثقش فـ custom headers (بحال X-Forwarded-For). ✅ استعمل authentication tokens مع expiration قصير. ✅ راقب traffic (logging + anomaly detection).
📌 7. خطوات عملية (للتدريب) باش تولّي متمكن، جرب: 🔎 PortSwigger WebSockets labs (فيهم أمثلة حية) 🛠️ Burp Suite → WebSocket tab ✍️ غيّر الرسائل وجرب payloads (XSS, SQLi, CSRF, XXE) 🧪 حلّ كل Lab step by step
✅ الخلاصة WebSockets = اتصال مستمر client ↔ server نفس المشاكل ديال HTTP ممكن يوقعو هنا (XSS, SQLi, CSRF …) Burp Suite هو الأداة الأقوى باش تختبر WebSockets الحماية كتطلب: TLS + CSRF tokens + input validation + مراقبة sessions