• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Пишем простой спамер web form. Часть 1

24522
Привет codeby.net!
С наступающим новым годом и рождеством.

Суть данной статьи показать еще один вектор атаки которая не сложна в реализации но достаточно эффективная при правильном использовании. Постараюсь максимально простыми словами описать как самому написать спамер web form.

Бывает случаи когда нужно подпортить бизнес в интернете. Ситуации когда такое может случиться бывают разные. Речь пойдет о сайтах такого рода как интернет магазины или сервисы по бронированию чего либо, суть которых обработка заказов через свой сайт. Одним из вектором атаки может стать спам. Суть которого заключалась сделать так чтобы стало невыносимо обрабатывать заказы. В свою очередь это приведет к ухудшению работы сервиса так как скорость ответа реальным клиентам упадет, а когда они начнут бороться со спамом и усложнять форму это приведет к потери реальных клиентов.

В данной статье рассмотрим простой пример без усложнений в виде капчи, подтверждение по телефону и т.д. Я хочу показать общий принцип реализации, если вам данная тема будет интересна то можно будет в нее углубиться.

Для того чтобы реализовать задуманное нам понадобиться и библиотека .

Предположим сайт который мы хотим заспамить находиться по адресу на нем есть форма "заказа трансфера". Она включает в себя четыре поля:

24523

Перед тем как начать писать код нам надо собрать некоторые данные о самой форме.

Для того чтобы понять куда нам надо отсылать данные и какие данные нужны воспользуемся devtools который входит в состав любого браузера. В chrome его можно открыть нажав F12.
Перейдем на вкладку Network и очистим все запросы чтобы легче было найти нужный запрос после отправки формы.

24524

Не закрываем devtools заполняем форму и нажимаем отправить. После того как нажали отправить сразу побегут запросы. Наша задача найти нужный. Для более быстрого поиска отфильтруйте по методам, post методы должны быть сверху.

24525

Если данной колонки нет нажимаем правой кнопкой мыши на status и выбираем method. Затем начинаем искать запрос. Нажимаем на каждый запрос и ищем содержимое form data которое будет соответствовать заполненным данным при оправке.

24526

В Form Data мы видим какие данные нам потребуется передать чтобы все конкретно отработало. Чуть выше во вкладке General показано на какой url был отправлен запрос.

24527

Позже он нам понадобиться как и имена параметров в Form Data. Также на вкладке Response мы можем увидеть ответ сервера. На каждой форме ответ может быть разные. В моем случаи это json который содержит {"status":true,"title":"Мы получили ваше сообщение","message":"Мы свяжемся с вами как можно скорее. спасибо"}. В последующем я воспользуюсь данным ответом что бы понять успешно ли был выполнен запрос.

Request URL: https://site.local/contact
Response: {"status":true,"title":"Мы получили ваше сообщение","message":"Мы свяжемся с вами как можно скорее. спасибо"}
Form Data: ContactForm[subject], ContactForm[name], ContactForm[phone], ContactForm[email], ContactForm[body]

И так на этом сбор данных закончен. Теперь у нас есть все что бы приступить к написанию спамера.

Python:
import json
import requests

# Объявляем url на который будет отправляться данные
url = "https://site.local/contact"

# Формируем post данные требуемые для отправки формы
post_data = {'ContactForm[subject]': 'Трансфер', 'ContactForm[name]': 'Даниил Аль', 'ContactForm[phone]': '7318293112', 'ContactForm[email]': 'pocecuyoro@cliptik.net', 'ContactForm[body]': 'Test'}

# Количество запросов
lime = 5
# Количество выполненных запросов
inc = 0

while lime > inc:
    # Выполняем запрос
    r = requests.post(url, data=post_data)
    # Декодируем json который пришел к нам в ответ
    data = json.loads(r.text)

    # Проверяем статус ответа, если true тогда пишем в консоль ОК
    # если false то выводим содержимое ответа в консоль и прерываем цикл
    if data['status']:
        inc += 1
        print('OK')
    else:
        print(r.text)
        break

Вот и готов наш спамер) занял он менее 30 строк кода с комментариями. Для реальной задачи этого будет недостаточно, потребуется генерировать уникальные правдоподобные данные что бы их не могли отличить от реального клиента. Но суть статьи не в этом. Я хотел ознакомить вас с принципом реализации подобных вещей так как если он вам будет понятен то реализовать грамотный спамер не составит труда.

В какой то момент данный спамер перестанет работать, так как добавят капчу или подтверждение по sms. Но это не проблема, подобные меры защиты обходяться в считанные минуты или часы, в зависимости от задачи и требует небольших вложений на оплату таких сервисов как .

Для того что бы бота было сложнее вычислить можно имитировать поведения человека с использованиям . Если будет интересно могу описать как сделать простой спамер web form с использованием .
 
Последнее редактирование:

socks2019

New member
02.01.2019
2
0
BIT
0
Да и генерация либо забор контента с какого-нибудь форума.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!