¿COMO SABER SI UNA WEB ES VULNERABLE A UNA INYECCIÓN SQL Y COMO PREVENIRLA?

¿COMO SABER SI UNA WEB ES VULNERABLE A UNA INYECCIÓN SQL? ¿COMO PROTEGERSE?


Como ya se había mencionado en un post anterior en donde se en  explicaba esencia como funciona un SQL- injectión y en que consistía, en esta ocasión vamos a ver como detectar si una web SQL es vulnerable a este tipo de ataque que como decía, ha sido el mas común y el 1 del Top OWASP.
 Vamos a verificar los tipos de SQL-Injection y como se puede detectar que es vulnerable:


-          BLIND SQL INJECTION
Este tipo de inyeccion no se basa en arrojar errores, sino que se detecta a través del comportamiento de la web de las cuales podemos distinguir 2 tipos

1. Sql-injectión  Boolean-Based
 Al colocar valores que arrojen resultados Boleanos, como por ejempo ‘1’=’1’ y arroja “TRUE” o en otro caso “FALSE” permitiendo la ejecución de una acción, podemos determinar que se cambian el comportamiento
.
2. Sql-injectión Time-Based
Este tipo se basa en analizar el tiempo de reacción de la base de datos, por ejemplo que al colocar un valor de prueba, si este reacciona rápidamente se sabría que ocurrió un error y si este tarda el tiempo especificado por la prueba significa que la consulta es correcta.


-          CLASSIC SQL INJECTIÓN
Se puede verificar  visiblemente sobre la web, existen 2 tipos:

1. Sql-injection Based- Error
Al colocar un valor por ejemplo sobre la url arroja una pantalla con error alertando sobre la existencia de una base de datos SQL
Un ejemplo muy típico de esto es cuando se coloca una comilla simple  sobre una URL

Ej: localhost/prueba/test/content-2/index.php?user= pepito

Como se evidencia en esta url se esta colocando una comilla simple justo depues de “user=” lo que rompe la cadena php y arrojaria un error similar a este

Deprecated=  mysql_contect(): The mysql extensión in deprecated and will be removed in the future: use mysqli or PDO instead in C:\xampp\htdocs\test/prueba\mySQLHandler.php on line 5

Con esto estamos comprobando que en efecto hay una base de datos que esta reaccionando al dato que introducimos en la url.

2. Sql –injection Basen-Union
Concatenando comandos para enviar sentencias que permiten obtener la base de datos.


-      OUT-OF-BAND SQL INJECTIÓN
No permite detectarse por errores o por comportamiento pero mediante un sniffer de datos se puede obtener un ping de respuesta que determine que se efectuo inyección


METODOS
Los metodos por los que se puede efectuar esta inyección generalmente son:
-          URL:  Ya sea por entrada de valores enteros o valores de cadena
-          FORMULARIOS  : Entrada de datos libres y DropDown Box
-          CABECERA MODIFICADAS: Cookies y User Agent



¿COMO PREVENIR ATAQUES DE INYECCIÓN SQL?

1. ESCAPAR LOS CARACTERES ESPECIALES
Como ya habíamos mencionado en el anterior post, generalmente estas vulnerabilidades ocurren por malas practicas de programación por lo que es importante escapar los caracteres especiales que en un lenguaje de programación se realiza mediante una barra invertida “  \ ”  .. de esta forma evitamos que se rompa la sintaxis de la cadena.

2. VERIFICAR LOS DATOS QUE RECIBE EL USUARIO
A través del lenguaje de programación debemos hacer un filtro de los datos que se introducen en el formulario o en la url, de esta forma nos prevenimos de recibir datos inesperados. También existen otros métodos aconsejables como comprobar la longitud de la cadena ingresada en el formulario. Otro aspecto importante es delimitar los valores de consulta usando comillas simples, de esta forma se complica un poco mas la inyección para los atacantes.

3. HACER PRUEBAS DE PEN TESTING
Es recomendable hacer pruebas de pentesting regulares para comprobar que todo marche bien, para ello existe herramientas open source como SQLmap entre otras.

4. CONTROLAR LOS PRIVILEGIOS DE USUARIO
Hay que evitar otorgar altos privilegios a todos los usuarios, diferenciando administradores, usuarios, root, etc

ARTICUL0

Share this

Related Posts

Previous
Next Post »

Entrada destacada

¿CUAL ES LA DIFERENCIA ENTRE DISCO DURO, RAM, CACHE Y BUFFER?

¿CUAL ES LA DIFERENCIA ENTRE DISCO DURO, RAM, CACHÉ Y BUFFER? Es común que muchas personas se confundan respecto a las diferencias ...