كيف اخترق Qiwi دون معرفة البرمجة

دخول


مرحبا مرة اخرى

هذه المرة لن تثير المقالة أسئلة "جادة".

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

في الوقت الحالي ، قام Qiwi بالفعل بتصحيحه بنجاح ، لذا سأحاول تعزيز التفسيرات بلقطات شاشة حديثة ، وأحيانًا أشرح كيف بدا الأمر منذ 2.5 عام.

الآن إلى هذه النقطة


لنفترض أن لديك اسم مستخدم: كلمة المرور لمحفظة Qiwi الخاصة بشخص آخر.
دعنا نقول أن هناك 100K روبل.
وتريد sooooo الاستيلاء عليها.
لكن لا يمكنك فقط شطب الأموال - تحتاج إلى تأكيد عبر الرسائل القصيرة.
لكننا أذكياء ، هذا لن يمنعنا.

الخطوة 1. تسجيل الدخول إلى حسابك وإنشاء بطاقة افتراضية هناك.
نرى مثل هذه الصورة



يبدو أن لدينا معلومات قليلة للغاية. آخر 4 أرقام فقط من البطاقة ومدة البطاقة.

ولكن قبل أن يكون هناك 6 (!) آخر رقم من البطاقة . وهذا هو ، 10 أرقام أخرى كانت غير معروفة.
ونحن بحاجة إلى جميع الأرقام على البطاقة. أين يمكن الحصول على المزيد؟ بسيط جدا
تحتوي جميع البطاقات على BIN - يجب أن تكون الأرقام الستة الأولى من بطاقات بنك معين من نفس النوع هي نفسها.

الخطوة 2. نحن نتسلق المتصفح و google "Qiwi BIN"

على الفور نكتشف أن الصندوق هو 489049.
والآن لدينا بالفعل 12 رقما! فقط 4 اليسار!

ولكن هنا تأتي الصعوبة.
لا تومض هذه الأرقام الأربعة في أي مكان ، ويبدو أنه لا يوجد مكان للحصول عليها.
ولكن ، بالطبع ، إذا حاولت بجد ، يمكنك أن تجد :)

الخطوة 3. العثور على آخر 4 أرقام في عداد المفقودين

للقيام بذلك ، نحتاج إلى حساب في Qiwi مع 1000r ومعرفة ماهية خوارزمية القمر .
دعنا نذهب في النظام.
إذا قمت بفتح أي عملية في Qiwi ، فسوف يعرض تاريخ الدفع ورقم الإيصال.
ربما خمن البعض بالفعل لماذا نحتاج 1 كيلو في الحساب.
نعم ، سنقوم باستبدال الأرقام بالترتيب بدلاً من الأرقام الأربعة المجهولة التي بقيت غير معروفة وإرسالها إلى أرقام البطاقات بالروبل!
وفي إحدى العمليات ، سوف نتلقى 1p واردة إلى الحساب حيث تكمن قيمة الروبل 10000 روبل.
يبقى فقط لمقارنة وقت إرسال الأموال.
في السابق ، كان من الممكن مطابقة أرقام التشغيل ، لكن الآن قاموا بإخفائها. وفعلوا ذلك بشكل صحيح.
والآن سيقول الأكثر يقظة أنه في الواقع 4 أرقام هي عمليات 10k ، وليس 1K. لذلك تحتاج إلى 10 آلاف روبل والكثير من الوقت للعثور على الأرقام الصحيحة 4.
وهذا ليس صحيحا تماما. أقدم لكم خوارزمية القمر!

خوارزمية Luhn هي خوارزمية لحساب رقم الشيك الخاص برقم البطاقة البلاستيكية وفقًا للمعيار ISO / IEC 7812. وهي ليست أداة تشفير ، ولكنها تهدف في المقام الأول إلى اكتشاف الأخطاء الناتجة عن تلف البيانات غير المقصود (على سبيل المثال ، عند إدخال رقم يدويًا البطاقات ، عند تلقي البيانات على رقم الضمان الاجتماعي عن طريق الهاتف). يسمح فقط بدرجة معينة من الموثوقية للحكم على عدم وجود أخطاء في مجموعة الأرقام ، ولكنه لا يسمح بالعثور على عدم الدقة المكتشف وتصحيحه.


إذا كان الأمر ممتعًا للغاية - google ، وسأخبرك بإيجاز عن الخوارزمية وكيف سيساعدنا ذلك.
تتيح لك هذه الخوارزمية تأكيد ما إذا كان رقم البطاقة صحيحًا أم لا. وهذا يعني أنه بعد تشغيل خيارات 10k الخاصة بنا من خلال هذه الخوارزمية ، يمكنك فقط ترك عدد البطاقات التي يحتمل أن تكون موجودة. خمن كم سيكون هناك؟
صحيح ، بالضبط 1K.

بالطبع ، كل هذا يبدو مفيدًا جدًا للقيام يدويًا ، لكن ما الذي يمنع البرنامج النصي البسيط من إنشاء خيارات 1 كيلو بايت هذه؟

فيما يلي بعض أمثلة تنفيذ ويكيبيديا:

مثال خوارزمية القمر على JS
function luhnAlgorithm(digits) { let sum = 0; for (let i = 0; i < digits.length; i++) { let cardNum = parseInt(digits[i]); if ((digits.length - i) % 2 === 0) { cardNum = cardNum * 2; if (cardNum > 9) { cardNum = cardNum - 9; } } sum += cardNum; } return sum % 10 === 0;} 


مثال خوارزمية القمر في PHP
 function luhnAlgorithm($digit) { $number = strrev(preg_replace('/[^\d]/', '', $digit)); $sum = 0; for ($i = 0, $j = strlen($number); $i < $j; $i++) { if (($i % 2) == 0) { $val = $number[$i]; } else { $val = $number[$i] * 2; if ($val > 9) { $val -= 9; } } $sum += $val; } return (($sum % 10) === 0); } 


نحتاج الآن إلى فرز خيارات 1K باستخدام الطريقة الموضحة أعلاه.
وفويلا - حصلنا على آخر 4 أرقام.
الآن لدينا الرمز الكامل للبطاقة وصلاحيتها.
بالطبع ، ليس لدينا رمز CVV (الرمز المكتوب على الجانب الخلفي) ، لكن في بعض الأماكن لا تكون هناك حاجة إليه.
على سبيل المثال الأمازون!
نعم ، نذهب إلى الأمازون ونطلب أي شيء بمساعدة البيانات الحديثة.
على سبيل المثال ، رموز Steam مقابل المال أو شيء من هذا القبيل. بشكل عام ، هناك شيء إلكتروني للبيع بسرعة على الإنترنت. سنخسر القليل من المال ، ولكن ليس أكثر من 20 ٪ ، على الأرجح.
هذا كل شئ! حصلت + 79k الربح!

لا تنس أن هذا لم يعد يعمل!


ولكن إذا وجدت شيئًا مشابهًا - أخبر Qiwi ، فسيتم إصلاحه (نأمل).
لقد وضعت ذلك لإظهار أنه يمكنك العثور على أشياء رائعة وثغرات أمنية دون أن تكون قادرًا على البرمجة. وللتنمية العامة.

حظا سعيدا للجميع :)

Source: https://habr.com/ru/post/ar463853/


All Articles