Ataques de SQL Server

  • Published on
    10-Jul-2015

  • View
    160

  • Download
    0

Transcript

Pgina 1 Ataques de SQL Server: Hacking, cracking, y la proteccin tcnicas. En esta era de la informacin, el servidor de datos se ha convertido en el corazn de una empresa. Este pieza de software controla el ritmo de la mayora de las organizaciones y se utiliza para bombear informacin vital a travs de las arterias de la red. Debido a la naturaleza crtica de la esta aplicacin, el servidor de datos es tambin uno de los objetivos ms populares para los hackers. Si un hacker posee esta aplicacin, que puede causar la compaa "corazn" de sufrir un paro fatal. Irnicamente, aunque la mayora de los usuarios son conscientes de los piratas informticos, que todava no se dan cuenta susceptibles a sus servidores de bases de datos son para cortar los ataques. Por lo tanto, este artculo presenta un descripcin de los mtodos principales de los servidores de base de datos de ataques (tambin conocido como SQL servidores) y muestra cmo protegerse de estos ataques. Debe tener en cuenta que esta informacin no es nueva. Muchos libros blancos tcnicos entran en un gran vulnerabilidades de los detalles acerca de cmo realizar ataques SQL, y se han publicado numerosos a listas de seguridad que describen exactamente cmo ciertas aplicaciones de base de datos puede ser explotado. Este artculo fue escrito para los curiosos no SQL expertos que no se preocupan de conocer la detalles, y como una revisin a los que hacen uso de SQL con regularidad. Para obtener informacin detallada sobre ataques especficos, consulte la seccin de referencias al final de este artculo. Qu es un SQL Server? Una aplicacin de base de datos es un programa que ofrece a sus clientes acceso a los datos. Hay muchas variaciones de este tipo de aplicaciones, que van desde la cara a nivel de empresa Microsoft SQL Server a la libre y de cdigo abierto MySQL. A pesar del sabor, la mayora de los aplicaciones de base de datos de servidor tienen varias cosas en comn. En primer lugar, las aplicaciones de base de datos utilizan el mismo lenguaje de programacin general conocido como SQL, o Lenguaje de consulta estructurado. Este lenguaje, tambin conocido como un lenguaje por el cuarto nivel a su sintaxis simple, est en el centro de cmo un cliente se comunica su peticin a la servidor. Uso de SQL en su forma ms simple, un programador puede seleccionar, agregar, actualizar y eliminar informacin en una base de datos. Sin embargo, SQL tambin se pueden utilizar para crear y disear toda bases de datos, realizar varias funciones en la informacin enviada, e incluso ejecutar otros

programas. Para ilustrar cmo se puede utilizar SQL, lo siguiente es un ejemplo de un simple SQL estndar consulta y una consulta SQL ms potente: Simple: "Select * from dbFurniture.tblChair" http://www.airscanner.com (C) 2003 Ciro Peikari, Seth Fogie Pgina 2 Esto devuelve toda la informacin en la tabla de la tblChair dbFurniture base de datos. Complejo: "EXEC master .. xp_cmdshell 'dir c: \" Este corto de comandos SQL devuelve al cliente la lista de archivos y carpetas en el directorio c: \ directorio del servidor SQL. Tenga en cuenta que este ejemplo se utiliza un procedimiento almacenado extendido que es exclusivo para MS SQL Server. La segunda funcin que el servidor de base de datos de aplicaciones en comn es que todos ellos requieren algunos forma de conexin autenticada entre el cliente y el host. Aunque el lenguaje SQL bastante fcil de usar, al menos en su forma bsica, cualquier cliente que quiera realizar consultas deben primero ofrecer algn tipo de credenciales que se autorice el cliente, el cliente tambin debe definir el formato de la solicitud y la respuesta. Esta conexin se define por varias caractersticas, dependiendo de la ubicacin relativa de la cliente y qu sistemas operativos estn en uso. Podramos pasar todo un artculo discutiendo diversas tecnologas, tales como las conexiones DSN, DSN-less, RDO, ADO, y ms, pero estos temas estn fuera del alcance de este artculo. Si desea obtener ms informacin de ellos, un poco Google'ing le proporcionar informacin ms que suficiente. Sin embargo, la siguiente es una lista de los elementos ms comunes incluidos en una conexin solicitud. Base de datos fuente Tipo de solicitud Base de datos ID de usuario Contrasea Antes de que pueda realizar la conexin, el cliente debe definir qu tipo de servidor de base de datos que se est conectando. Esto es manejado por un componente de software que proporciona al cliente las instrucciones necesarias para crear la solicitud en el formato correcto. Adems de los tipos

de la base de datos, el tipo de solicitud se puede utilizar para definir con mayor precisin cmo la peticin del cliente se manejadas por el servidor. Luego viene el nombre de base de datos y, finalmente, la autenticacin de la de la informacin. Toda la informacin de conexin es importante, pero por el momento es el eslabn ms dbil de la informacin de autenticacin [MD] o falta de ella. En un servidor se gestiona adecuadamente, cada base de datos tiene sus propios usuarios con permisos especficamente designados que controlar qu tipo de actividad que pueden realizar. Por ejemplo, una cuenta de usuario se configura como de slo lectura para aplicaciones que necesitan para acceder slo a la informacin. Otra cuenta se debe utilizar para inserciones o actualizaciones, y tal vez incluso una tercera cuenta se utilizar para las eliminaciones. Este tipo http://www.airscanner.com (C) 2003 Ciro Peikari, Seth Fogie Pgina 3 de control de cuentas se asegura de que cualquier cuenta comprometida es limitada en su funcionalidad. Desafortunadamente, muchos programas de bases de datos estn configurados con contraseas nulas o fcil, lo que conduce a ataques de hackers xito. Los ataques directos Ahora que usted entiende los fundamentos de comandos SQL y los requisitos que deben se reunieron para un cliente para realizar una conexin de base de datos, vamos a echar un vistazo a cmo un hacker puede el abuso de estas tecnologas para sus propios fines. Al igual que muchos otros basados en computadora tecnologas, a menudo no es el producto que est en falta, sino que la culpa es de la implementacin. Todas las aplicaciones de servidor SQL tiene una cuenta de administrador por defecto. Esta cuenta se utiliza por el administrador de base de datos para crear bases de datos, crear cuentas de usuario, asignar permisos, y mucho ms. Sin embargo, cuando una aplicacin de servidor de base de datos est instalada, esta cuenta debe tienen una contrasea por defecto para que el administrador de base de datos (DBA) pueden acceder a la base de datos software para la configuracin requerida y las tareas de configuracin. La siguiente es una lista de la mayora de los aplicaciones de bases de datos comunes y sus cuentas de DBA por defecto: Nombre Usuario Contrasea Orculo sistema

orculo MySQL (Windows) raz nulo MS SQL Server SA nulo DB2 dlfm ibmdb2 Esta lista de nombres de usuario / contrasea no es complejo y se puede encontrar en cualquier nmero de Web sitios. Por esta razn, una de las primeras tareas de un DBA se insta a realizar cuando la creacin de y la configuracin del servidor SQL es asignar una contrasea segura para el programa de base de datos cuenta de administrador (root, sa, sistemas, dlfm). Por desgracia, esto es a menudo completamente ignorado o pospuesto hasta que se olvida. En otras palabras, cualquier hacker que tropez en este servidor conectado a Internet por completo poda tener los datos en l [md] y tal vez la red a la que el servidor est conectado. Adems de la falta de contraseas, administradores de bases que muchos utilizan contraseas dbiles que se pueden encontrar en un diccionario, que son cortas (menos de seis caracteres), o que son nombres comunes, lugares, o eventos. Estas bases de datos tambin estn sentados objetivos para casi cualquier pirata informtico que detecta la Software de servidor SQL a travs de un escaneo de puertos. Como a continuacin veremos de ejemplo, el uso de programas, un hacker http://www.airscanner.com (C) 2003 Ciro Peikari, Seth Fogie Pgina 4 puede simplemente tirar las contraseas en el servidor SQL hasta que se rompe. Si la contrasea no se encuentra o es dbil, ser slo cuestin de minutos antes de que tenga acceso a los datos. La siguiente se muestra cmo un hacker en primer lugar de la sonda y posteriormente un ataque SQL servidor. Encontrar un servidor de SQL es una tarea sencilla. Simplemente toma un puerto configurado correctamente escner o una secuencia de comandos SQL escner, para crear una lista de objetivos. Por ejemplo, SQLScanner, que es un programa en lnea disponibles (incluido en la suite SQLTools), permite a un hacker escaneo de decenas de miles de computadoras en un solo disparo en busca de servidores MS SQL. (Ver Figura 1.) Figura 1 SQLScanner de sondeo para servidores SQL a travs de Internet.

Una vez que el hacker tiene una lista de objetivos, el siguiente paso es investigar cada servidor para obtener ms informacin sobre la versin, el puerto, y el mtodo por el cual acepta las peticiones entrantes. La figura 2 ilustra la SQLPing programa, que tambin forma parte de la suite de SQLTools. http://www.airscanner.com (C) 2003 Ciro Peikari, Seth Fogie Pgina 5 Figura 2 SQLPing recopilacin de informacin sobre un objetivo potencial. Este programa le dice que el hacker cmo conectarse a la base de datos y los mtodos que pueden o puede que no funcione. Adems, se proporciona el nombre del servidor SQL, que puede ser til cuando adivinar las contraseas y determinar el propsito del servidor. A continuacin, una piratas informticos del servidor de SQL para las cuentas dbiles. Usando un programa como SQLDict o SQLCracker (tambin incluido en la suite SQLTools), un hacker puede rpidamente y sistemtica un archivo de diccionario y probar la fuerza de un servidor SQL. Desafortunadamente, un anlisis que dura no ms de cinco minutos vuelve a menudo algunos resultados positivos los resultados. Una vez que un hacker tenga acceso a una cuenta de DBA, o incluso una cuenta de usuario normal, el siguiente paso es el uso de ese nombre de usuario y contrasea para conectarse a un servidor de base de datos y tomar posesin de esos datos. En otras palabras, este hacker puede descargar, actualizar y eliminar datos en su antojo. Este tipo de control no puede venir como una sorpresa, pero estaba consciente de que un cuenta la base de datos tambin puede dar acceso a un pirata informtico completo para el sistema de archivos en un servidor, o incluso a los archivos en la red a la que est conectado? http://www.airscanner.com (C) 2003 Ciro Peikari, Seth Fogie Pgina 6 Para mostrar el poder de acceder a DBA, vamos a ilustrar una de las muchas maneras en que un hacker puede abuso de un servidor SQL Server para obtener de forma annima el acceso a sus archivos a travs de una cuenta DBA secuestrados. En primer lugar, un hacker necesita un mtodo de envo de las solicitudes annimas a un servidor de base de datos. Afortunadamente, esto slo requiere un sitio Web que est alojado en una compaa que apoya scripting. En un sitio Web remoto, un hacker puede programar o cargar slo un script que se conecta y proporciona una peticin al servidor SQL. Un ejemplo de este tipo de aplicacin

se puede encontrar en www.aspalliance.com / mtgal / source_code / tsql.exe Una vez extrado, este Archivo ASP proporciona a sus usuarios con la posibilidad de introducir manualmente una cadena de conexin que se establece una conexin con un servidor SQL remoto. Una vez conectado, esta aplicacin ASP enva el entr comandos SQL a la meta y los resultados los resultados. A pesar de un guin como este tiene grandes usos legtimos, es fcil ver cmo tambin puede ser abusado. El siguiente paso es enviar una solicitud autenticada con el servidor SQL de base de datos que contiene un de comandos que ayuda a que el hacker tener acceso completo al servidor. Un mtodo popular es utilizar el procedimiento almacenado extendido xp_cmdshell se incluye con MS SQL Server. Este guin en realidad sirve como un portal para el archivo cmd.exe del servidor. En otras palabras, un SQL comando puede mover archivos o realizar un listado de directorio. Sin embargo, este comando puede tomar formas nefastas, incluyendo el uso de TFTP para descargar ncx99.exe (un shell remoto populares Trojan) o copia de usuario del servidor de archivos SAM cuenta en la carpeta raz del servidor Web para que se puede descargar de forma annima y luego roto. El punto es que la base de datos programa en el servidor es uno de los muchos temas posibles que pueden verse amenazados por un ataque directo SQL. Por ejemplo, la Figura 3 se muestra un ataque a un servidor MS SQL que explota a un DBA cuenta con una contrasea nula. En este ejemplo, estamos usando el discutido previamente tsql.asp aplicacin (con una ligera modificacin) para enviar una serie de peticiones a la meta que dar lugar a la descarga y ejecucin de un troyano de una lnea de servidores FTP. Figura 3 http://www.airscanner.com (C) 2003 Ciro Peikari, Seth Fogie Pgina 7 Utilizando TSQL.ASP enviar. A partir de esta ilustracin, se puede ver el poder que una cuenta DBA puede tener en un SQL servidor. El uso de mtodos como ste, un hacker puede tener un control total de un servidor en cuestin de segundos. Los ataques indirectos (SQL Injection) Un ataque directo a un servidor SQL Server no siempre es el mejor enfoque para un hacker. Para ejemplo, si la cuenta DBA tiene una contrasea segura, podra tomar aos para crack. En

Adems, muchos servidores SQL no estn conectados directamente a Internet, sino que son escondido a buen recaudo detrs de un firewall. A pesar de estos escenarios son los obstculos vlido por un ataque de hackers, siempre hay algo ms que una forma de violacin de la seguridad. Un ataque indirecto a un servidor SQL Server se realiza mediante un programa que interacta con la base de datos. Esto generalmente toma la forma de un motor de bsqueda, la forma de autenticacin de usuarios, o incluso un programa de correo electrnico de recogida de direcciones. La debilidad no se encuentra en la base de datos servidor o incluso en la autorizacin dbil. En su lugar, se encuentra en la forma en que el programa secuencias de comandos est escrito. En otras palabras, este tipo de ataque es a menudo el resultado de un programador error, no un error del servidor SQL. Para ilustrar esto, echemos un vistazo a un motor de bsqueda simple que se puede encontrar en una tienda en lnea. Cuando una persona entra en el nombre del elemento que le interesa, esta informacin se coloca en una consulta SQL. Por ejemplo, el siguiente podra ser una peticin SQL si el usuario est en busca de informacin sobre los muebles: "SELECT * FROM tblStore donde descripcin =" $ Palabra de bsqueda.. ";" La ltima cadena SQL enviada al servidor SQL se ver como sigue: "SELECT * FROM tblStore donde descripcin =" mobiliario ";" Nota cmo la palabra de bsqueda completa se coloca entre las comillas simples, y tambin la nota; que indica el final de una consulta SQL. El servidor toma esta solicitud y enviar...