JavaThings - заметки по безопасности Java, связанные с
«Разговор о безопасности Java» — это эссе, которое я пишу, связанное с изучением Java. Оно не очень строгое и не высокотехнологичное. Этот репозиторий предназначен в основном для записи и систематизации, а также для прикрепления некоторого кода.
Справочник обсуждений по безопасности Java
- Беседа о безопасности Java – 01. Динамические характеристики Java – размышление
- Обсуждение безопасности Java – 02. Простое использование отражения
- Обсуждение безопасности Java - 03. Несколько продвинутых методов отражения
- Java Security Talk - 04.Анализ процесса связи RMI
- Обсуждение безопасности Java - 05. Использование кодовой базы для атаки на реестр RMI
- Java Security Talk - 06. Углубленное понимание протокола RMI и сериализованных объектов.
- Обсуждение безопасности Java - 07. Уязвимости десериализации на разных языках
- Обсуждение безопасности Java-08. Познакомьтесь с самым простым гаджетом — URLDNS.
- Обсуждение безопасности Java – 09. Первое знакомство с CommonsCollections
- Обсуждение безопасности Java — 10. Используйте TransformedMap, чтобы написать настоящий POC
- Обсуждение безопасности Java — 11. Подробное объяснение LazyMap
- Обсуждение безопасности Java — 12. Упрощенная версия CommonsCollections6
- Обсуждение безопасности Java — дополнительная глава 1. Где находится BCEL ClassLoader?
- Обсуждение безопасности Java - 13. Методы динамической загрузки байт-кода в Java
- Обсуждение безопасности Java — 14. Зачем нужен CommonsCollections3
- Обсуждение безопасности Java — 15. Использование TemplatesImpl в Shiro
- Обсуждение безопасности Java — 16.commons-collections4 и исправления уязвимостей
- Обсуждение безопасности Java - 17. Использование CommonsBeanutils и десериализации Shiro без commons-collections
- Обсуждение безопасности Java — 18. Собственная цепочка эксплойтов десериализации JDK7u21
- Обсуждение безопасности Java - 19. Построение и анализ протокола десериализации Java
Демо-код
Байт-код:
- Демонстрация удаленной загрузки байт-кода: HelloClassLoader
- По умолчанию в системе используется байт-код загрузки defineClass. Демонстрация: HelloDefineClass.
- Используйте TemplatesImpl для загрузки демонстрации байт-кода: HelloTemplatesImpl
- Использование BCEL для загрузки демо-байткода: HelloBCEL
Десериализация:
- Самая простая демонстрация Transformer: CommonsCollectionsIntro.java
- Моя упрощенная коллекция CommonsCollections6 проще для понимания каждому.
- Демо-версия Transformer, созданная с использованием TemplatesImpl: CommonsCollectionsIntro2.java
- Демо-версия Transformer без InvokerTransformer: CommonsCollectionsIntro3.java
- Мои упрощенные коллекции CommonsCollections3
- CommonsCollections6 выполняет несколько команд одновременно: CommonsCollections6Multiple
- Цепочка эксплойтов CommonsCollections6, поддерживающая версию commons-collections4.0: CommonsCollections6For4.
- Моя упрощенная цепочка эксплойтов CommonsBeanutils1: CommonsBeanutils1
- Упрощенная версия собственной цепочки использования Java JDK7u21
Десериализация Широ:
- Одно из простейших веб-приложений Shiro: shirodemo.
- Используйте CommonsCollections6 и ключ по умолчанию Shiro для создания полезных данных: Client0.java, CommonsCollections6.java, которые не могут быть успешно десериализованы в Tomcat.
- Используйте CommonsCollections, TemplatesImpl и ключ Shiro по умолчанию для создания полезной нагрузки: Client.java, CommonsCollectionsShiro.java для решения вышеуказанных проблем.
- Цепочка использования десериализации, построенная с использованием commons-beanutils, которая по умолчанию поставляется с Shiro: CommonsBeanutils1Shiro.java
Самостоятельно разработанный инструмент анализа десериализации:
- зкар: https://github.com/phith0n/zkar
- Как использовать zkar для устранения проблемы несоответствия SerialVersionUID: https://t.zsxq.com/Yz3B6yJ