Логотип
Главная | Статьи | Пишем чекер уязвимостей на Python: от идеи до продакшена с асинхронными запросами и массовым сканированием (5000+ хостов/час)
Пишем чекер уязвимостей на Python: от идеи до продакшена с асинхронными запросами и массовым сканированием (5000+ хостов/час)

Пишем чекер уязвимостей на Python: от идеи до продакшена с асинхронными запросами и массовым сканированием (5000+ хостов/час)

10 июня, 2025

39

Эй, привет, хакер! Сегодня мы с тобой замутим крутой инструмент — чекер уязвимостей на Python, который будет сканировать тысячи хостов в час и находить дыры быстрее, чем ты успеешь допить свой энергетик. Мы используем асинхронные запросы с aiohttp, чтобы всё летало на максималках, и я дам тебе готовый шаблон для массового сканирования. Готов? Погнали!

Зачем это нужно и что мы строим?

Чекер уязвимостей — это твой швейцарский нож для поиска слабых мест в веб-приложениях. Будь то открытые админки, уязвимости вроде SQL-инъекций или просто небрежно оставленные файлы config.php — наш скрипт будет проверять хосты пачками. Основная фича — скорость: за счёт асинхронности мы пробьём 5000+ хостов в час даже на среднем железе. А ещё это шаблон, который ты сможешь кастомизировать под свои задачи.

Что сделаем:

  • Настроим асинхронные HTTP-запросы с aiohttp.
  • Реализуем массовое сканирование с лимитами на параллельные соединения.
  • Добавим логирование и обработку ошибок.
  • Дадим пример проверки на конкретную уязвимость (например, поиск /admin).

Инструменты и подготовка

Нам нужен Python 3.7+ (асинхронность требует свежих версий), а также несколько библиотек. Устанавливаем всё через pip:

  • aiohttp — для асинхронных HTTP-запросов.
  • asyncio — для управления асинхронными задачами.
  • colorama — чтобы вывод в консоль был красивым и цветным (для стиля, бро).

Также подготовь список хостов для сканирования — текстовый файл targets.txt, где каждая строка — это IP или домен (например, http://example.com или просто example.com).

Пишем код: основа асинхронного чекера

Давай начнём с базового скрипта. Мы создадим асинхронный клиент, который будет отправлять запросы пачками, проверять ответы и логировать результаты. Вот готовый шаблон:

Как это работает?

  1. Асинхронность: Мы используем aiohttp и asyncio, чтобы отправлять запросы параллельно. Параметр MAX_CONCURRENT ограничивает количество одновременных соединений, чтобы не перегрузить сеть или сервер.
  2. Проверка уязвимостей: В функции check_vuln мы делаем запрос на /admin. Если код ответа 200, считаем, что админка открыта. Это базовый пример — можешь заменить на проверку других путей или уязвимостей.
  3. Логирование: Каждый результат (успех, ошибка, таймаут) записывается в консоль с цветами и в файл results.txt.
  4. Скорость: На моём тестовом VPS с 2 ядрами и 4 ГБ RAM этот скрипт пробивает ~5000 хостов за час. Если у тебя железо мощнее или сеть лучше, результат будет ещё круче.

Лайфхаки для улучшения

  • Настройка таймаутов и лимитов: Если сеть слабая, уменьши MAX_CONCURRENT до 50 или даже 20. Если хосты медленные, увеличь TIMEOUT.
  • Прокси и ротация IP: Чтобы не словить бан, добавь поддержку прокси. В aiohttp это делается через параметр proxy в session.get.
  • Расширь проверки: Добавь другие уязвимости. Например, проверяй /wp-admin для WordPress или /phpinfo.php для конфиденциальной инфы.
  • User-Agent: Подменяй юзер-агент, чтобы не палиться как бот:

Пример кастомизации: проверка SQL-инъекций

Давай добавим базовую проверку на SQL-инъекцию. Мы будем отправлять запрос с параметром вроде id=1' и искать в ответе ошибки базы данных (например, SQL syntax error):

Просто добавь эту функцию и вызови её в main() вместо или вместе с check_vuln.

Как запустить на продакшене?

  1. Подготовь список хостов: Сделай targets.txt с доменами или IP. Если их тысячи, разбей на части, чтобы не перегружать память.
  2. Запусти скрипт: Выполни python script.py. Убедись, что всё настроено (таймауты, лимиты).
  3. Анализируй результаты: Открывай results.txt и ищи строки с [VULN] — это твои цели для дальнейшей работы.
  4. Масштабируй: Используй VPS или облако для скорости. Раздели задачи между несколькими машинами, если хостов миллионы.

Заключение

Ты только что замучил чекер, который жёстко сканирует 5000+ хостов в час и находит уязвимости на автомате. Это базовый шаблон, но с твоей фантазией он превратится в настоящую пушку. Добавляй новые проверки, играйся с параметрами, подключай прокси — делай, что хочешь, но помни: используй это ответственно. Мы тут не для хаоса, а для знаний и кайфа от кода.