
Преднамеренно уязвимое клиент-серверное приложение для обучения тестированию на проникновение не-HTTP толстых клиентов. Включает задачи по SQL-инъекциям, RCE, XML-атакам, переполнению буфера при чтении и уязвимостям контроля доступа.
Уязвимое клиент-серверное приложение (VuCSA) создано для изучения/демонстрации того, как проводить тесты на проникновение не-HTTP клиент-серверных приложений. Оно написано на Java (с графическим интерфейсом JavaFX).
В настоящее время уязвимое приложение содержит следующие задания:
Если вы хотите узнать, как решить эти задания, посмотрите на сайт PETEP, где описано, как использовать инструмент с открытым исходным кодом PETEP для их эксплуатации.
Совет 1: Прежде чем начать взлом, не забудьте проверить структуру данных сообщений ниже. При изменении сетевого трафика вам, вероятно, придется учитывать структуру, особенно байты длины полезной нагрузки.
Совет 2: Большинство заданий можно эксплуатировать путем изменения сетевого трафика. Поэтому для тестирования рекомендуется использовать TCP-прокси или перехватчики процессов.
Совет 3: Некоторые задания имеют проверку ввода и ограничения, что типично для толстых клиентов, но это не означает, что сервер использует те же проверки.
В этом задании ваша цель — манипулировать сетевым трафиком между клиентом и сервером таким образом, чтобы вызвать переполнение буфера для чтения.
Задание на выполнение команд представляет собой очень простую уязвимость выполнения команд. Цель — выполнить вредоносную команду на сервере.
Задание на SQL-инъекцию содержит поле поиска, уязвимое для SQL-инъекции, но, как вы скоро заметите, ввод не позволяет вводить необходимые символы.
Задание на перебор основано на симулированной форме входа, не защищенной от перебора. Сможете ли вы найти всех 5 пользователей и угадать их пароли?
В этом задании вы найдете несколько XML-уязвимостей:
Задание на горизонтальный контроль доступа представляет собой средство просмотра документов, которое позволяет пользователю видеть свои документы и читать их содержимое. Цель — найти 5 документов других пользователей.
Задание на вертикальный контроль доступа основано на симулированной панели пользователя, отображающей основную информацию о пользователе. Цель — найти скрытую административную функцию и проверить, можно ли использовать ее от имени гостевого пользователя.
Уязвимость RCE-десериализации использует десериализацию/сериализацию Java для передачи данных по сети. Приложение содержит два пути, которые можно использовать для достижения удаленного выполнения кода через уязвимую десериализацию Java. Оба пути можно найти, изучив JAR-файл сервера или заглянув в исходный код. Цель — создать эксплойты для обоих путей и выполнить вредоносную команду на сервере.
Совет: Вы можете использовать JAR-файл сервера как библиотеку, чтобы упростить создание эксплойта.
Для запуска VuCSA требуется Java 11 или новее.
Примечание: Для Mac с архитектурой ARM64 (чипы M1, M2) используйте специальную сборку для Java 17.
Чтобы запустить уязвимый сервер и клиент, вы можете использовать один из релизов на GitHub или выполнить gradle assemble, который создает дистрибутивы (для Windows и Unix). Эти пакеты содержат sh/bat-скрипты для запуска сервера и клиента с помощью JVM:
# Linux / Mac
chmod +x client.sh server.sh
./client.sh
./server.sh
# Windows
client.bat
server.bat
Примечание: Эти скрипты содержат полезные переменные, включая путь к исполняемому файлу Java. Возможно, вам придется изменить его, если Java отсутствует в PATH или вы используете несколько версий Java.
Конфигурация сервера создается автоматически, если она отсутствует, и после этого загружается из server.json в той же директории, где запущен сервер:
{
"network": {
"serverHost": "0.0.0.0",
"serverPort": 8765
}
}
Конфигурация клиента может быть указана в работающем приложении.
Проект разделен на три модуля:
Сообщения, передаваемые между сервером и клиентом, имеют следующий простой формат:
[type][target][length][payload]
32b 32b 32b ???
Эти четыре части имеют следующее значение:
Чтобы отправлять пользовательские полезные нагрузки, возможно, придется обновить длину полезной нагрузки. В противном случае это не будет работать должным образом. В руководстве разработан автоматический скрипт для автоматического исправления байтов длины полезной нагрузки.
Уязвимое клиент-серверное приложение (VuCSA) содержит множество уязвимостей, которые можно эксплуатировать различными способами. Официальное руководство по эксплуатации этих уязвимостей использует прокси с открытым исходным кодом для тестирования на проникновение (см. Методология PETEP). В методологии PETEP объясняется весь процесс эксплуатации заданий, включая полезные нагрузки.