Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
web_exploit_detector — The Web Exploit Detector — это приложение на Node.js, используемое для обнаружения возможных заражений, вредоносного кода и подозрительных файлов в средах веб-хостинга. | Kitploit
Инструменты/GitHubGitHub/polaris64/web_exploit_detector
Сканеры уязвимостейАнализ КодаВеб-безопасностьАнализ вредоносных программ
GitHubpolaris64/web_exploit_detector

web_exploit_detector

The Web Exploit Detector — это приложение на Node.js, используемое для обнаружения возможных заражений, вредоносного кода и подозрительных файлов в средах веб-хостинга.

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт
86369 лет назадПроверено Kitploit

Детектор веб-эксплойтов

Логотип Web Exploit Detector

Введение

Детектор веб-эксплойтов — это приложение на Node.js (и NPM-модуль), используемое для обнаружения возможных заражений, вредоносного кода и подозрительных файлов в средах веб-хостинга. Это приложение предназначено для запуска на веб-серверах, обслуживающих один или несколько сайтов. Запуск приложения генерирует список файлов, которые потенциально заражены, вместе с описанием заражения и ссылками на онлайн-ресурсы, связанные с ним.

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

Приложение размещено здесь, на GitHub, чтобы другие могли извлечь из него пользу, а также чтобы другие могли внести свои собственные правила обнаружения.

Ссылки

  • Мой сайт: https://www.polaris64.net/
  • Мой блог по кибербезопасности, в котором есть статьи, описывающие некоторые из этих эксплойтов и способы их удаления: https://www.polaris64.net/blog/cyber-security
  • Связаться со мной
  • NPM-модуль

Установка

Обычные пользователи

Самый простой способ установить Web Exploit Detector — установить его как глобальный NPM-модуль:

npm install -g web_exploit_detector

Если вы используете Linux или другую Unix-подобную ОС, возможно, вам потребуется выполнить эту команду от root (например, sudo npm install -g web_exploit_detector).

Обновление

Модуль следует регулярно обновлять, чтобы все новейшие правила обнаружения были на месте. Запуск вышеуказанной команды всегда загружает последнюю стабильную (протестированную) версию. Чтобы обновить уже установленную версию, просто выполните следующее:

npm update -g web_exploit_detector

Опять же, возможно, вам придётся использовать команду sudo, как указано выше.

Технические пользователи

Вы также можете клонировать Git-репозиторий и запустить скрипт напрямую, следующим образом:

  1. git clone https://github.com/polaris64/web_exploit_detector
  2. cd web_exploit_detector
  3. npm install

Запуск

Из NPM-модуля

Если вы установили Web Exploit Detector как NPM-модуль (см. выше), то запуск сканера осуществляется простой командой с указанием пути к вашему веб-руту (расположению файлов вашего сайта):

wed-scanner --webroot=/var/www/html

Доступны и другие параметры командной строки — просто выполните wed-scanner --help, чтобы увидеть сообщение справки с их описанием.

Запуск скрипта таким образом выводит удобочитаемый результат в консоль. Это очень полезно, например, при запуске скрипта через cron, так как вывод можно отправлять по электронной почте при каждом выполнении скрипта.

Скрипт также поддерживает запись результатов в более удобный для машинной обработки формат JSON. Чтобы включить этот вывод, используйте аргумент командной строки --output.

Из клонированного Git-репозитория

Просто вызовите скрипт через node и укажите путь к вашему веб-руту следующим образом:

node index.js --webroot=/var/www/html

Рекурсивные снимки каталогов

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

Снимки

Снимок (как он используется в этих утилитах) — это JSON-файл, который перечисляет все файлы, а также содержит описание их содержимого на момент создания снимка. Если снимок был создан, например, в понедельник, а затем сайт был атакован во вторник, то последующее сравнение этого снимка с текущими файлами сайта покажет, что один или несколько файлов были добавлены, удалены или изменены. Таким образом, цель этих утилит — позволить создавать эти снимки и выполнять сравнения при необходимости.

Снимок хранит путь к каждому файлу вместе с SHA-256 хешем содержимого файла. Хеш, или дайджест, — это краткое представление сообщения, которым в данном случае является содержимое файла. Если содержимое файла изменяется, даже совсем незначительно, хеш становится полностью другим. Это хороший способ обнаружения любых изменений содержимого файла.

Использование

Следующие две утилиты также устанавливаются как часть Web Exploit Detector:

  • wed-generate-snapshot: эта утилита позволяет создать снимок для всех файлов (рекурсивно) в каталоге, указанном с помощью --webroot. Снимок будет сохранён в файл, указанный в опции --output.
  • wed-compare-snapshot: после создания снимка его можно сравнить с текущим содержимым того же каталога. Снимок для проверки указывается с помощью опции --snapshot. Базовый каталог для проверки хранится внутри снимка, но если базовый каталог изменился с момента создания снимка, можно использовать опцию --webroot.

Рабочий процесс

Снимки можно создавать так часто, как это необходимо, но, как правило, их следует создавать, когда сайт находится в чистом (не заражённом) состоянии и когда были внесены легитимные изменения. Для сайтов на CMS, таких как WordPress, снимки следует создавать регулярно, так как новые загрузки приведут к тому, что новое состояние будет отличаться от сохранённого снимка. Для сайтов, файлы которых никогда не должны меняться, можно создать один снимок и затем использовать его бессрочно, чтобы убедиться, что на самом деле ничего не меняется.

Использование в качестве модуля

Скрипт src/web-exploit-detector.js является ES6-модулем, который экспортирует набор правил как rules, а также ряд функций:

  • executeTests(settings): выполняет проверку эксплойтов на основе переданного объекта settings. Использование — смотрите в скрипте index.js.
  • formatResult(result): принимает один результат теста result из массива, возвращённого executeTests(), и генерирует строку с результатами, готовую к выводу для этого теста.
  • getFileList(path): возвращает массив файлов из базового пути path, используя readDirRecursive().
  • processRulesOnFile(file, rules): обрабатывает все правила из массива rules для одного файла file (строковый путь).
  • readDirRecursive(path): рекурсивная функция, которая возвращает Promise, разрешаемый массивом всех файлов в и подкаталогах.

Скрипт src/cli.js — это простой интерфейс командной строки (CLI) к этому модулю, используемый скриптом wed-scanner, поэтому его чтение покажет один из способов использования этого модуля.

Проект использует Babel для компиляции ES6-модулей из "src" в обычные JavaScript-модули в "lib". Если вы используете старую версию Node.js, модули можно подключать через require() из каталога "lib".

Сборка

Пакет содержит Babel в качестве dev-зависимости и скрипты "build" и "watch:build". При выполнении скрипта "build" (npm run build) ES6-модули из "./src" будут скомпилированы и сохранены в "./lib", откуда они подключаются скриптами CLI.

Каталог "./lib" включён в репозиторий, чтобы любой пользователь мог клонировать репозиторий и запустить приложение напрямую, без необходимости устанавливать dev-зависимости и собирать приложение.

Исключение результатов по правилам

Иногда правила, особенно помеченные тегом suspicion, могут опознать чистый файл как потенциальный эксплойт. Поэтому реализована система, позволяющая исключать файлы из проверки для определённого правила.

Скрипт wed-results-to-exceptions принимает выходной файл основного детектора (см. опцию --output) и позволяет поочерёдно исключать каждый файл для каждого конкретного правила. Все исключённые файлы сохраняются в файле wed-exceptions.json (в домашнем каталоге пользователя), который читается основным скриптом перед запуском сканирования. Если файл указан в этом файле, то все привязанные правила (по ID) будут пропущены при проверке этого файла.

Для получения инструкций по использованию просто выполните wed-results-to-exceptions. Предварительно вам понадобится выходной JSON-файл от предыдущего запуска основного детектора с использованием опции --output.

Для пользователей, работающих напрямую с Git-репозиторием, выполните node results_to_exceptions.js в корневом каталоге проекта.

Механизм правил

Приложение работает с использованием набора "правил", которые загружаются при запуске. Каждое правило состоит из ID, названия, описания, списка URL, тегов, флага устаревания и, что самое важное, набора тестов.

Каждый отдельный тест должен быть одним из следующих:

  • Регулярное выражение: простейший тип теста, любое значение, совпадающее с регулярным выражением, проходит тест.
  • Boolean колбэк: функция обратного вызова должна возвращать Boolean значение, указывающее, проходит ли значение тест. Колбэк может выполнять любые синхронные операции.
  • Promise колбэк: функция обратного вызова должна возвращать Promise, который разрешается Boolean значением, указывающим, проходит ли значение тест. Такой колбэк может выполнять любые асинхронные операции.

Поддерживаются следующие типы тестов:

  • "path": используется для проверки пути к файлу. Этот тест должен существовать и должен возвращать true, если путь к файлу считается соответствующим правилу.
  • "content": используется для проверки содержимого файла. Этот тест является необязательным, и содержимое файла будет читаться и передаваться только правилам, реализующим этот тип теста. Если тест является функцией, содержимое (строка) передаётся как первый аргумент, а путь к файлу — как второй, что позволяет тесту выполнять дополнительные операции с файлом.

Расширение правил

Поскольку веб-эксплойты постоянно развиваются и создаются новые, набор правил также необходимо обновлять. Поскольку я хочу несколько сайтов, я постоянно наблюдаю новые виды эксплойтов и буду добавлять новые правила по мере возможности. Я запускаю этот инструмент на своих серверах, поэтому, конечно, хочу, чтобы он был максимально функциональным!

Это подводит меня к причинам, по которым я сделал это приложение доступным в виде проекта с открытым исходным кодом: во-первых, чтобы вы и другие могли извлечь из него пользу, а во-вторых, чтобы мы все могли совместно добавлять правила обнаружения, чтобы приложение всегда было актуальным.

Внесение правил

Если вы обнаружили эксплойт, который не обнаруживается этим инструментом, сообщите мне об этом или, что ещё лучше, напишите собственное правило и добавьте его в сторонний набор правил (rules/third-party/index.js), а затем отправьте мне pull request.

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

Правила сгруппированы, но самый простой способ добавить своё правило — это добавить его в упомянутый выше сторонний набор. ID правил записываются в следующем формате: "author:type:sub-type(s):rule-id". Например, одно из моих правил — "P64:php:cms:wordpress:wso_webshell". "P64" — это я (автор), "php:cms:wordpress" — это группировка (правило, специфичное для PHP, для системы управления контентом (CMS) WordPress), а "wso_webshell" — это конкретный ID правила. При написании собственных правил старайтесь следовать этому формату и замените "P64" на своё имя пользователя GitHub или другой уникальный идентификатор.

Модульные тесты и линтинг

Проект содержит набор тестов Jasmine, которые можно запустить с помощью npm test. Также присутствует конфигурация ESLint, и ESLint можно запустить с помощью npm run lint.

Во время разработки тесты можно запускать при каждом изменении исходного файла, выполнив npm run watch:test. Для запуска тестов и ESLint можно использовать скрипт npm run watch:all.

Обратите внимание, что, если у вас ещё не установлены Jasmine и/или nodemon, вам следует выполнить npm install в непродуктивном режиме, чтобы убедиться, что dev-зависимости установлены.

Благодарности

Спасибо пользователю Reddit mayupvoterandomly за предложение функциональности снимков каталогов, добавленной в версии 1.1.0, а также за предложение новых правил, которые будут добавлены в ближайшее время.

Лицензия

Лицензия ISC

Copyright (c) 2017, Simon Pugnet

Настоящим предоставляется разрешение любому лицу, получившему копию данного программного обеспечения и связанных с ним файлов документации ("Программное обеспечение"), безвозмездно использовать Программное обеспечение без ограничения, включая, без ограничения, права на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также разрешать лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий:

Вышеуказанное уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ» БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ИНЫЕ ОБЯЗАТЕЛЬСТВА, КАК В ИСКЕ О НАРУШЕНИИ ДОГОВОРА, ГРАЖДАНСКОМ ПРАВОНАРУШЕНИИ ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКШИЕ ИЗ ИЛИ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ ИЛИ ПРОИЗВОДИТЕЛЬНОСТЬЮ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

Скачать инструмент
path