Prefacio
Apache Tomcat abrirá el conector AJP para facilitar la interacción con otros servidores web a través del protocolo AJP. Dado que el propio Tomcat también contiene un servidor HTTP, también se puede considerar como un servidor web independiente. Esta vulnerabilidad es una vulnerabilidad de inclusión de archivos. Los atacantes pueden usar esta vulnerabilidad para leer o incluir cualquier archivo en todos los directorios de aplicaciones web en Tomcat, como archivos de configuración de aplicaciones web, código fuente, etc.
Fui a edusrc y eché un vistazo, estaba un poco mareado y la puntuación se redujo al agujero de alto riesgo de 2. ¡La maleza es tan feroz! Aquí, también lo probé fácilmente. Por el momento, le mostraré la "lectura de archivos" directamente en el combate real. Puede leer directamente archivos de información confidencial, como archivos de información de configuración de la base de datos, y publicar una imagen a continuación para estabilizar la militar.
número de serie
CNVD-2020-10487
CVE-2020-1938
influencias
Apache Tomcat = 6
7 <= Apache Tomcat <7.0.100
8 <= Apache Tomcat <8.5.51
9 <= Apache Tomcat <9.0.31
Proceso de recurrencia
Estoy aquí para usar la ventana acoplable para extraer el entorno tomcat-8.5.32 para reproducir
Docker busca espejo de tomcat
Docker search tomcat-8.5.32
Tire del espejo
Docker pull duonghuuphuc / tomcat-8.5.32
Una vez que se completa la extracción, verifique si la extracción es exitosa
imágenes de docker
Ejecuta duplicación y mapeo de puertos
Docker ejecutar -d -p 8080: 8080 -p 8090: 8090 duonghuuphuc / tomcat-8.5.32
Y mira si funciona con éxito
docker ps -a
Visite la dirección del sistema después del éxito
nmap intento
Hasta ahora, el medio ambiente se ha construido con éxito
exp1
https://github.com/0nise/CVE-2020-1938
exp2
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
Demostración de vulnerabilidad
Plan de reparaciones
- Desactive temporalmente el puerto del protocolo AJP, comente <Connector port = ”8009 ″ protocol =” AJP / 1.3 ″ redirectPort = ”8443 ″ /> en el archivo de configuración conf / server.xml
- Configure los atributos secretRequired y secret en la configuración ajp para restringir la autenticación
- Descargue la última versión del enlace de descarga oficial:
https://tomcat.apache.org/download-70.cgi
https://tomcat.apache.org/download-80.cgi
https://tomcat.apache.org/download-90.cgi
https://github.com/apache/tomcat/releases
Otras medidas de protección
Si los usuarios relevantes no pueden realizar actualizaciones de versión temporalmente, se pueden adoptar las siguientes medidas de protección de acuerdo con sus propias circunstancias.
1. Si no necesita usar el protocolo Tomcat AJP, puede cerrar directamente el conector AJP o cambiar su dirección de escucha para monitorear únicamente el localhost local.
Operación específica:
(1) Edite <CATALINA_BASE> /conf/server.xml y busque la siguiente línea (<CATALINA_BASE> es el directorio de trabajo de Tomcat):
<Puerto del conector = ”8009 ″ protocolo =” AJP / 1.3 ″ redirectPort = ”8443 ″ />
(2) Comente esta línea (también puede eliminar esta línea):
<! - <Connectorport = ”8009 ″ protocol =” AJP / 1.3 ″ redirectPort = ”8443 ″ /> ->
(3) Tomcat debe reiniciarse después de guardar para que las reglas surtan efecto.
2. Si necesita utilizar el protocolo Tomcat AJP, puede establecer la credencial de autenticación de acuerdo con las propiedades del protocolo de configuración de la versión.
Los usuarios de Tomcat 7 y Tomcat 9 pueden configurar el secreto para que el conector AJP establezca las credenciales de autenticación del protocolo AJP. Por ejemplo (tenga en cuenta que YOUR_TOMCAT_AJP_SECRET debe cambiarse a un valor que sea altamente seguro y no se pueda adivinar fácilmente):
<Puerto del conector = ”8009 ″ protocolo =” AJP / 1.3 ″ redirectPort = ”8443 ″ dirección =” YOUR_TOMCAT_IP_ADDRESS ”secreto =” YOUR_TOMCAT_AJP_SECRET ”/>
Los usuarios que utilizan Tomcat 8 pueden configurar requiredSecret para que el conector AJP establezca las credenciales de autenticación del protocolo AJP. Por ejemplo (tenga en cuenta que YOUR_TOMCAT_AJP_SECRET debe cambiarse a un valor que sea altamente seguro y no se pueda adivinar fácilmente):
<Puerto del conector = ”8009 ″ protocolo =” AJP / 1.3 ″ redirectPort = ”8443 ″ dirección =” YOUR_TOMCAT_IP_ADDRESS ”requiredSecret =” YOUR_TOMCAT_AJP_SECRET ”/>