سؤال

على جانغو الوثائق على CSRF الحماية تنص على أن:

وبالإضافة إلى ذلك ، HTTPS الطلبات ، صارمة التحويلية التحقق يتم عن طريق CsrfViewMiddleware.وهذا أمر ضروري لمعالجة رجل-في-الوسط الهجوم هذا ممكن في ظل HTTPS عندما باستخدام دورة مستقلة حالية ، بسبب إلى حقيقة أن HTTP 'تعيين ملف تعريف الارتباط' رؤوس (للأسف) تقبل من قبل العملاء أن تتحدث إلى موقع تحت HTTPS.(المحيل التحقق لا يتم لطلبات HTTP لأن وجود رأس المحيل لا موثوقة بما فيه الكفاية تحت HTTP.)

لدي مشكلة في تصور كيف يعمل هذا الهجوم.هل يمكن لأحد أن يفسر ؟

التحديث:
الصياغة في جانغو دكتور يبدو ان هذا يعني أن هناك نوع معين من رجل-في-الوسط الهجوم (الذي يؤدي إلى نجاح CSRF افترض) الذي يعمل مع الدورة المستقلة حالية (لكن ليس مع معاملة محددة حالية وما إلى ذلك ، أفترض) و ينطوي على استخدام 'تعيين ملف تعريف الارتباط' رأس.
لذلك أردت أن أعرف كيف أن نوع معين من يعمل هذا الهجوم.

هل كانت مفيدة؟

المحلول

يمكن للمهاجم تعيين ملف تعريف الارتباط CSRF باستخدام ملف تعريف الارتباط، ثم تزويد رمز مميز مطابق في بيانات نموذج النشر.نظرا لأن الموقع لا يربط ملفات تعريف الارتباط الجلسة إلى ملفات تعريف الارتباط CSRF، فليس هناك طريقة لتحديد ملف تعريف الارتباط Token + CSRF حقيقي (القيام بالجزم وما إلى ذلك من أحدهم لن يعمل، حيث يمكن للمهاجم الحصول على زوج صالحمن الموقع مباشرة، واستخدم هذا الزوج في الهجوم).

مباشرة من مشروع Django

(i googled for جلسة غير مستقلة .)

نصائح أخرى

هنا مفصلة وصف واحد مثل هذا الهجوم MitM.أدناه هي مختصرة و مبسطة التكيف:

نفترض أن:

  • هاجم الموقع foo.com
  • نحن (المهاجم) يمكن أن MitM جميع الطلبات
  • بعض الصفحات تقدم عبر HTTP (على سبيل المثال ، http://foo.com/browse)
  • بعض الصفحات يقدم على HTTPS (على سبيل المثال ، https://foo.com/check_out), و هذه الصفحات هي محمية من قبل الدخول في تعريف الارتباط (w/تأمين مجموعة).لاحظ أن هذا يعني أننا لا يمكن أن يسرق تسجيل الدخول للمستخدم تعريف الارتباط.
  • جميع أشكال محمية بمقارنة نموذج المعلمة مع csrftoken ملف تعريف الارتباط.كما لوحظ في جانغو مستندات, هذا ليس له علاقة بهذا الهجوم سواء كانوا من "موقعة" أو عشوائية فقط nonces.

الاستيلاء صالح CSRF المميز

  • مجرد قراءة المرور عند المستخدمين الزيارات http://foo.com/browse
  • أو إذا كانت الرموز هي شكل محدد, نحن يمكن فقط تسجيل الدخول إلى الموقع من خلال حساب خاص به على صالح رمز من http://foo.com/check_out في منطقتنا.

MitM أن القوة التي تسيطر عليها المهاجم بوست على صفحة HTTPS مع ذلك المنوال:

تعديل HTTP-تقدم في الصفحة (على سبيل المثال ، http://foo.com/browse) أن يكون لصناعة السيارات في تقديم النموذج الذي تقدم HTTPS بعد نقطة النهاية (على سبيل المثال ، http://foo.com/check_out).أيضا تعيين CSRF كوكي لتتناسب مع الرمز المميز الخاص بك:

<script type="text/javascript">
  function loadFrame(){
    var form=document.getElementById('attackform');
    // Make sure that the form opens in a hidden frame so user doesn't notice
    form.setAttribute('target', 'hiddenframe');
    form.submit();
  }
</script>

<form name="attackform" id="attackform" style="display:none" method="POST" 
      action="http://foo.com/check_out">
  <input type="text" name="expensive-thing" value="buy-it-now"/>
  <input type="text" name="csrf" value="csrf-token-value"/>
</form>

<iframe name="hiddenframe" style="display:none" id="hiddenframe"></iframe>
<XXX onload="loadFrame();">

هجوم الرجل في الوسط شرح بشروط مبسطة للغاية. تخيل شخصين يتحدثان مع بعضهما البعض وقبل بدء التحدث مع بعضهما البعض، يقومون ببنها مصافحة قبل بدء اتصال اتجاهين. عندما يبدأ الشخص الثالث في تحليل كيفية توصيل الشخصين (ما هي سلوكتهم؟، هل يفعلون مصافحة خاصة قبل أن يتحدثوا إلى بعضهم البعض؟، ما هو الوقت الذي يرغبون في التحدث مع بعضهما البعض؟ ، يمكن للشخص الثالث قالب التواصل له / لها في النقطة التي يمكنه تضمينها في محادثة وتعمل كوسيط مع شخصين الأصليين يفكران بأنهم يتحدثون مع بعضهم البعض.

تأخذ الآن المفهوم وتسقط على مستوى المهوس. عند التواصل جهاز كمبيوتر أو جهاز توجيه أو برامج وما إلى ذلك مع عقدة أخرى للشبكة، يحدث اتصال ثنائي الاتجاه إما عن طريق المصادقة أو الاعتراف أو كليهما. إذا كان بإمكان طرف ثالث تحديد تسلسل الأحداث المطلوبة (معرف الجلسة، ملفات تعريف الارتباط الدورة، التسلسل التالي للاعتراف / النقل / الإنهاء في حركة المرور، إلخ)، يمكن للطرف الثالث الخبيث أن تعكس حركة المرور الخاصة به كعقدة شرعية و فيضان حركة المرور إلى إحدى العقد الشرجية وإذا احصل على تسلسل الأحداث المناسبة، يصبح الثالث الخبيث قبل عقدة شرعية.

دعونا نقول لدينا جانغو-مدعوم من موقع الخبيثة رجل-في-الوسط.في الحالة العامة الموقع حتى لا يكون لخدمة http:// الصفحات في الهجوم لتحقيق النجاح.في جانغو ، ربما تحتاج إلى خدمة واحدة على الأقل CSRF-الصفحة المحمية أكثر من عادي http:// (انظر أدناه للحصول على شرح).

  1. المهاجم يحتاج أولا إلى الحصول على نحويا-صالح CSRF رمزية.لبعض أنواع من رمز (مثل بسيط سلسلة عشوائية) أنها قد تكون قادرا على عمل واحد.بالنسبة جانغو سارعت الرموز ربما انها سوف تضطر إلى الحصول على واحد من http:// الصفحة التي تضم CSRF (مثلا ، في شكل خفي الميدانية).

    النقطة الرئيسية هي أن جانغو CSRF الرموز ليست مرتبطة جلسة المستخدم أو أي الأخرى المحفوظة الدولة.جانغو ببساطة ابحث لمعرفة ما إذا كان هناك تطابق بين كوكي و شكل قيمة (أو رأس في حالة اياكس).لذلك أي صالحة المنوال سوف تفعل.

  2. يطلب المستخدم صفحة على http://.المهاجم هو حر في تعديل الرد بما انها غير مشفرة.لا Set-Cookie معها الخبيثة CSRF المنوال ، ويغير الصفحة لتشمل شكل خفي و جافا سكريبت أن يقدم هذا POSTs إلى https:// نقطة النهاية.التي تشكل بالطبع يشمل الميدان مع CSRF القيمة.

  3. عندما متصفح المستخدم تحميل الاستجابة ، فإنه يخزن CSRF ملف تعريف الارتباط المحدد من قبل Set-Cookie رأس ثم يتم تشغيل جافا سكريبت إلى تقديم النموذج.يرسل POST إلى https:// نقطة النهاية جنبا إلى جنب مع الخبيثة CSRF الكعكة.

    ("مؤسف" الواقع أن ملفات تعريف الارتباط على http:// سيتم إرسالها إلى https:// النهاية تناقش في ذات الصلة RFC:"شبكة نشطة يمكن للمهاجم أيضا حقن ملفات تعريف الارتباط إلى ملف تعريف الارتباط رأس إرسالها إلى https://example.com/ طريق انتحال استجابة من http://example.com/ وبث Set-Cookie رأس.HTTPS الخادم في example.com سوف تكون قادرة على التمييز هذه الملفات من ملفات تعريف الارتباط التي وضعت نفسها في HTTPS الاستجابة.شبكة نشطة المهاجم قد تكون قادرة على الاستفادة من هذه القدرة لشن هجوم ضد example.com حتى إذا example.com يستخدم HTTPS حصرا.")

  4. أخيرا, جانغو يتلقى الملقم الخبيثة POST طلب.فإنه يقارن CSRF كوكي (مجموعة من المهاجم) إلى القيمة في شكل (مجموعة من المهاجم) و يرى أنها هي نفسها.فإنه يسمح الخبيثة الطلب.

لذا تجنب هذه النتيجة ، جانغو أيضا يتحقق Referer رأس (والتي من المتوقع أن تكون دائما في مجموعة https:// طلبات) ضد Host رأس.هذا الاختيار سوف تفشل في المثال أعلاه لأن المهاجم لا يمكن تزوير Referer رأس.المتصفح سيتم تعيين إلى http:// الصفحة أن المهاجم تستخدم لاستضافة لها الخبيثة شكل ، جانغو سيتم الكشف عن التناقض بين هذا و https:// نقطة النهاية أنه من التقديم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top