
Outil de génération automatique de payload pour Jdk Xalan dérivé de cve-2022-34169, capable de générer le fichier xslt correspondant selon différents Jdk.
Il s'agit d'un outil de génération automatique de payload pour la vulnérabilité de débordement Xalan dans le JDK, basé sur la CVE-2022-34169. Ayant constaté que différents JDK nécessitent des payloads de débordement différents, cet outil de génération automatique a été créé. Il suffit d'exécuter ce projet avec différentes versions du JDK pour générer différents fichiers XSLT exploitables.
Copiez select.bak.xslt en select.xslt et modifiez la commande que vous souhaitez exécuter.

Exécutez ensuite java -jar AutoGenerateXalanPayload.jar. Certaines erreurs peuvent être levées pendant l'exécution, ignorez-les simplement. Une fois le programme terminé, le select.xslt obtenu est le payload d'exécution de commande de débordement Xalan correspondant à cette version du JDK.

https://mp.weixin.qq.com/s/xxAtjFvk9RxWiY-pwGf8Ow
Comme il existe de nombreuses versions mineures du JDK, j'ai utilisé une méthode de dichotomie pour comparer les versions de JDK 1.6 à JDK 1.8. Prenons l'exemple du test de la version 1.7 : testez d'abord la version mineure la plus élevée du JDK 1.7 pour obtenir un XSLT, définissez son contenu comme type A. Testez ensuite la version mineure la plus basse du JDK 1.7 pour obtenir un XSLT. Si ce XSLT est exactement identique à celui généré par la version mineure la plus élevée du 1.7, cela signifie que toutes les versions de JDK 1.7 (de la plus basse à la plus haute) utilisent le même payload de type A. Sinon, je prends la version intermédiaire du JDK 1.7, et ainsi de suite avec la dichotomie. C'est la méthode la plus rapide que j'ai trouvée pour tester, sans avoir à installer toutes les versions tout en couvrant l'ensemble. Prenons un exemple concret : JDK-8u301 est de type A, JDK-8u202 est de type A. Alors JDK-8u221, qui est une version intermédiaire entre les deux, ne peut pas être de type B, n'est-ce pas ?
Voici les résultats obtenus après mes tests, montrant qu'il existe six types de payloads entre JDK 1.6 et JDK 1.8.
https://blog.noah.360.net/xalan-j-integer-truncation-reproduce-cve-2022-34169/
| Version JDK | Type 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 |