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

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

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

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

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

Категории

Все категории
Loading categories
revsuit — RevSuit — это гибкая и мощная платформа для обратных соединений, предназначенная для приема соединений от целевого хоста при пентесте. | Kitploit
Инструменты/GitHubGitHub/li4n0/revsuit
Фреймворки для пентестаРазведкаАнализ уязвимостейЭксплуатацияСбор информацииВеб-безопасностьТестирование на ПроникновениеАнализ DNS
GitHubli4n0/revsuit

revsuit

RevSuit — это гибкая и мощная платформа для обратных соединений, предназначенная для приема соединений от целевого хоста при пентесте.

Репозиторий
564693 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

RevSuit — Гибкая и мощная платформа для обратного подключения

English |简体中文

Обзор

RevSuit — это гибкая и мощная платформа для обратного подключения, предназначенная для приема соединений от целевого хоста во время пентеста. В настоящее время поддерживаются протоколы HTTP, DNS, RMI, LDAP, MySQL и FTP.

Гибкость:

  1. RevSuit позволяет задавать гибкие правила для захвата различных соединений.
  2. Развертывание и запуск через бинарные файлы без головной боли от зависимостей.

Мощность:

  1. Позволяет настраивать ответ для разных соединений через правила и поддерживает динамическую генерацию ответов с использованием переменных шаблонов.
  2. Поддерживает множество протоколов, а также углубленное использование некоторых из них, например, DNS rebinding, MySQL Load Local Data, JDBC Deserialize Exploit, FTP Passive Mode SSRF и др.
  3. Нативная поддержка совместной работы со сканерами.
  4. Поддержка push-уведомлений в популярные офисные программы.
  5. Другие продуманные и детализированные функции.

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

Установка и настройка

Скачайте последний релиз напрямую или соберите самостоятельно, следуя инструкциям:

root@kitploit:~
git clone https://github.com/Li4n0/revsuit.git
cd revsuit/frontend && yarn install && yarn build
cd ../ && go build ./cmd/revsuit/revsuit.go

RevSuit сгенерирует файл конфигурации по умолчанию при первом запуске. Измените файл конфигурации в соответствии с вашими потребностями, затем перезапустите. Подробное описание файла конфигурации можно найти здесь: Примечания к конфигурации

Запуск

Для определения местоположения по IP требуется база данных IP-адресов. По умолчанию используется QQwry, также можно изменить конфигурацию для использования GeoIP. Если выбранная база данных недоступна в текущем каталоге или обновлялась более недели назад, RevSuit автоматически загрузит последнюю версию. Если загрузка не удалась, поле IpArea всегда будет пустым.

root@kitploit:~
$ ./revsuit   
2021/05/16 22:55:10 [ INFO] Загрузка qqwry.dat...

    ____            _____       _ __ 
   / __ \___ _   __/ ___/__  __(_) /_
  / /_/ / _ \ | / /\__ \/ / / / / __/
 / _, _/  __/ |/ /___/ / /_/ / / /_  
/_/ |_|\___/|___//____/\__,_/_/\__/    
                                   vBeta0.1
     https://revsuit.pro
2021/05/16 22:55:22 [ INFO] Запуск HTTP-сервера на :80, токен:your_token
2021/05/16 22:55:22 [ INFO] Начало прослушивания FTP PASV-порта на :2020, PasvIP = 10.9.8.7
2021/05/16 22:55:22 [ INFO] Запуск FTP-сервера на :21
2021/05/16 22:55:22 [ INFO] Запуск MySQL-сервера на :3306
2021/05/16 22:55:22 [ INFO] Запуск RMI-сервера на :1099
2021/05/16 22:55:22 [ INFO] Запуск DNS-сервера на :53

После запуска вы можете перейти по пути /revsuit/admin/ HTTP-сервера и ввести токен для доступа к панели управления.

Создание правил и получение соединения

Рассмотрим на примере создания HTTP-правил:

Несколько примечаний:

  1. name и flagFormat правила уникальны.
  2. FlagFormat использует синтаксис регулярных выражений, и для разных протоколов поля, совпадающие с flagFormat, различаются. Вы можете проверить соответствующие подсказки при создании правил для получения подробностей.
  3. Правила с более высоким рангом применяются в первую очередь.
  4. Для разных протоколов можно задать разные пользовательские ответы, а для некоторых протоколов можно использовать переменные шаблонов.
  5. Вы можете задать именованные группы в регулярном выражении flagFormat, и результат совпадения группы также будет использоваться как переменная шаблона.

Как показано ниже, мы создаем правило, использующее встроенные переменные шаблонов и пользовательские переменные шаблонов для HTTP-протокола, и называем его test_create_rule:

img.png

Затем делаем запрос, удовлетворяющий правилу, и просматриваем ответ.

img.png

Запрос также будет зарегистрирован на платформе.

img.png

Уведомления

Если вы хотите получать уведомления о новых соединениях в вашем офисном ПО, вы можете настроить webhook-адрес соответствующего программного обеспечения в файле конфигурации и включить переключатель Notice для соответствующего правила. В настоящее время поддерживаются только четыре типа ПО: dingtalk, wechat, lark, slack. (Поддержка Discord и Telegram запланирована.)

Импорт/Экспорт правил

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

Точка входа для этой функции находится в Settings > RULES.

Правила хранятся в формате yaml для импорта/экспорта, например:

root@kitploit:~
http:
  - name: test_create_rule
    flag_format: (?P<what>\w+)\?
    rank: 0
    push_to_client: false
    notice: false
    response_status_code: "302"
    response_headers:
      Location: ${query.url}
    response_body: ${header.say} ${what}
  - name: other_rule
    flag_format: other
    rank: 1
    push_to_client: false
    notice: true
    response_status_code: "200"
    response_headers: { }
    response_body: Hello Revsuit!
dns:
  ... ...

Продвинутое использование

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

RevSuit был выделен из моего проекта сканера, поэтому его нативная поддержка работает со сканерами.

С точки зрения RevSuit, сканер называется клиентом.

Установка соединения

RevSuit использует Server-sent Events (SSE) HTTP для установления одностороннего канала связи с клиентом.

API для канала: /revsuit/api/events?message. Клиент должен сначала добавить заголовок Token: your token в заголовок, а затем обратиться к API для установления канала. Когда платформа получает новый запрос, flag, захваченный правилом, передается клиенту через этот канал. img.png

Вот простой пример с использованием библиотеки sse на Golang.

Несколько клиентов

Как показано выше, RevSuit поддерживает несколько клиентов, и каждый клиент в состоянии соединения получает push-уведомление с flag, что позволяет поддерживать распределенное сканирование.

Если вы не хотите, чтобы каждый клиент получал все push-уведомления flag, вы можете использовать заголовок запроса Flag-Filter при создании SSE-соединения, чтобы задать формат (регулярное выражение) flag, который должен получать этот клиент:

img.png

Временная очередь

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

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

В реальном сценарии сканирования уязвимостей вы можете отправлять множество различных полезных нагрузок для одной точки уязвимости, и все они могут быть валидными, что приведет к получению платформой обратного подключения множества запросов, но все они вызваны одной и той же уязвимостью. Если вы не хотите, чтобы клиент получал так много flag для одной уязвимости, вы можете воспользоваться функцией flagGroup в правиле flagFormat.

FlagGroup — это контент, соответствующий анонимной группе в поле flagFormat правила. Платформа проверяет контент, полученный в группе, и отправляет flag клиенту только тогда, когда контент (flagGroup) захвачен впервые.

Например, сканирование SSRF.

Сначала создайте правило, как показано ниже:

root@kitploit:~
http:
  - name: ssrf
    flag_format: (ssrf[a-z0-9]{6})[0-9]{1,3}
    rank: 0
    push_to_client: false
    notice: false
    response_status_code: "200"
    response_headers: { }
    response_body: "Here is a SSRF!"

Предположим, наша цель — https://www.testvuln.com?url=api.com&p=useless, и для SSRF у нас есть 5 полезных нагрузок. Итоговый запрос, отправленный сканером, может быть: ['https://www.testvuln.com?url=http://revsuit.com/ssrfa98oni1&p=useless','https://www.testvuln.com?url=http://revsuit.com/ssrfa98oni2&p=useless', ... ,'https://www.testvuln.com?url=//revsuit.com/ssrfa98oni5&p=useless']. Все они могут сработать успешно.

Однако, поскольку в flagFormat правила используется анонимная группировка, платформа будет запрашивать уже полученный flagGroup, в данном случае ssrfa98oni, и отправлять flag клиенту только при его первом появлении, поэтому клиент получит только один флаг: ssrfa98oni1. Это уже доказывает, что параметр url цели уязвим.

Взаимодействие модулей

В реальных сценариях пентеста некоторые задачи могут быть легко и быстро выполнены за счет комбинирования различных модулей RevSuit. Ниже приведен пример слепого XXE в Java Web, показывающий, как использовать модули HTTP и FTP RevSuit вместе с переменными шаблонов для быстрого сканирования портов.

Сначала создайте HTTP-правило для возврата evil.dtd, настройте ответ на содержимое dtd так, чтобы оно подключалось к FTP-сервису RevSuit, и используйте переменные шаблонов для передачи Host и Port для сканирования через FTP путём их использования в качестве пользователя и пароля FTP.

Создание правила evil.dtd

Затем создайте FTP-правило, которое принимает Host и порт для сканирования из переменных шаблонов пользователя и пароля, и устанавливает их в качестве Pasv Address.

Создание правила сканирования FTP

Затем используйте BurpSuit для запуска сканирования, задав параметры host и port в URL-адресе evil.dtd, чтобы установить цель сканирования портов.

xxe

Результат работы выглядит следующим образом:

ftp-scan

Поскольку соединение FTP будет разорвано, если Passive Address недоступен, можно определить, открыт ли порт, на основе того, нормально ли завершается соединение. В этом примере мы успешно обнаружили, что порты 8005 и 8080 открыты.

Дополнительное использование

Готовится более подробная вики, а пока вы можете исследовать самостоятельно.

Обратная связь, предложения и общение

Создайте issue или свяжитесь со мной через Weixin: TGk0bjA2Cg==

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

Ссылки

Этот проект использует код следующих выдающихся проектов:

  • https://github.com/rmb122/rogue_mysql_server
  • https://github.com/256dpi/newdns
  • https://github.com/EmYiQing/JNDIScan

Особая благодарность

Спасибо моему другу @E99p1ant за всю помощь и советы, полученные в ходе разработки этого проекта.

Лицензия

@Apache License 2.0

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