Entrée
Bonjour encore.
Cette fois, l'article ne soulèvera pas de questions «sérieuses».
Ce sera une histoire sur la façon dont, sans connaître la programmation, mais étant assez averti et attentif, vous pouvez trouver une vulnérabilité grave qui, par exemple, vous permettra de débiter tout l'argent d'un compte avec uniquement un nom d'utilisateur et un mot de passe (lire, contourner l'authentification à deux facteurs ou même confirmation par SMS).
Pour le moment, Qiwi a déjà réussi à le patcher, je vais donc essayer de renforcer les explications avec des captures d'écran modernes, expliquant parfois à quoi il ressemblait il y a 2,5 ans.
Maintenant au point
Disons que vous avez un nom d'utilisateur: le mot de passe du portefeuille Qiwi de quelqu'un d'autre.
Disons qu'il y a 100 000 roubles.
Et vous voulez tellement en prendre possession.
Mais vous ne pouvez pas simplement radier de l'argent - vous avez besoin d'une confirmation par SMS.
Mais nous sommes intelligents, cela ne nous arrêtera pas.
Étape 1. Connectez-vous à votre compte et créez-y une carte virtuelle.Nous voyons une telle image

Il semble que nous ayons très peu d'informations. Seuls les 4 derniers chiffres de la carte et la durée de la carte.
Mais
avant il y avait 6 (!) Derniers chiffres de la carte . Autrement dit, 10 autres chiffres étaient inconnus.
Et nous avons besoin de tous les numéros sur la carte. Où trouver plus? Très simple.
Toutes les cartes ont un BIN - les 6 premiers chiffres des cartes d'une certaine banque du même type doivent être les mêmes.
Étape 2. Nous montons dans le navigateur et google "Qiwi BIN"Nous découvrons immédiatement que le bac est le 489049.
Et maintenant, nous avons déjà 12 chiffres! Il ne reste que 4!
Mais voici la difficulté.
Ces 4 chiffres ne scintillent nulle part et, semble-t-il, il n'y a nulle part où les obtenir.
Mais, bien sûr, si vous essayez dur, vous pouvez trouver :)
Étape 3. Trouvez les 4 derniers chiffres manquantsPour ce faire, nous devons avoir un compte à Qiwi avec 1000r et savoir ce qu'est l'
algorithme de la
lune .
Allons dans l'ordre.
Si vous ouvrez une opération dans Qiwi, elle affiche la date de paiement et le numéro de reçu.
Peut-être que certains ont déjà deviné pourquoi nous avons besoin de 1k dans le compte.
Oui, nous remplacerons les numéros dans l'ordre au lieu des 4 chiffres inconnus qui restent inconnus et les enverrons aux numéros de carte en roubles!
Et dans l'une des opérations, nous recevrons un 1p entrant sur le compte où se trouvent les 100k roubles précieux.
Il ne reste plus qu'à comparer le moment de l'envoi d'argent.
Auparavant, il était possible de faire correspondre les numéros d'opération, mais maintenant ils l'ont masqué. Et ils l'ont bien fait.
Et maintenant, les plus attentifs diront qu'en fait, 4 chiffres sont des opérations de 10k, pas 1k. Il vous faut donc 10 000 roubles et beaucoup de temps pour trouver les 4 bons chiffres.
Et ce n'est pas tout à fait vrai. Je vous présente l'
algorithme de la
lune!L'algorithme de Luhn est un algorithme pour calculer le chiffre de contrôle d'un numéro de carte en plastique conformément à ISO / IEC 7812. Ce n'est pas un outil cryptographique, mais est principalement destiné à détecter les erreurs causées par une corruption de données par inadvertance (par exemple, lors de la saisie manuelle d'un nombre cartes, lors de la réception de données sur le numéro de sécurité sociale par téléphone). Il ne permet qu'avec un certain degré de fiabilité de juger de l'absence d'erreurs dans le bloc de nombres, mais ne permet pas de rechercher et de corriger l'inexactitude découverte.
Si c'est très intéressant - google, et je vais vous parler brièvement de l'algorithme et comment il nous aidera.
Cet algorithme vous permet de confirmer si le numéro de carte est valide. Autrement dit, après avoir exécuté nos options 10k via cet algorithme, vous ne pouvez laisser que le nombre de cartes potentiellement existantes. Devinez combien il y en aura?
À droite, exactement 1k.
Bien sûr, tout cela semble très pratique à faire manuellement, mais qu'est-ce qui empêche un simple script de générer ces options très 1k?
Voici quelques exemples d'implémentation de Wikipedia:
Exemple d'algorithme de lune sur JSfunction 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;}
Exemple d'algorithme de lune en 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); }
Maintenant, nous devons trier ces options 1k en utilisant la méthode que j'ai décrite ci-dessus.
Et le tour est joué - nous avons obtenu les 4 derniers chiffres.
Nous avons maintenant le code complet de la carte et sa validité.Bien sûr, nous n'avons pas de code CVV (celui qui est écrit au verso), mais à certains endroits, il n'est pas nécessaire.
Par exemple Amazon!
Oui, nous allons sur Amazon et commandons n'importe quoi à l'aide de données nouvellement créées.
Par exemple, Steam code pour de l'argent ou quelque chose comme ça. En général, il y a quelque chose d'électronique à vendre rapidement sur Internet. Nous perdrons un peu d'argent, mais pas plus de 20%, très probablement.
C'est tout! Vous avez + 79k de profit!
N'oubliez pas que cela ne fonctionne plus!
Mais si vous trouvez quelque chose de similaire - dites à Qiwi, ils le répareront (espérons-le).
Je l'ai aménagé pour montrer que vous pouvez trouver des trucs sympas et des failles de sécurité sans même pouvoir programmer. Et pour le développement général.
Bonne chance à tous :)