
Инструмент автоматической генерации payload-ов для Jdk Xalan, расширенный на основе cve-2022-34169, который может генерировать соответствующие xslt-файлы для разных версий JDK.
Это инструмент для автоматической генерации полезной нагрузки (payload) для уязвимости переполнения JDK Xalan, основанный на уязвимости CVE-2022-34169. Поскольку в разных версиях JDK требуются разные полезные нагрузки для переполнения, был создан этот автоматический генератор. Достаточно запустить этот проект с разными версиями JDK, чтобы получить разные XSLT-файлы для эксплуатации.
Скопируйте select.bak.xslt как select.xslt и измените команду, которую хотите выполнить.

Затем запустите java -jar AutoGenerateXalanPayload.jar. В процессе могут возникать ошибки, их можно игнорировать. После завершения программы полученный файл select.xslt будет содержать полезную нагрузку для эксплуатации переполнения Xalan, соответствующую версии JDK.

https://mp.weixin.qq.com/s/xxAtjFvk9RxWiY-pwGf8Ow
Из-за большого количества минорных версий JDK я использовал бинарный поиск для сравнения версий от JDK 1.6 до JDK 1.8. В качестве примера возьмём тестирование версии 1.7: сначала тестируем самую высокую минорную версию JDK 1.7, получаем XSLT и обозначаем его содержимое как тип A. Затем тестируем самую низкую минорную версию JDK 1.7, получаем XSLT. Если содержимое этого XSLT полностью совпадает с содержимым, сгенерированным для самой высокой минорной версии, то это означает, что для всех версий от самой низкой до самой высокой JDK 1.7 подходит один и тот же тип A payload. Если же они различаются, я беру среднюю версию JDK 1.7 и тестирую её — и так продолжаю делить пополам. Это, на мой взгляд, самый быстрый способ, не требующий установки всех версий, но при этом покрывающий все варианты. В качестве примера из протестированных результатов: Jdk-8u301 — тип A payload, Jdk-8u202 — тип A payload. Тогда Jdk-8u221 — это средняя версия между ними; она не может быть типом B, верно?
Ниже приведены полученные мной результаты. Обнаружено, что между JDK 1.6 и JDK 1.8 существует шесть типов полезных нагрузок.
| Версия JDK | Тип XSLS |
|---|---|
| Jdk-8u301 | A |
| Jdk-8u202 | A |
| Jdk-8u162 | A |
| Jdk8u152 | A |
| Jdk8u151 | B |
| Jdk8u144 | B |
| Jdk8u131 | B |
| Jdk8u121 | C |
| Jdk8u111 | C |
| Jdk8u102 | D |
| Jdk8u101 | D |
| Jdk8u91 | D |
| Jdk8u60 | D |
| Jdk8u20 | D |
| Jdk7u40 | D |
| Jdk7u21 | D |
| Jdk7u10 | D |
| Jdk7u05 | D |
| Jdk7u04 | D |
| Jdk7u03 | E |
| Idk7u02 | E |
| Jdk7u0 | E |
| Jdk6u45 | E |
| Jdk6u20 | E |
| Jdk6u17 | F |
| Jdk6u15 | F |
| Jdk6u10 | F |
| Jdk6u0 | F |
https://blog.noah.360.net/xalan-j-integer-truncation-reproduce-cve-2022-34169/