Desde restablecimiento de contraseña hasta Getshell y otras vulnerabilidades empaquetadas

prefacio

Hace unos días, estaba planeando obtener puntos edusrc, así que iba a usar el Nday que no había cepillado para seguir obteniendo puntos, y luego tuve el caso de hoy:

recoger mensaje

Cuando estaba buscando el certificado de una universidad deportiva antes, encontré una laguna en los pasos para modificar la contraseña modificando el archivo html.

Así que estoy listo para inspeccionar y mapear este activo y continuar para ver si se puede calificar.

Elija uno para abrir:

No hay imagen de fondo, pero sigue siendo el mismo activo, porque hay una cuenta al probar una determinada academia deportiva, por lo que puede ingresar directamente a esa cuenta para continuar con la siguiente operación, pero este activo no tiene cuenta, por lo que planeo recoger el número de estudiante algún tipo de

Para ayudarlo a estudiar ciberseguridad, puede recibir un conjunto completo de información de forma gratuita:
① Mapa mental de la ruta de aprendizaje y crecimiento de la ciberseguridad
② Más de 60 kits de herramientas clásicas de ciberseguridad
③ Más de 100 informes de análisis SRC
④ Más de 150 libros electrónicos sobre técnicas de ataque y defensa de ciberseguridad
⑤ La guía de examen de certificación CISSP más autorizada + Banco de preguntas
⑥ Más de 1800 páginas del Manual de habilidades prácticas de CTF
⑦ Colección de las últimas preguntas de entrevistas de empresas de seguridad de redes (incluidas las respuestas)
⑧ Guía de pruebas de seguridad de clientes de aplicaciones (Android+IOS)

El número de estudiante no es nada, y cuando estaba a punto de pensar en otros puntos de entrada, de repente descubrí

El requisito para esta pieza es ingresar los últimos 5 dígitos del número de estudiante, y el número de estudiante suele ser regular, así que fui a generar un diccionario FUZZ

El programa para generar diccionarios de 00000 a 99999 en Python es:

diccionario = {}
para i en el rango (100000):
clave = str(i).zfill(5)
valor = \"Valor\" + clave
diccionario\[clave\] = valor
con open(\'dict.txt\', \'w\') como archivo:
para clave, valor en dictionary.items():
archivo.escribir(clave + \'\\n\')

Después de cargar el diccionario, debe configurar la hora

Finalmente obtuve algunas cuentas con éxito.

EDUSRC no acepta vulnerabilidades de voladura, por lo que esta identificación de estudiante no puede considerarse una vulnerabilidad, pero finalmente salió la identificación de estudiante

Luego ingrese directamente el número de estudiante de 5 dígitos de FUZZ

https://1.test.edu.cn/passworf/find1_html

Después de que find1_html cambió a find2_html

Ingrese directamente la contraseña que queremos restablecer e inicie sesión en segundo plano después de que el cambio sea exitoso:

Continúe explorando los puntos de función para encontrar puntos de avance:

Encontrado un punto de adición activo

No hay un punto de carga, pero hay una función de descripción. Intente construir la carga xss directamente:

<Script>alerta("1)</Script>

XSS+1 almacenado

Carga útil aquí: <Script>alerta("1)</Script>

Bypass con estuche

Posteriormente se encontró otro punto de carga de información:

Estos pocos puntos son transparentes y no abrieron BP, y luego planeo abrir BP para ver si puedo obtener algunos avances.

Haga clic en el primer punto bajo el título de [Agregar información de currículum] en este bloque

Se encuentra que es una interfaz de edición de información, pero salta de una pequeña ventana, así que no me di cuenta cuando abrí BP para capturar paquetes:

Después de hacer clic en Modificar paquete de captura a la derecha:

Cuando se encuentre el valor de identificación, ciérrelo con comillas simples para verlo:

Lado del navegador:

Encontré que la instrucción sql fue ejecutada

Y resultó ser una solicitud GET:

Así que arrastre la ruta de este bloque al navegador para acceder directamente

De esta manera, no tiene que preocuparse por los formularios anti-sqlmap y es más rápido sin empaquetar paquetes de datos.

¡Sqlmap ejecutó con éxito los datos!

inyección sql +1

Luego continúe con [Registro de miembros]

Encierre directamente la búsqueda con comillas simples:

Ejecutó con éxito la declaración de consulta

F12 llama a la red y descubre que también es un método de solicitud GET, copie la URL de la solicitud y vea directamente el eco

Ejecución directa de sqlmap

inyección sql +2

Luego haga clic en las tres palabras [Administrador] en la esquina superior derecha

Al principio no encontré que se pudiera hacer clic en estas tres palabras, después de hacer clic encontré el punto de carga de información:

Esta pieza puede cargar archivos e intentar cargar un php primero

El indicador solo puede cargar los tipos de archivos enumerados anteriormente. Cuando estaba a punto de pensar en otras formas de omitirlo, de repente descubrí que los tipos de archivos que se pueden cargar incluyen pdf, así que intente cargar un pdf-xss directamente:

Cargue correctamente y luego intente acceder a él en un navegador:

Pero el navegador indica que no hay ningún archivo y luego miró cuidadosamente el eco de carga del archivo:

La ruta de uploadfile/16893293978.pdf aquí es seguida por el parámetro ?value=, y después de proporcionar este parámetro, se sigue otro parámetro:

? file=url=uploadfile/16893293978.pdf, y luego regrese a los parámetros en el paquete de solicitud:

Encontré que hay un parámetro &field=url aquí, intente cambiar el parámetro a 1

El navegador repite que "1" no existe, así que esto está claro. El parámetro que se debe conectar después del parámetro &field= es la ruta después de cargar el archivo. Debido a que ingresamos 1 en este bloque, el archivo 1 no existe. , por lo que el eco NotFound es claro. Así que probemos este archivo:

Embalaje:

Activar XSS con éxito

Tienda xss+2

Pero la tarea de esta pieza es getshell, así que continúa intentando subir archivos.

Modifique la información MIME y omita el segmento php5, pero aún indica que no se puede cargar, y la imagen se carga pero no se puede analizar

Esta carga debe escribirse hasta el final, así que continúe buscando otros avances, verifique los parámetros y descubra que hay un "nombre de archivo"

Parámetro problemático, agregue rápidamente un comando de retraso para probar:

`dormir 7`

Retraso de éxito en el eco:

¡Comando ejecutado con éxito! Sondeo adicional:

Curl comando para sondear ngrok.io

¡Eco exitoso!

Ejecución de comando +1, y finalmente use el comando correspondiente para obtener el shell

Resumir

La dificultad general es moderada, pero esta prueba tiene muchas funciones de fondo y debe observarse y probarse cuidadosamente. Una vez que se completa la recopilación de información de fondo, la dificultad de Getshell se vuelve más pequeña en un instante.

Supongo que te gusta

Origin blog.csdn.net/qq_38154820/article/details/131900703
Recomendado
Clasificación