Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Besprechen Sie die Lücken einer Website für Gruppenkäufe

Besprechen Sie die Lücken einer Website für Gruppenkäufe

王林
王林nach vorne
2021-02-20 10:58:222538Durchsuche

Besprechen Sie die Lücken einer Website für Gruppenkäufe

Vorwort:

Letzten September kaufte ein Kollege auf einer Gruppenkauf-Website ein Hot-Pot-Menü, und dann kaufte er es fast jeden Tag. Am Neujahrstag startete die Website für Gruppeneinkäufe die Aktivität „VIP-Mitglieder erhalten rote Umschläge für 0 Yuan“. Wer erhält nicht gerne rote Umschläge? Also habe ich mich darauf eingelassen.

Also habe ich mich entschlossen registriert, auf „Kaufen“ geklickt, den Warenkorb eingegeben und auf „Bestätigen“ geklickt, nicht wahr? Warum heißt es in der Warnung „Diese Veranstaltung ist nur VIP-Mitgliedern vorbehalten“? Meine erste Reaktion war, mir den Quellcode der Seite anzusehen (da die Veranstaltung beendet ist und ich die Kaufseite nicht betreten kann, muss ich also Pseudocode verwenden, um sie hier darzustellen):

//确认订单按钮的点击事件function btn_click(){     
    ajax获取当前用户的类型    
        如果不是VIP,alert("本活动仅限VIP会员参与");     
            否则 form1.submit();
            }

Dann habe ich in die Adressleiste etwas eingegeben : javascript:form1 .submit(); Enter! Rufen Sie die Zahlungsseite auf und klicken Sie dann auf OK, okay? Kauf erfolgreich! Ich habe einen roten 5-Yuan-Umschlag bekommen!

Besprechen Sie die Lücken einer Website für Gruppenkäufe

So großartig! ! ! Ich habe ein neues Konto registriert, die oben genannten Schritte wiederholt und erfolgreich einen roten 5-Yuan-Umschlag erhalten.

Ich habe dem Kundenservice sofort eine Nachricht hinterlassen, um diesen Fehler zu erklären, aber sie haben mir bis heute nicht geantwortet, haha.

Der entscheidende Punkt dieser Sicherheitslücke besteht darin, dass der Entwickler vergessen hat, im Hintergrundcode von form1.submit() festzustellen, ob der aktuelle Benutzer ein VIP-Mitglied ist, und sich nur auf die Javascript-Überprüfung verlassen hat.

Die Front-End-Verifizierung nützt nichts, Sie können sie komplett umgehen, die Back-End-Verifizierung ist das Wichtigste! !

Mit dem, was ich am Morgen gewonnen hatte, suchte ich am Abend des 1. weiter nach Schlupflöchern auf anderen Gruppenkauf-Websites und tatsächlich fand ich eine ernstere.

Die Website für Gruppenkäufe veranstaltete auch eine Neujahrslotterie, bei der die Teilnahme kostenlos war. Nach dem Kauf musste ich Freunde einladen, an der Veranstaltung teilzunehmen, um die Chance zu haben, goldene Eier zu zerschlagen. Wenn du einen Freund einlädst, erhältst du eine weitere Chance, wie auf dem Bild zu sehen ist:

Besprechen Sie die Lücken einer Website für Gruppenkäufe

Sobald ich auf das goldene Ei geklickt habe, kam die Meldung „Es gibt keine weiteren Gewinnspielmöglichkeiten, bitte lade Freunde ein!“, ähm, Es ist wieder Javascript? Schauen wir uns zuerst den Code an:

Besprechen Sie die Lücken einer Website für Gruppenkäufe

Dies ist das Klickereignis des goldenen Eies. Es gibt eine Seite lottery1.php, auf die über AJAX zugegriffen wird, und die zu übergebende Zufallsvariable sollte die Gelegenheit für den aktuellen Benutzer sein das Ei zerschlagen.

(Teilen von Lernvideos: Einführung in die Programmierung)

Ich habe versucht, direkt auf lottery1.php?chance=1 zuzugreifen, was eine Fehlerzeichenfolge zurückgegeben hat, lottery1.php?chance=0 =- 1. Gibt auch einen Fehler zurück. Hat es keine Auswirkung? Ich habe die Golden Egg Smashing-Seite aktualisiert, wow! !

Besprechen Sie die Lücken einer Website für GruppenkäufeIch habe -1 überschritten und es hat einen Überlauf verursacht? Ich habe versucht, ein paar zu zerschlagen und jedes Mal Gutscheine bekommen! ! So großartig. Dann habe ich versucht, mit dem Gutschein eine Bestellung aufzugeben, und konnte erfolgreich ein paar Dollar sparen

Aber man kann nur einen Gutschein für eine Bestellung verwenden, haha ​​​​(die Testbestellung habe ich am Ende natürlich storniert). , ich bin nicht so böse, Wow Kaka)

Ich habe sofort den Kundendienst kontaktiert, und es stellte sich heraus, dass QQ nach Feierabend nicht online war und ich telefonisch nicht durchkommen konnte, also musste ich eins hinterlassen Nachricht.

Was kommt als nächstes? Zerschmettere die Eier! Was das 4,2-Milliarden-Goldene-Ei betrifft, schreiben Sie ein Stück JS und es wird automatisch zerschlagen! Bisher wurden insgesamt 3588 goldene Eier zerschlagen, davon waren es immerhin mehr als 2000, die ich selbst zerschlagen habe. Wow, ich habe eine Menge Gutscheine bekommen:

185 Seiten insgesamt, haha, das ist ziemlich spektakulär. von! ! !

Besprechen Sie die Lücken einer Website für GruppenkäufeAls ich am 2. den Code der Gruppenkauf-Website noch einmal überprüfte, stellte ich ein ernsteres Problem fest:

Es gibt eine solche Methode in JS

Auf den ersten Blick scheint es damit zu tun zu haben Geld, die ID des eingehenden Benutzers und den Geldbetrag, versuchen Sie herauszufinden, welche Auswirkungen dies hat.

Besprechen Sie die Lücken einer Website für GruppenkäufeWie erhalte ich die Benutzer-ID? Keine Sorge, auf der Seite steht:

Diese 96204 ist die ID meines aktuellen Kontos. Nach dem Besuch wurde „Offline-Aufladung erfolgreich“ zurückgegeben, wow, so großartig? Auf der Aufladeseite gibt es keine Berechtigungsüberprüfung?

Besprechen Sie die Lücken einer Website für GruppenkäufeIch habe den Kontostand überprüft und tatsächlich war die Aufladung erfolgreich:

Mein Bruder hat einen Kontostand von 20.000, wow! ! Diese Sicherheitslücke ist zu schwerwiegend. Hinterlassen Sie umgehend eine Nachricht an den Kundendienst. Kurz nachdem ich die Nachricht hinterlassen hatte, rief mich ihr Entwickler an, um mit mir darüber zu sprechen

Das Schwachstellenproblem von Smashing the Golden Egg, teilen Sie ihm einfach gemeinsam die neu entdeckte Schwachstelle mit. Entwickler haben es am Neujahrstag, nach 22 Uhr, immer noch schwer, den Code zu ändern.

Nach der Korrektur sagte er, dass der Chef mir vielleicht ein paar Geschenke machen würde, ich freue mich wirklich darauf, haha.

Schließlich hat er meinen Kontostand ausgeglichen und ich habe in meinem Herzen geschrien: Nein, nein, meine 20.000 Yuan~~~~~~~~

Zusammenfassend: Die Verifizierung an der Rezeption ist unzuverlässig. Der Hintergrund muss bei Bedarf überprüft werden. Die an den Hintergrund übergebenen Daten müssen auf ihre Gültigkeit hin überprüft werden. Parameter, die nicht übergeben werden müssen, wie z , das fällt mir nicht ein. Verstehen Sie, warum die Egg-Breaking-Möglichkeiten des aktuellen Benutzers an den

-Hintergrund übergeben werden sollten und warum sie nicht direkt aus der Datenbank gelesen werden können? Die Benutzer-ID sollte nicht im Klartext erscheinen. Darüber hinaus müssen wir uns vor XSS-Cross-Site-Scripting-Angriffen schützen (normalerweise durch Beurteilung des Host-Headers).

Meine Website: http://i.goto327.top:85/

Verwandte Empfehlungen:

Website-Sicherheit

Das obige ist der detaillierte Inhalt vonBesprechen Sie die Lücken einer Website für Gruppenkäufe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen