madecapital.com
thefinancialtrading.com
grandesbodas.com
mundoface.com
goodtradings.com
good-trades.com
lasjugueterias.com
takenprofit.com
takesprofit.com
thetradingexperience.com
Este resumen es para introducir métodos de explotación y lograr que uds. piensen acerca de la seguridad de los diseños de su base de datos y configuración de sus sistemas.
Conexión directa a Internet
Exponer cualquier sistema operativo o aplicación directamente a Internet sin usar firewall no es una buena práctica, sin importar, si utilizan linux, windows, unix o cualquier otro sistema operativo. ¿Porque exponer tu sistema productivo permitiendo que cualquiera le dispare hasta que finalmente vulnere la seguridad? . Si bien Mircrosoft lanza sus productos con una configuración básica muy cerrada a nivel seguridad, es muy importante que los usuarios aíslen sus sistemas operativos de Internet vía firewalls o usando otras técnicas de aislamiento, como por ej: aislar las diferentes capas de la aplicaciones, configurar redes aisladas, segurizar protocolos y puertos de router's, etc.
Paswords SA Débiles
Una de las maneras más fáciles de darle a alguien las llaves del SQL es proveer paswords débiles al SA el cual es el usuario administrador en el DBMS. En la versión previa de SQLServer, es posible blanquear una pasword para la cuenta SA sin mucho problema. SQL Server 2005 tiene un montón mas de funcionalidades acerca de políticas de paswords y defensa (Políticas de AD). Obedeciendo al grupo de políticas del dominio de Windows. Configurar una pasword fuerte y política de cuenta lockeada en tu dominio, te asegurara que todos los usuarios del SQL Server estarán ingresando passwords que son más difíciles de crakear. Se aconseja utilizar seguridad trusted y no estándar.
Servicio Browser de SQL
SQL Server usa el puerto UDP 1434 para retornar nombre y puerto en el cual esta escuchando (listening) la/s instancia/s de SQL server en base a un requerimiento de un cliente. Hace unos años esta enumeración era la llave para el virus “SQL Slammer”. Por medio de un fuerte ataque al server en base a este requerimiento para la enumeración de instancias y puertos, el virus dejaba al server demasiado ocupado (busy) para procesar otros requerimientos. En SQL Server 2005, esa funcionalidad de enumeración esta en un servicio separado llamado SQL Server Browser. Esta funcionalidad NO corre en el ADDRESS SPACE del dbms SQL Server, y puede ser cambiada sin afectar al dbms. Si no quieres usar este servicio, puedes conectarte a otras instancias en tu server, pero el string de la conexión debe contener información adicional (tal como un puerto especifico en el caso de conexiones que utilizan TCP). Si se quiere usar el servicio de Browser debes mitigar ataques adicionales bloqueando UDP port 1434 en tu firewall.
SQL Injection
Es el proceso por el cual un usuario malicioso modifica las sentencias SQL para realizar algo en provecho propio o bien simplemente para hackear el sistema. Por ejemplo, supone que un web site esta preguntando por un nombre de usuario. En este caso el usuario en vez de tipear el nombre del usuario, tipea = “ja ja y ja”,DROP TABLE clientes;. El web server tomaría la entrada del usuario y lo pasaría a la capa media, donde sería ejecutado en código como el que sigue:
Sqlcommand cmd=new sqlcommand (“SELECT * FROM clientes where name=’”+ s_nom_cliente + “ ’ ”, myconecction)
El SQL Server, lo interpretaría de la siguiente manera:
SELECT * FROM clientes where name =”ja ja y ja”; DROP TABLE clientes;
De esta manera, cuando el SQL finalice la ejecución de la consulta, luego ejecutaría la eliminación de la tabla de ventas. Podemos ver de esta manera que fácil es para un usuario malicioso causar problemas y retornar sensible a potencial información vía simples ingresos a las páginas web o aplicaciones que directamente usan lo ingresado por el usuario. Para mitigar este problema, puedes agregar al usuario de ingreso como un parámetro en el SQLcommand como se muestra debajo:
Using (sqlcommand cmd= new sqlCommand (“SELECT * FROM clientes WHERE name= @ s_nom_cliente”, myconnection));
{
cmd.Parameter.Add(“@s_nom_cliente”, s_nom_cliente);
…
De esta manera para SQL Server, cualquiera sea el ingreso del usuario, seria considerado solo un valor de la parte del nombre de la cláusula where.
Otros factores
Con la llegada de Google, MSN search, Yahoo search, encontrar cosas en la web es relativamente fácil. Los rastreadores Web de estos motores de búsqueda encuentran palabras claves y luego las almacenan en sus propias bases de datos interna. Esas palabras claves son usadas entre sus propios algoritmos de búsqueda, por eso cuando tipeas algo para buscar, la máquina de búsqueda puede fácilmente traer una lista posible de opciones.
Estos rastreadores web no solo buscan y almacenan cosas, como por ej. sitios web de arte, sino también obtienen varios tipos de errores de información que vienen de los web servers. Esta información es muy valiosa para un hacker. Por ejemplo; si un hacker tipea “invalid password access denied” en la búsqueda de un string en MSN, él obtendrá una lista de varios temas que no son tan interesantes. No obstante, un item podría mostrar este string:
“Warning:mysql_pconnect():Access denied for user `root@`localhost`(using password:YES)in/home/vthost/…/docs/cite.php on line 2.”
El hacker sabe que ese sitio usa MySQL y PHP, y ahora conoce parte de la estructura del directorio de la Web site/home/vthost/…/docs.
Ahora el hacker puede probar consultar esa rama del directorio individual para detectar scripts, archivos de configuración que no han sido segurizados, por ej. Archivos con información de logins y claves de acceso a una base de datos, como comúnmente se llama: credenciales hard codded. Esta es una manera de comprometer seriamente la base de datos, el motor de base de datos y hasta el OS, si esos usuarios poseen los privilegios necesarios para ejecutar tareas administrativas claves.
También debemos tener en cuenta que los motores de búsqueda son excelentes herramientas para los hackers.
Siempre provee a la página web redireccionamientos de errores dentro tu aplicación web.
Siempre presta atención extra a cualquier aplicación web que ingreses. Estate seguro que esa clase de datos esta protegida contra ataques de SQL injection.
Para finalizar
La seguridad es una de las más importantes consideraciones en cualquier proyecto y el tiempo que uses aprendiendo como “cerrar” la misma tanto para SQL Server y sus aplicaciones es lo mejor.
La seguridad del SQL server 2005, posee nuevos modos como XP_cmdshell, el SQL Agent Service y muchas otros, opcionales al producto. También extendió las formas de seguridad sumando la posibilidad de encriptar fácilmente datos en tránsito y con el resto de la base de datos; proveyendo mas permisos granulares y permitiendo un fácil contexto de switching, por ej: schemas y seguridad.