Proyecto Integral de Ingeniería del Software | |
---|---|
Metodologías Ágiles |
Trabajo Fin De Grado | |
---|---|
Guía Memoria TFG |
Servidores | |
---|---|
Minercraft | |
Knoppia | |
Omegacraft |
Base de datos de juegos | |
---|---|
GameBoy Advance (GBA) |
Proyecto Integral de Ingeniería del Software | |
---|---|
Metodologías Ágiles |
Trabajo Fin De Grado | |
---|---|
Guía Memoria TFG |
Servidores | |
---|---|
Minercraft | |
Knoppia | |
Omegacraft |
Base de datos de juegos | |
---|---|
GameBoy Advance (GBA) |
¡Esta es una revisión vieja del documento!
Una vulnerabilidad es algo que no está bien implementado o implementado de forma débil, de forma que esta debilidad pude ser aprovechada por un atacante para causar algún daño. La vulnerabilidad más habitual es que los datos de un usuario no se validen de forma adecuada. Para esto se pueden usar formularios o webs que se consultan de forma programática.
En la comunicación entre aplicaciones y bases de datos suelen haber unos tokens como “;” que se pueden utilizar de forma que usando los datos del usuario se puede ejecutar una consulta en una base de datos que no se debería poder ejecutar normalmente. Esta vulnerabilidad era la más importante hasta que en 2021 paso a la tercera posición del OWASP. Existen varios tipos de inyección:
Se produce cuando los datos de entrada proporcionados por el usuario utilizan algunos de los tokens de SQL de forma que no se procesan de forma adecuada, resultando en que la consulta de validación no se ejecuta de la forma esperada. Por ejemplo, una consulta de login sql puede ser:
String q = "SELECT * FROM users Where email='" + email + "'AND password='" + password +"'";
Un ejemplo de ataque de inyección sería el siguiente:
"SELECT * FROM users Where email = 'bob@acme.com' OR '1' = '1' AND password = 'any'"
Al meter un OR de por medio puede engañar al sistema de validación para dejar loguear.