La inyección SQL es la segunda vulnerabilidad más común en aplicaciones web, y es muy similar a XSS. Pero no solo puede suceder en aplicaciones web, si no en toda aplicación que utilice SQL dentro de sus dominios, usando cualquier lenguaje de programación. Esta vulnerabilidad es un error de una clase más general de vulnerabilidades que puede ocurrir cuando un lenguaje de programación o de script que esté incrustado dentro de otro. Las diferentes sintaxis de cada lenguaje permiten jugar con ellos, de tal forma que al introducir cierto valor a un lenguaje éste valor puede ser manipulado para ser interpretado por el lenguaje de script de una forma tal que se pueda abusar de estas sentencias. O como lo dice wikipedia: Una inyección SQL sucede cuando se inserta o "inyecta" un código SQL "invasor" dentro de otro código SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el código "invasor" en la base de datos.

Esta vulnerabilidad puede ser evitada por el programador, comprobando y manipulando la cadena entrante, para poder detectar cualquier abuso en el uso de la información entrante. Lo que se puede entender a partir de esto es que este tipo de errores se generan por la falta de conocimientos del programador, por el descuido en la programación, o en las malas costumbres de programación.

Veamos como se da este proceso de ataque y mala programación en un script PHP haciendo interfaz con MySQL y utilizando un form HTML.

El primer contacto del usuario con la aplicación es la interfaz HTML y en concreto la FORM de éste. Se pueden agregar ciertas restricciones a la entrada de tal forma que pareciera segura la aplicación:



< form action=”process.php” method=”POST” >
Seleccione el color:
< select name=”color” >
< option value=”red” > rojo< /option >
< option value=”verde” > verde< /option >
< option value=”azul” > azul< /option >
< /select >
< input type=”submit” / >
< /form >


Sin embargo, sabemos que no sería suficiente con esta restricción, pues es posible ingresar directamente los valores al script process.php sin la necesidad de limitarnos a las opciones antes vistas.

Descripción breve: Nmap (de Network Mapper) es una utilidad de software libre para explorar, administrar y auditar la seguridad de redes de ordenadores. Detecta hosts online, sus puertos abiertos, servicios y aplicaciones corriendo en ellos, su sistema operativo, que firewalls/filtros corren en una red y de que tipo son. Es excelente para hacer trabajos de auditoria y fue diseñado para llevar acabo escaneos rápidos en una gran cantidad de redes, pero es igualmente se puede usar en hosts individuales.

Funciones: NMap es una herramienta de escaneo de puertos de un servidor o de reconocimiento de una red, que es utilizada para localizar los servicios abiertos, los servicios filtrados y los puertos cerrados de un cierto servidor, el sistema operativo de un host y las versiones de los servidores que operan en el host en los diferentes puertos TCP o UDP. Además rastrea los diferentes hosts y routers que existen en esta red. Es capaz se utilizar diferentes técnicas de evasión de detección como su modo sealth. Soporta escaneos sobre ciertos puertos específicos, entre rangos de IP, uso se paquetes Null, FIN, Xmas y ACK, además SYN que es el paquete por defecto. Esto significa que se mandan ciertos tipos de paquetes a cada puerto y estos responderán con alguna señal que permitirá a scanner encontrar versiones y servicios.