HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 07.03.2020, 01:12
Zer0must2b
Постоянный
Регистрация: 04.02.2020
Сообщений: 306
С нами: 3301975

Репутация: 0
По умолчанию

CVE-2020-2555

Уязвимости небезопасной десериализации стали популярной целью для злоумышленников/исследователей веб-приложений Java. Эти уязвимости часто приводят к удаленному выполнению кода и, как правило, их сложно исправить. В этом сообщении мы рассмотрим CVE-2020-2555 (ZDI-20-128 ), о котором сообщил ZDI Чанг из VNPT ISC. Эта критическая уязвимость (оценка CVSS 9,8) затрагивает библиотеку Oracle Coherence, которая используется в популярных продуктах, таких как Oracle WebLogic Server. Ее исправили в январе вместе с 333 другими ошибками.

Изучение патча, чтобы найти source

Sources - это метод Java с контролируемыми параметрами, который может быть вызван злоумышленником. В Java,
Код:
readObject()
или
Код:
readExternal()
метод класса автоматически вызывается для того , чтобы воссоздать граф объектов. Эти два метода и любые другие методы, доступные из них, могут считаться допустимыми источниками для устройств десериализации.

Патч для CVE-2020-2555 представил очень интересное изменение
Код:
toString()
метода
Код:
LimitFilter
класса:



Все вызовы
Код:
extract()
метода были удалены из
Код:
toString()
. Значение метода
Код:
extract()
будет рассмотрено в следующем разделе. Это изменение особенно интересно, потому что
Код:
toString()
может быть достигнуто с помощью
Код:
readObject()
метода различных стандартных классов JRE, таких как
Код:
BadAttributeValueExpException
:



Как показано в приведенном выше коде, сериализованный экземпляр
Код:
BadAttributeValueExpException
класса может использоваться для вызова
Код:
toString()
метода произвольного класса. Эта техника может быть использована для достижения
Код:
toString()
метода
Код:
LimitFilter
класса, затронутого этим патчем.

Примеры гаджетов, которые используются
Код:
toString()
в качестве точки входа, смотрите в CommonsCollections5 проекта ysoserial .

Поиск sink

Sinks - это вызовы методов Java, которые, как известно, имеют опасные побочные эффекты. Примеры таких побочных эффектов:

- Создание произвольного файла с помощью вызова
Код:
FileOutputStream.write()
.
- Произвольное выполнение команды через вызов
Код:
Runtime.exec()
.
- Произвольный вызов метода через вызов
Код:
Method.invoke()
.

Для этой уязвимости мы фокусируемся на вызове
Код:
Method.invoke()
, побочным эффектом которого является вызов произвольных методов Java через рефлексию. Учитывая эту информацию, мы можем искать все случаи, когда
Код:
extract()
вызов метода, который мы определили как точку входа в нашем анализе патча, приводит к вызову
Код:
Method.invoke()
. По-видимому, в библиотеке Coherence есть только один экземпляр такого сериализуемого класса (реализующий интерфейс Serializable или Externalizable интерфейс).



Взгляд на
Код:
ReflectionExtractor
класс подтверждает наше подозрение.



Код:
ReflectionExtractor
предлагает опасный примитив, позволяя нам вызывать произвольные методы, где злоумышленник может контролировать как метод, так и параметр.

Дорога к RCE

Как правило, для достижения удаленного выполнения кода требуется более одного вызова метода. Например, в популярных гаджетах Apache Commons Collections это достигается путем объединения вызовов произвольных методов с использованием ChainedTransformer. Аналогичным образом, в Coherence библиотеке есть класс, который позволяет нам связывать
Код:
extract()
вызовы, который удобно называть ChainedExtractor:



Объединение всего этого означает, что следующая цепочка может быть использована для удаленного выполнения кода:



Следовательно, любой проект, использующий библиотеку, в которой вы можете доставить вредоносный сериализованный объект, может быть использован для удаленного выполнения кода. Для наших целей мы демонстрируем атаку на протокол T3 WebLogic в следующем видео:

Вывод

С тех пор, как Крис Фрохофф и Габриэль Лоуренс провели в AppSecCali беседу о так называемом Апокалипсисе десериализации Java в 2015 и 2016 годах, исследователи искали ошибки десериализации для выполнения кода. Мы видели много ошибок этого класса, представленных в программу и использованных во время события Pwn2Own Miami против приложений SCADA. Это также одна из причин, по которой мы обратили особое внимание на ошибки десериализации в отчете Trend Micro Security Predictions for 2020 . Еще раз спасибо Jang из VNPT ISC за сообщение об ошибке в программе, и мы надеемся увидеть больше отчетов от него в будущем.

Перевод:Zero Day Initiative — CVE-2020-2555: RCE Through a Deserialization Bug in Oracle’s WebLogic Server
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.