Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Las vulnerabilidades de inyección secundaria son una forma de vulnerabilidad de seguridad muy extendida en las aplicaciones web. En comparación con la vulnerabilidad de inyección primaria, la vulnerabilidad de inyección secundaria es más difícil de detectar, pero tiene el mismo poder de ataque que la vulnerabilidad de inyección primaria.
Los piratas informáticos construyen datos enviando solicitudes de paquetes de datos HTTP al servidor para procesarlos en un navegador u otro software. La solicitud de paquete de datos enviada puede contener declaraciones SQL o comandos construidos por el pirata informático.
La aplicación del lado del servidor almacenará la información de datos enviada por el pirata informático, generalmente en una base de datos. La función principal de la información de datos guardada es proporcionar datos de entrada originales para que la aplicación realice otras funciones y responda a las solicitudes de los clientes.
El hacker envía un segundo mensaje de datos de solicitud al servidor que es diferente del primero.
Después de que el servidor recibe la información de la segunda solicitud enviada por el pirata informático, para procesar la solicitud, el servidor consultará la información de datos ya almacenada en la base de datos y la procesará, lo que provocará la declaración SQL o el comando construido por el pirata informático en la primera solicitud. estar en el servicio ejecutado en el entorno del terminal.
El servidor devuelve información de datos de resultados de ejecución. Los piratas informáticos pueden utilizar la información de datos de resultados devueltos para determinar si la vulnerabilidad de inyección secundaria se explota con éxito.
En resumen, la inyección secundaria se debe a que no se filtran los datos al almacenarlos en la base de datos. Primero, se envía la solicitud de caracteres especiales construida para ser almacenada en la base de datos, y luego, cuando se envía la segunda solicitud, se envían los caracteres que. Se envían a la base de datos por primera vez. Función, formando una nueva declaración SQL para ser ejecutada.Tome el nivel 24 de sqli-labs como ejemplo
laboratorios sqli less-24
1. Haga clic a continuación para registrar un usuario
El nombre de usuario registrado aquí es admin'#
En este punto verificamos la base de datos, los usuarios registrados han sido almacenados y la contraseña de administrador es DDD
2. Inicie sesión con la cuenta registrada y cambie la contraseña a ccccc
En este momento, le indicará que la contraseña se ha cambiado correctamente.
En este momento, descubrimos que la contraseña de administrador se cambió a ccccc, pero la contraseña de nuestro usuario registrado admin'# no se cambió.
Causa de la vulnerabilidad
1. Se permiten caracteres especiales como ' y # durante el registro de usuario.
2. En el código fuente de la página de cambio de contraseña, se encontró que existe una vulnerabilidad de inyección obvia.
$sql = "ACTUALIZAR usuarios ESTABLECER CONTRASEÑA='$pass' donde nombre de usuario='$username' y contraseña='$curr_pass' ";
Cuando iniciamos sesión en el número de administrador de la cuenta y cambiamos la contraseña, la declaración SQL se convierte en la siguiente: #Comente el siguiente código, por lo que la contraseña del usuario administrador se cambia a ccccc
$sql = "ACTUALIZAR usuarios ESTABLECER CONTRASEÑA='$pass' donde nombre de usuario='admin'#' y contraseña='$curr_pass' ";
Enlace original: https://blog.csdn.net/qq_44159028/article/details/114325805