1. О программе

Программа разработана для тестирования безопасности веб-сайтов, использующих различные системы управления содержимым (CMS), такие, как WordPress, Opencart, Magento, и другие. Реализована в клиент-серверной архитектуре, где сервер управляет процессом и отправляет задания, а клиенты выполняют сканирование и тестирование на уязвимости.

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

Панель работает только в браузере Google Chrome.

В программе предусмотрены два режима работы, которые отличаются способом обработки строк и комбинаций (логин + пароль).

1.1. Стандартный режим

В этом режиме программа проходит по каждой строке из списка и для каждой строки ищет подходящую комбинацию. Для каждой строки выполняется поиск по всему списку комбинаций.

Преимущества:
  • Хорошо подходит для работы с минимальным кол-вом комбинаций.
  • 1.2. Комбинационный режим:

    В этом режиме программа берет одну комбинацию и проходит по всем строкам. Таким образом, поиск будет выполняться для каждой комбинации по всем строкам.

    Преимущества:
  • Хорошо подходит для работы с большим кол-вом комбинаций.
  • Минимизирует возможность попадания в бан.
  • 2. Установка и запуск

    Установка приложения в зависимости от операционной системы.

    2.1. Установка Java

    Для Linux (Рекомендуемая OS - Ubuntu 22):

    1. Откройте терминал на вашем компьютере с Linux или подключитесь к серверу через SSH (см. пункт 2.2.). Далее, введите команду:
    2. sudo apt update
    3. Установите OpenJDK 11:
    4. sudo apt install openjdk-11-jdk
    2.2. Инструкция по работе с программами WinSCP и PuTTY

    WinSCP — это программа для безопасного копирования файлов между вашим компьютером и удалённым сервером с использованием протоколов SFTP или FTP.

    Шаги для работы с WinSCP:
    1. Скачайте и установите WinSCP:

      Перейдите на официальный сайт WinSCP и скачайте установочный файл. Запустите установку и следуйте инструкциям на экране.

    2. Запуск программы:

      После установки откройте WinSCP.

    3. Настройка соединения:

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

      • File protocol: выберите SFTP (или FTP, если сервер поддерживает только FTP).
      • Host name: введите адрес вашего сервера (например, example.com).
      • Port number: обычно это 22 для SFTP, либо 21 для FTP.
      • Username и Password: введите имя пользователя и пароль, которые вам предоставил администратор сервера.
    4. Подключение к серверу:

      Нажмите кнопку Login. WinSCP подключится к серверу и откроет два окна:

      • Слева — файлы на вашем компьютере.
      • Справа — файлы на удалённом сервере.
    5. Передача файлов:

      Чтобы загрузить файл с вашего компьютера на сервер, просто перетащите его из левого окна в правое. Чтобы скачать файл с сервера на ваш компьютер, перетащите его из правого окна в левое.

    6. Завершение работы:

      Когда закончите работу, нажмите Exit в меню или закройте программу.

    PuTTY — это терминальный клиент, который позволяет вам подключаться к удалённым серверам по протоколам SSH, Telnet или другие. Он используется для работы в командной строке на удалённом сервере.

    Шаги для работы с PuTTY:
    1. Скачайте и установите PuTTY:

      Перейдите на официальный сайт PuTTY и скачайте установочный файл. Запустите установку и следуйте инструкциям.

    2. Запуск программы:

      Откройте PuTTY. В появившемся окне вы увидите поле для ввода адреса хоста.

    3. Настройка подключения:

      В поле Host Name (or IP address) введите IP-адрес или доменное имя удалённого сервера (например, example.com).

      Убедитесь, что выбран SSH в разделе Connection type.

      Если вам нужно изменить порт, по умолчанию для SSH это порт 22, но его можно изменить, если сервер использует другой порт.

    4. Подключение к серверу:

      Нажмите кнопку Open для подключения к серверу.

    5. Ввод данных для входа:

      При первом подключении вас попросят подтвердить безопасность соединения. Нажмите Yes, чтобы продолжить. Затем вам будет предложено ввести имя пользователя (например, root или user) и пароль (не будет видно, как вы вводите, это нормально).

    6. Работа с сервером:

      После подключения вы попадёте в командную строку на удалённом сервере. Теперь вы можете выполнять команды, например, ls для просмотра содержимого текущей директории или cd для смены директории.

    7. Завершение работы:

      Чтобы выйти из терминала, наберите команду exit и нажмите Enter. Закройте окно PuTTY.

    2.3. Запуск интерфейса

    Поместите папку с проектом в удобную для вас директорию (обычно используется "/home/").

    1. Перейдите в каталог "server/config" и откройте файл "config.json".
    2. Измените значение "port" на порт, на котором будет работать клиент (обычно используется 7000 порт).
    3. В этом же каталоге откройте файл "token.json".
    4. Измените значение "token" на свой токен(пароль) для последующей аутентификации.
    5. Далее, для linux: Откройте терминал на вашем компьютере.
    6. Перейдите в каталог "server".
    7. Выполните следующую команду для запуска приложения:
    8. java -jar server.jar
    2.4. Запуск клиента
    1. Перейдите в каталог "client1/config" и откройте файл "config.json".
    2. Измените значение "token" на тот, который вы установили для сервера.
    3. Измените значение "address" на адрес сервера, на котором будет работать приложение (например, 127.0.0.1:7000).
    4. Перейдите в каталог "client1/config" и откройте файл "port.json".
    5. Измените значение "port" на порт, на котором будет работать клиент (например, если запускается client1 - "port": "7001", если client2 - "port": "7002" и так далее).
    6. Далее, для linux: Откройте терминал на вашем компьютере.
    7. Перейдите в каталог "client1".
    8. Выполните следующую команду для запуска приложения:
    9. java -jar client.jar

    При необходимости вы можете установить нового клиента, создать каталог "client2", скопировать содержимое "client1" в новый каталог и запустить программу и так далее.

    2.5. Запуск с использованием GNU Screen

    GNU Screen — это терминальная программа для управления несколькими сессиями в одном терминальном окне. Она позволяет запускать несколько виртуальных терминалов внутри одного физического терминала, а также сохранять состояние процессов и восстанавливать их позже, даже если подключение к серверу было потеряно.

      2.5.1 Сервер
      1. Откройте терминал.
      2. Перейдите в каталог, где расположен файл server.jar.
      3. Создай новую сессию screen:
      4. screen -S server, где server - это имя сессии (можете написать любое)
      5. Выполните следующую команду для запуска приложения:
      6. java -jar server.jar
      7. Чтобы отсоединиться от сессии и оставить приложение работающим, нажми Ctrl+A, затем D.
      8. Чтобы подключиться снова, используйте команду:
      9. screen -r <имя_сессии>
      10. Если вы забили или не указали имя сессии, можете использовать следующую команду для отображения всех сессий:
      11. screen -ls
      12. Для завершения работы программы в текущей сессии, нажмите Ctrl+C.
      2.5.2 Клиент
      1. Откройте терминал.
      2. Перейдите в каталог, где расположен файл client.jar.
      3. Создай новую сессию screen:
      4. screen -S client, где client - это имя сессии (можете написать любое)
      5. Выполните следующую команду для запуска приложения:
      6. java -jar client.jar
      7. Чтобы отсоединиться от сессии и оставить приложение работающим, нажми Ctrl+A, затем D.
      8. Чтобы подключиться снова, используйте команду:
      9. screen -r <имя_сессии>
      10. Если вы забили или не указали имя сессии, можете использовать следующую команду для отображения всех сессий:
      11. screen -ls
      12. Для завершения работы программы в текущей сессии, нажмите Ctrl+C.
      2.5.3 Общие рекомендации
      1. Команда screen -S предназначена для запуска новой сессии, а screen -r для подключения к существующей.
      2. Что бы завершить сессию выполните следующую команду:
      3. screen -X -S <имя_сессии> quit

    3. Настройка клиентов

    3.1. Добавление клиента

    Софт работает по клиент-серверной архитектуре. Это значит, что отдельно существует веб-панель (сервер), через которую идет управление сканированием, отдельно существуют клиенты, которые могут подключаться к серверу и параллельно работать. Клиенты могут располагаться как на том же физическом сервере, где и веб-панель, так и на отдельном. Количество клиентов не ограничено. Соответственно, чем больше клиентов, тем быстрее происходит сканирование.

    Чтобы добавить клиента, нажмите кнопку "Добавить".

    Во всплывающем окне установите следующие параметры:

    1. IP-адрес: 127.0.0.1
    2. Порт: порт клиента, который у вас есть в списке клиентов (например, каталог "client1" и т. д.)
    3.2. Добавление потоков

    В окне клиента у вас есть возможность добавить количество потоков (по умолчанию 1 поток).

    Каждый поток одновременно обрабатывает 10 (можно изменить в настройках) строк за итерацию до исчерпания общего количества строк.

    Общая рекомендация - на каждое ядро процессора 150 потоков. Например, если у сервера 8 ядер, то можно ставить 1200 потоков. Если 32 ядра, то 4800 потоков. Убедитесь, что на сервере достаточно памяти, чем больше памяти доступно, тем лучше (минимум 16Gb RAM, оптимально 32-64Gb RAM).

    4. Настройки

    Рекомендации по установке параметров для начала работы

    4.1. Добавление CMS

    Перейдите в меню "Настройки" и выберите CMS, которые будут задействованы при сканировании.

    Далее рассмотрим пример установки конфигурации для CMS Magento.

    В настройках уже указаны данные по-умолчанию, но также вы можете:

    1. Изменить или удалить данные по-умолчанию.
    2. Добавить дополнительные пути.
    3. Выбрать решение капчи (только для CMS Magento).
    4. Менять прокси при ошибки в решении капчи (только для CMS Magento).
    5. Количество попыток решения капчи (только для CMS Magento).
    6. Ключ к апи 2captcha.com (только для CMS Magento и CMS WordPress).
    7. Включить сортировку.

    Добавление дополнительных путей:

    1. Path - путь для входа в панель ввода логина в следующих форматах:
    2. [DOMAIN] - Макрос, используется домен из строки.

      [DOMAIN]:port - Макрос + порт на котором работает сайт.

      [DOMAIN]/path - Макрос + путь для панели ввода логина.

      [DOMAIN]:port/path

      subdomain.[DOMAIN]

      subdomain.[DOMAIN]:port

      subdomain.[DOMAIN]/path

      subdomain.[DOMAIN]:port/path

      Вместо [DOMAIN] вы можете использовать [FULLDOMAIN] — в этом случае будет использоваться полный домен со всеми поддоменами.
    3. Login, Admin - паттерны для проверки панели логина и администратора. Если необходимо указать несколько паттернов, нужно ввести данные в следующем формате: pattern1;pattern2;pattern3.

    При включении сортировки, результат работы CMS будет доступен в директории: /goods/Имя CMS/

    После того как все необходимые конфигурации были применены, нажимаем сохранить и идем дальше.

    4.2. Настройки Wordpress

    [PARSE] - path для входа в панель администратора определяется автоматически (используется для нестандартных сайтов wordpress).

    При использовании Wordpress вы можете:

    1. Использовать XMLRPC, для проверки сайта с помощью xml метода (используется как дополнение к основному методу).
    2. Включить эксплоит для получения логина (используется для поиска дополнительных логинов).
    3. Ключ к апи 2captcha.com (только для CMS Magento и CMS WordPress).
    4. Определять immunify alert как гуд.
    5. Создавать нового пользователя, если найденный сайт определился как админ (результат будет доступен в файле гудов (см. пункт 5.4)).
    6. Продолжить поиск после успешного гуда.
    7. При включении сортировки (см. пункт 4.1), в Wordpress результат будет выглядеть так:
    4.3. Настройки Proxy

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

    Файл:

    1. Необходимо открыть меню загрузки прокси.
    2. Ввести вручную или добавить файл.
    3. Пример прокси (вариант №1): ip:port
      Пример прокси (вариант №2): login:password@ip:port

    Ссылка:

    1. Необходимо ввести ссылку, где в html указаны прокси.
    2. Добавить время обновления прокси.
    3. Время обновления прокси - это раз в сколько минут прокси будет обновляться, т.е. заново загружаться по ссылке.

    Общие параметры:

    1. Выбрать тип используемого прокси.
    2. Выбрать проверку прокси, если необходимо.
    3. Проверка прокси - перед началом работы софт пытается проверить все прокси на работоспособность.
    4. Если используете прокси с ротацией, то необходимо выбрать Прокси с ротацией.
    4.4. Общие настройки
    1. Включить комбинационный режим - см. пункт 1.2.
    2. Сортировка строк - если в настройках CMS выбрана функция сортировки строк (см. пункт 4.1), то в данном меню можно включить функцию для записи бедов и ошибок в файл.
    3. Повторное подключение - в данном меню можно выбрать количество повторных подключений, если возникла ошибка, а так же можно выбрать смену прокси при повторном подключении.
    4. Сканировать ханипоты - сканировать строки, которые при любом логине пароле выдают гуд.
    5. Использовать макросы только для текущего логина - если режим выключен, то берем все макросы для всех логинов из списка.
    6. Продолжать поиск после успешного гуда - если софт найдет гуд по-определенному CMS, то он продолжит искать дальше по остальным, выбранным CMS.
    7. Остановка сканирования - если нет пройденных строк за последние 5 минут.
    8. Процент ошибок, % - программа будет продолжать сканирование по заданной строке до тех пор, пока количество ошибок не превысит указанный процент от общего числа уже подобранных комбинаций. (Используется только в комбинационном режиме.)
    9. Таймаут, ms - максимальное время ожидания для установки соединения с сервером.
    10. Количество строк для потока - количество строк в задании для одного потока.
    11. Вывод в лог - обычная или расширенная информация о выполнении сканирования с возможностью записи в файл.
    12. Запись гудов для каждого файла - все сайты из текущего файла к которым получилось подключиться, дополнительно, будут записаны в файл с таким же названием в директории /goods.
    13. Запись бедов, ошибок - запись всех сайтов к которым не получилось подключиться.
    14. Формат данных - формат записи сайтов с которым будет работать программа.
    15. Формат url;login;pass (url:login:pass, login;pass;url, login:pass:url), где url имеет следующий вид:

      http(s)://example.org

      http(s)://example.org/path

      http(s)://example.org:port (для cPanel)

      http(s)://example.org:port/path (для cPanel)

      Есть поддержка использования url без http(s):// только для форматов url;login;pass и url:login:pass.

      Формат name@email.com:pass, примеры:

      login@example.org:pass

    16. Поддержка http, https - при использовании формата name@email.com:pass необходимо указать один или оба протокола, по которым будет осуществлена проверка.
    4.5. Загрузка файла с данными

    Параметры файла:

    1. Файл должен быть в формате ".txt".
    2. Все строки в файле должны быть в формате столбцов и без лишних символов.
    3. Формат строк указан в п. 4.5.

    Есть два способа загрузить файл:

    Вручную:

    1. Пройдите в директорию, в которой запущен server.jar.
    2. Создайте, если нет, новую директорию "/files".
    3. Загрузите в директорию файл(ы).

    Через интерфейс:

    1. Откройте меню редактора файлов.
    2. Загрузите файл.
    4.6. Загрузка логинов и паролей

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

    1. Если вы добавляете файл, то он должен быть в формате ".txt".
    2. Все строки в файле должны быть в формате столбцов и без лишних символов.

    Для логинов есть поддержка следующих макросов:

    Пример для login@google.com:pass, если используете данный формат (см. пункт 4.5):

    [EMAIL] - login@google.com, В качестве логина будет использован текущий email из строки.

    Пример для https://www.google.com/:

    [DOMAIN] - google, Текущий домен без поддомена и доменной зоны.

    [DOMAIN2] - google.com, Текущий домен без поддомена.

    [DOMAIN3] - www.google.com, Текущий домен.

    [AZDOMAIN] - googlecom, Текущий домен без поддомена и любых символов.

    [AZDOMAIN2] - wwwgooglecom, Текущий домен без любых символов.

    Пример использования:

    При вводе [DOMAIN]login, будет использоваться следующий логин - googlelogin.

    Для паролей предоставляется поддержка вышеупомянутых макросов, а также дополнительных макросов:

    Пример для логина username:

    [LOGIN] - username, Текущий логин.

    [LOWERLOGIN] - username, Текущий логин с маленькими буквами.

    [CAPSLOGIN] - USERNAME, Текущий логин с заглавными буквами.

    [LOWERONE] - username, Текущий логин с первой маленькой буквой.

    [UPLOGIN] - Username, Текущий логин с первой заглавной буквой.

    [REVERSE] - emanresu, Текущий логин в обратном порядке.

    [REVERSEUP] - Emanresu, Текущий логин в обратном порядке с первой заглавной буквой.

    [REVERSCAPS] - EMANRESU, Текущий логин в обратном порядке с заглавными буквами.

    [LOGINMINUS1] - sername, Текущий логин минус первый символ.

    [LOGINMINUS2] - ername, Текущий логин минус первые 2 символа.

    [LOGINMINUS3] - rname, Текущий логин минус 3 первых символа.

    [LOGINMINUS3] - name, Текущий логин минус 4 первых символа.

    Пример использования:

    При вводе [CAPSLOGIN]password[REVERSEUP], будет использоваться следующий пароль - USERNAMEpasswordEmanresu.

    5. Запуск и Управление

    Инструкции по запуску и управлению программой.

    5.1. Старт

    При запуске сканирования вы можете:

    1. Возобновить старое сканирование, если есть незавершенный процесс сканирования.
    2. Начать новое сканирование.
    5.2. Пауза и Остановка

    Вы можете приостановить или завершить сканирование.

    5.3. Выключение

    Остановка сканирования, отключение сервера и всех запущенных клиентов.

    5.4. Результат

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

    А так же, если вы выбрали Записывать гуды для каждого файла (см. пункт 4.5), вы можете просмотреть результат работы в директории /goods

    5.5. Показать логи клиента

    При выборе данного меню, вы можете наблюдать ход работы программы (GET и POST запросы) для первого рабочего потока.