Prólogo: Tomcat-AJP
Tomcat es
un proyecto central en el proyecto de Yakarta de Apache Software Foundation , desarrollado por Apache, Sun y otras compañías e individuos. Debido a que Tomcat es avanzado en tecnología, estable en rendimiento y gratuito, es amado por los entusiastas de Java y reconocido por algunos desarrolladores de software, convirtiéndose en un popular servidor de aplicaciones web.
AJP (Protocolo Apache JServ) es un protocolo de paquete dirigido. Por razones de rendimiento, el formato binario se utiliza para transmitir texto legible. El servidor WEB está conectado al contenedor SERVLET a través de una conexión TCP.
Numero
Número CVE: CVE-
2020-1938 Número CNVD: CNVD-2020-10487
Versión afectada
tomcat 6
tomcat7 ~ 7.0.100
tomcat8 ~ 8.5.51
tomcat9 ~ 9.0.31
Perfil de vulnerabilidad
Esta vulnerabilidad es una vulnerabilidad de inclusión de archivos. Un atacante puede construir un paquete de solicitud malicioso para usar esta vulnerabilidad para leer cualquier archivo en el directorio de la aplicación web, como los archivos de configuración y el código fuente.
La plataforma CNVD cuenta la distribución del protocolo Apache Tomcat AJP en China. Los resultados muestran que la cantidad de IP en China es de aproximadamente 555,000. A través de pruebas técnicas, se descubrió que un total de 43197 servidores en China se vieron afectados por esta vulnerabilidad, con una tasa de impacto de aproximadamente 7.8%.
Reaparecer
复现过程在私人渗透测试环境下完成!
1. Construye el medio ambiente
Eche un vistazo a la versión
. El Tomcat utilizado aquí es la versión 8.5.32, y el entorno ya está configurado.
Cree un texto de prueba en el directorio web predeterminado (ROOT) y escriba caracteres de prueba
2. Operación
Ok, lo anterior está listo, comienza
Leer comando de archivo:
python tomcat.py read_file --webapp=ROOT /test.txt 127.0.0.1
Parámetro:
read_file
Operación (de leer el archivo) webapp
directorio web especificado /test.txt
directorio de archivos
Lea el archivo WEB-INF / web.xml
, y listo .
Uso de caso exp: https://github.com/hypn0s/AJPy
Solución
- Actualiza a una versión segura
- Deshabilite 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 o el firewall agrega restricciones de puerto AJP a la red pública Abierto- Configure los atributos secretRequired y secret en la configuración de ajp para limitar la autenticación
POCO
- https://github.com/0nise/CVE-2020-1938
- https://github.com/hypn0s/AJPy
- https://github.com/xindongzhuaizhuai/CVE-2020-1938
Información relacionada: https://www.cnvd.org.cn/webinfo/show/5415