Avant-propos :
En septembre dernier, mon collègue a acheté un plat de fondue sur un site d'achats groupés, puis il l'a acheté presque tous les jours. Le jour du Nouvel An, le site d'achats groupés a lancé l'activité « Les membres VIP reçoivent des enveloppes rouges pour 0 yuan ». Qui n'aime pas recevoir des enveloppes rouges ? Alors je me suis impliqué là-dedans.
Alors je suis entré de manière décisive pour m'inscrire, j'ai cliqué pour acheter, je suis entré dans le panier et j'ai cliqué pour confirmer la commande, hein ? Pourquoi l'alerte indique-t-elle « Cet événement est réservé aux membres VIP uniquement » ? Ma première réaction a été de regarder le code source de la page (comme l'événement est terminé et que je ne peux pas accéder à la page d'achat, je dois utiliser un pseudo code pour l'exprimer ici) :
//确认订单按钮的点击事件function btn_click(){ ajax获取当前用户的类型 如果不是VIP,alert("本活动仅限VIP会员参与"); 否则 form1.submit(); }
Puis j'ai Tapé dans la barre d'adresse:javascript:form1.submit(); Enter! Accédez à la page de paiement, puis cliquez sur OK, d'accord ? Achat réussi ! J'ai reçu une enveloppe rouge de 5 yuans !
Génial ! ! ! J'ai créé un nouveau compte et répété les étapes ci-dessus, et j'ai reçu avec succès une enveloppe rouge de 5 yuans.
J'ai immédiatement laissé un message au service client pour expliquer ce bug, mais ils ne m'ont pas répondu jusqu'à aujourd'hui, haha.
Le point clé de cette vulnérabilité est que le développeur a oublié de déterminer si l'utilisateur actuel est un membre VIP dans le code d'arrière-plan de form1.submit() et s'est uniquement appuyé sur la vérification javascript.
La vérification front-end ne sert à rien, vous pouvez la contourner complètement, la vérification back-end est la plus importante ! !
Avec ce que j'ai gagné dans la matinée, j'ai continué à chercher des failles sur d'autres sites d'achats groupés dans la nuit du 1er, et bien sûr j'en ai trouvé une plus sérieuse.
Le site d'achats groupés a également organisé une loterie du Nouvel An pour casser des œufs d'or. La participation est également gratuite. Après l'achat, j'ai découvert que je devais inviter des amis à participer à l'activité pour avoir la chance d'y participer. écraser les œufs d'or. Inviter un ami vous donnera une chance supplémentaire, comme le montre l'image :
Dès que j'ai cliqué sur l'œuf d'or, l'alerte disait "Voilà". il n'y a plus d'opportunités de loterie, va inviter des amis !", euh, c'est encore du javascript ? Jetez d'abord un œil au code :
Il s'agit de l'événement de clic de l'œuf d'or. Il y a une page lottery1.php accessible en utilisant AJAX, et la variable chance d'être. passé devrait être C'est l'opportunité révolutionnaire dont dispose l'utilisateur actuel.
(Partage de vidéos d'apprentissage : Introduction à la programmation)
J'ai essayé d'accéder directement à lottery1.php?chance=1 et la chaîne d'erreur a été renvoyée, lottery1.php ?chance= 0 renvoie également une erreur, lottery1.php?chance=-1, et
renvoie une erreur. Cela n'a-t-il aucun effet ? J'ai rafraîchi la page Golden Egg Smashing, wow ! !
J'ai passé -1 et ça a provoqué un débordement ? J'ai essayé d'en casser quelques-uns et j'ai reçu des bons à chaque fois ! ! Tellement génial. Ensuite, j'ai essayé d'utiliser le bon pour passer une commande, et j'ai réussi à économiser quelques dollars
Cependant, vous ne pouvez utiliser qu'un seul bon pour une commande, haha (bien sûr, j'ai annulé. la commande test à la fin, et je n'ai toujours pas si mal, wakaka)
J'ai immédiatement contacté le service client, et il s'est avéré qu'après avoir quitté le travail, QQ n'était pas en ligne et je n'ai pas pu obtenir. au téléphone, j'ai donc dû laisser un message.
Quelle est la prochaine étape ? Écrasez les œufs ! Quant à l'œuf d'or de 4,2 milliards, écrivez un morceau de JS et il sera brisé automatiquement ! Jusqu'à présent, un total de 3588 œufs d'or ont été brisés, dont au moins plus de 2000 ont été brisés par moi. Wow Kaka
a reçu beaucoup de bons :
Un total de 185 pages, haha, assez spectaculaire ! ! ! Le 2, lorsque j'ai revérifié le code du site d'achat groupé, j'ai trouvé un problème plus sérieux : Il existe une telle méthode en JS À première vue, cela semble être lié à l'argent. Entrez l'identifiant de l'utilisateur et le montant d'argent et essayez de voir quel effet cela a. Comment obtenir l'identifiant utilisateur ? Ne vous inquiétez pas, il y a : Ce 96204 est l'identifiant de mon compte courant Après l'avoir visité, il a renvoyé "Recharge hors ligne réussie", wow, tellement génial ? Il n'y a pas de vérification d'autorisation sur la page de recharge ? J'ai vérifié le solde du compte, et bien sûr, la recharge a réussi : Frère a un solde de 20 000, wow ! ! Cette vulnérabilité est trop fatale. Laissez immédiatement un message au service client. Juste après avoir laissé le message, leur développeur m'a appelé pour en discuter avec moi
Concernant le problème de vulnérabilité lié à la destruction de l'œuf d'or, je viens de lui parler ensemble de la vulnérabilité nouvellement découverte. Les développeurs ont la vie dure. Le jour du Nouvel An, après 22 heures, il doit encore changer le code.
Après la correction, il a dit que le patron pourrait m'offrir des cadeaux, j'ai vraiment hâte, haha.
Finalement, il a remis le solde de mon compte à zéro, et j'ai crié dans mon cœur : Non, non, mes 20 000 yuans~~~~~~~~
Pour résumer : Le front- la vérification finale n'est pas fiable et le back-end doit être vérifié si nécessaire ; les autorisations d'accès doivent être ajoutées à la page de gestion ; les données transmises au back-end doivent être
pour la vérification de la légalité ; Si vous ne le transmettez pas, par exemple, pour le cassage d'œufs, je ne comprends pas pourquoi les opportunités de cassage d'œufs appartenant à l'utilisateur actuel devraient être transmises à l'arrière-plan
Can'. Ne peut-il pas être lu directement à partir de la base de données ? L'ID utilisateur ne doit pas apparaître en texte clair. De plus, nous devons nous prémunir contre les attaques de scripts cross-site XSS (généralement en jugeant l'en-tête de l'hôte)
Mon site Web : http://i.goto327.top:85/
Recommandations associées : Sécurité du site Web
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!