
cve-2022-34169 derivado de la herramienta de generación automática de payload de Jdk Xalan, que puede generar el archivo xslt correspondiente según diferentes JDK
Esta es una herramienta de generación automática de payloads para la vulnerabilidad de desbordamiento de Xalan en JDK, derivada del CVE-2022-34169. Dado que se descubrió que los payloads de desbordamiento necesarios difieren entre versiones de JDK, nació esta herramienta de generación automática. Solo necesita ejecutar este proyecto con diferentes versiones de JDK para generar diferentes archivos XSLT de explotación.
Copie select.bak.xslt como select.xslt y modifique el comando que desea ejecutar.

Luego ejecute java -jar AutoGenerateXalanPayload.jar. Durante el proceso se pueden lanzar algunos errores, ignórelos. Una vez finalizado el programa, el archivo select.xslt obtenido es el payload de ejecución de comandos de desbordamiento de Xalan correspondiente a esa versión de JDK.

https://mp.weixin.qq.com/s/xxAtjFvk9RxWiY-pwGf8Ow
Debido a que hay muchas subversiones de JDK, utilicé el método de bisección para comparar las versiones de JDK 1.6 a 1.8. Tomando como ejemplo la prueba de la versión 1.7, primero pruebe la subversión más alta de JDK 1.7, obtenga un XSLT y establezca su contenido como tipo A. Luego pruebe la subversión más baja de JDK 1.7, obtenga un XSLT. Si este XSLT es exactamente igual al generado por la subversión más alta de 1.7, significa que desde la versión más baja hasta la más alta de JDK 1.7, todas comparten un payload de tipo A.
Si son diferentes, entonces tomo la versión intermedia de JDK 1.7 y pruebo, y así sucesivamente mediante bisección. Esta es la forma más rápida que se me ocurrió, sin necesidad de instalar y probar todas las versiones, pero cubriéndolas todas.
Pongo un ejemplo de los resultados de las pruebas a continuación: Jdk-8u301 es payload tipo A, Jdk-8u202 es payload tipo A, entonces Jdk-8u221 es la versión intermedia entre estos dos, ¿no podría ser un payload tipo B, verdad?
A continuación se muestran los resultados de mis pruebas, obteniendo seis tipos de payload entre JDK 1.6 y 1.8.
https://blog.noah.360.net/xalan-j-integer-truncation-reproduce-cve-2022-34169/
| Versión JDK | Tipo 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 |