viernes, 22 de agosto de 2008

Inyección SQL - Hackeando páginas web

Las típicas preguntas que nos hacemos:
¿Cómo puedo hackear una página web?
¿Cuál es la manera más fácil de hacerlo?
Soy inexperto en Hacking, ¿podré hacerlo?

Pues bien, la manera más fácil es buscar una vulnerabilidad en el nivel de validación de las entradas a la base de datos, como por ejemplo el área de administración (Login/Password) del sitio.
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.
Fuente: Wikipedia

Con el auge de los sitios/plataformas web desarrollados en PHP y ASP, conforme a eso también se han visto las distintas vulnerabilidades en estos. Ya que el máximo problema que existe es la Inyección SQL.

Pero, ¿Cómo se hace?

Comúnmente los desarrolladores novatos hacen su sistema de validación de usuarios de esta forma:
$usuario=$_POST['usuario'];
$pass=$_POST['pass'];
$sql="SELECT * FROM
usuarios WHERE usuario= '$usuario' AND contrasena='$pass'";

Al ejecutar el mismo, si coincide en la base de datos, entrara ya sea a crear la sesión o actualizar el estado del campo.
Obviamente para entrar debemos conocer el usuario y contraseña correcta, pero nosotros inyectaremos un código malicioso para que nos devuelva un TRUE en la consulta.

Colocaremos lo siguiente, en el formulario de administración:

Usuario: admin
Contraseña: ' or''='

A la hora que se ejecute la sentencia, permitirá a entrar al sitio web! y listo!

Si eres desarrollador, te interesara como evitar todas las vulnerabilidades de inyecciones.

PHP
En php se utiliza la función mysql_real_escape_string, la cual escapa caracteres especiales de una cadena para su uso en una sentencia SQL.
Entonces tu consulta agregando esta función quedaría:
$sql="SELECT * FROM usuarios WHERE usuario=
\"".mysql_real_escape_string($usuario). "\"" AND
contrasena=\"".mysql_real_escape_string($pass). "\""";
ASP
Para asp se utiliza de la siguiente manera:

Dim Usuario, Password, RS, SSQL Usuario = Request.Form("txtUsuario")
Password = Request.Form("txtPassword") SSQL = "SELECT count(*) FROM
Usuarios WHERE Usuario = '" & Usuario & "' AND password='" &
Password & "'" Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SSQL, "Cadena de conexion" If (RS.EOF)
Then Response.Write "Acceso denegado."
Else Response.Write "Te has identificado como " &
RS("Usuario") End IfSet RS = Nothing
Donde txtUsuario y txtPassword vienen del formulario donde pedimos el Usuario y Contraseña.

martes, 5 de agosto de 2008

Nuevo sitio web: Encuentro Colima

El pasado mes de Julio, tras un mes de trabajo, se lanzo Encuentro Colima, un nuevo servicio de publicidad en línea y desarrollo web.

¿Cómo trabaja Encuentro Colima?
Si eres dueño de una pequeña/mediana empresa, y tienes deseos de entrar en el mundo del Internet, pero no tienes el capital para gastar en hospedaje / dominio / diseño web, en Encuentro Colima podrás tenerlos a muy bajo costo.
Te brinda las herramientas necesarias para tu sitio web, y a si tener una mayor competencia empresarial.

Información:
CSS, PHP, MySQL, AJAX, JavaScript, Photoshop

Sistemas incorporados al sitio:
- Administrador:
Sistema de administración de usuarios

- Administrables exclusivamente por los usuarios (membresía estándar y Premium)
Modificación de su sitio web (diseño, información, etc)
Sistema de promociones
Sistema de productos en línea

visita: http://www.encuentrocolima.com