ثغرة HTTP Splitting

ثغرة HTTP Splitting

ثغرة HTTP Splitting

 

بعض المواقع الإلكترونية تلجأ الى جزء من مدخلات المستخدم لتستخدمها في الـ”HTTP Response Headers” . أكثر الأمثلة وضوحا على هذه الثغرة هي المواقع التي تتيح للمستخدم إختيار الصفحة التي يريد أن يتم “تحويله” اليها بإستخدام أحد وسائل الإدخال .

 

سوف أقوم بشرح “Scenario” كامل لعملية إختبار إختراق موقع إفتراضي لتكون الصورة واضحة للجميع , وسوف نطلق على الموقع “fakewebsite.fake” .

 

في البداية نبحث داخل الموقع عن “Form” يسمح للمستخدم الإدخال ويقوم الموقع من بعدها التحويل الى الصفحة التي طلبها المستخدم , كما نرى بالصورة :

 

11111111

 

لنقم على سبيل المثال بإرسال طلب للسيرفر بأننا نريد الذهاب لصفحة “/100-sales” , فسوف يكون الرد كالآتي :

HTTP/1.1 302 Moved Temporarily
Location : http://fakewebsite.fake/100-sales
[other http headers]

نلاحظ أن مدخلنا الذي قمنا بإدخاله “100-sales” تم التعامل معه في أحد الـ”HTTP Request Headers” .

قد يتسائل أحد الأشخاص , ما هو الخطر الذي يكمن وراء هذه الثغرة ؟

يستطيع المخترق بوساطة هذه الثغرة أن يكوّن أكثر من ردّين من السيرفر , ماذا أعني بهذا الكلام ؟ بالرجوع للأعلى , قمنا بطلب الصفحة “100-sales” تم الرد برد واحد يقوم بالتحويل لصفحة معينة . بإستخدام هذه الثغرة يقوم المخترق بإرسال طلب وتشكيل ردّين مختلفين لصفحتين مختلفتين !

أعلم أن الكلام معقد وغير مفهوم للبعض , ولكن أفضل طريقة للفهم هي بالأمثلة .

لو قمنا مثلا بتعديل الصفحة المراد اليها , كالآتي :

HTTP/1.1 302 Moved Temporarily
Location : http://fakewebsite.fake/sales-100%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0a%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>hacked</html>
[other http headers]

ما الذي قمنا بفعله ؟

قمنا بإرسال طلب للسيرفر بأنه نريد إستعراض الصفحة

“sales-100%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>hacked</html>”

ولكن هذا المدخل يحتوي على “Response” عند طلب صفحة معينة داخل الموقع , ماذا يحصل ؟

تم تشفير الصفحة المراد تحويلها من خلال “URL Encode” لكي يتم التعامل معه على أنه مدخل واحد , عند فك تشفيره نجده كالآتي :

sales-100

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 35

<html>hacked</html>

لنعد تشكيل الرد الأصلي كامل بدون تشفير لنرى ماذا حصل :

HTTP/1.1 302 Moved Temporarily
Location : sales-100

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 35

<html>hacked</html>

نجد أنه هناك ردّين ! , الأول للتحويل الى صفحة “sales-100” , والأخر هو رد غير مرتبط بطلب معين و يحوي على أكواد HTML لو قام مختبر الإختراق بالتحويل الى الصفحة الرئيسية بشكل سريع سيتم مقابلة الطلب “تحويل الى الصفحة الرئيسية” بالرد الثاني “محتوى الصفحة الذي سوف يظهر .

 

 

[schema type=”review” url=”http://technawi.net/?p=5720″ name=”ثغرة HTTP Slitting” description=”بعض المواقع الإلكترونية تلجأ الى جزء من مدخلات المستخدم لتستخدمها في الـ”HTTP Response Headers” . أكثر الأمثلة وضوحا على هذه الثغرة هي المواقع التي تتيح للمستخدم إختيار الصفحة التي يريد أن يتم “تحويله” اليها بإستخدام أحد وسائل الإدخال .” author=”رعد حداد” pubdate=”2016-01-26″ user_review=”5″ min_review=”5″ max_review=”5″ ]

 

هل أعجبتك هذه التدوينة ؟ قم بلإطلاع على المقالات السابقة لنا.

مقالات سابقة :

[list type=””]

 

عن مشاركات الزوار

2 تعليقان

  1. Thanks Eng.
    how can we protect our sites against this?

    • في البداية شكرا لك على كلمة “Eng” ولكن أنا لست مهندس 🙂

      حتى تحمي نفسك من هذه الثغرة , في البداية تصنف هذه الثغرة ضمن CRLF Injection حيث تعمل هذه الثغرة على استخدام “%0d%0a” وهم يستخدمو للفصل , وبعد الفصل يقوم المخترق بكتابة استغلاله كما هو موضح في المقالة , كل ما عليك فعله هو ان تقوم بالتحقق من المدخل بحيث لا يحتوي على CR او LF .

      أتمنى أكون قد أفدتك 🙂

اضف رد

لن يتم نشر البريد الإلكتروني . الحقول المطلوبة مشار لها بـ *

*

two × 3 =

This site uses Akismet to reduce spam. Learn how your comment data is processed.