Está en la página 1de 11

ntroduccin.

"SQL Injection" es el nombre en ingls del ataque contra un Gestor de Bases de Datos Relacional que aprovecha la vulnerabilidad de una aplicacin cliente del mismo. Dicha vulnerabilidad consiste en permitir mandar instrucciones SQL adicionales a partir de un campo o un parmetro de entrada - por lo que se dice han sido "inyectadas". La finalidad del ataque es realizar tareas sobre la base de datos y de ser posible sobre host mismo, teniendo resultados indeseables e inesperados que van desde la alteracin de un dato hasta apoderarse del servidor.

El ataque "SQL Injection" es posible dadas ciertas caractersticas del dialecto -o lenguaje- SQL que lo dotan de flexibilidad, tales como:

Poder embeber comentarios en una sentencia SQL Poder escribir varias sentencias SQL juntas y ejecutarlas en bloque. Poder realizar consultas de metadatos por medio de "tablas de sistema".

Por este motivo cualquier RDBM que entiende SQL llmese Oracle, DB2, SQL Server, MySQL, etc. es susceptible de recibir un ataque de este tipo a travs de sus aplicaciones cliente - este ataque se produce a nivel de aplicacinya sean de tipo Consola, Windows o Web e independiente de la plataforma de desarrollo (Java, Win32, .NET, etc.) con la que fue elaborada.

Protegindonos.
Existen ciertos principios a considerar para proteger nuestras aplicaciones de un SQL Injection: 1. 2. 3. 4. No confiar en la entrada del usuario. No utilizar sentencias SQL construidas dinmicamente. No utilizar cuentas con privilegios administrativos. No proporcionar mayor informacin de la necesaria.

A continuacin veremos algunos ejemplos de como implementar dichos principios. 1. No confiar en la entrada del usuario significa:

Filtrar la entrada del usuario de caracteres SQL para limitar los caracteres involucrados en un SQL Injection.

Private Function string SafeSqlLiteral( _ ByVal inputSQL As String) As String Return inputSQL.Replace("'", "''") End Function '... Dim safeSQL As String = SafeSqlLiteral(Login.Text) Dim myCommand As SqlDataAdapter = _ New SqlDataAdapter("SELECT au_lname, au_fname " & _ "FROM authors WHERE au_id = '" & safeSQL & "'", _ myConnection)
Proteger las instrucciones de bsqueda de modelos coincidentes (LIKE).

Private Function SafeSqlLikeClauseLiteral( _

ByVal inputSQL As String) As String Dim s As String = inputSQL s = inputSQL.Replace("'", "''") s = s.Replace("[", "[[]") s = s.Replace("%", "[%]") s = s.Replace("_", "[_]") Return s End Function
Verificar tanto el tamao y como el tipo de los datos de las entradas de usuario: o Evitando los siguientes tipos caracteres de riesgo para el gestor de datos: El delimitador de consultas: Punto y coma (;) Delimitador de datos de tipo cadena de caracteres: Comilla sencilla ('). Delimitadores de cometario: Guin doble (--) y "/*..*/" en el caso de SQL Server. Nota: En lugar de evitar los caracteres peligrosos, otro modo de protegernos es aceptar slo los caracteres inofensivos. Evitando las cadenas con el inicio de nombres de las tablas y los procedimientos del sistema: "sys" y "xp_" en el caso de SQL Server. As como las siguientes palabras: AUX, CLOCK$, COM1, COM8, CON, CONFIG$, LPT1, LPT8, NUL y PRN o Utilizar de preferencia controles con valores predefinidos o discretos tales como cuadros de lista, cuadros combinados, de verificacin, etc. en lugar de cuadros de texto. Verificar cualquier tipo de entrada, no slo lo introducido en los controles IU sino tambin aquellas que no son visibles, como parmetros de entrada y campos tipo hidden de las pginas web. Realizar la verificacin en todos los niveles y capas de la aplicacin, ya que si slo protegemos la capa de presentacin somos vulnerables a que un atacante salte a la siguiente capa y realizar su ataque.

2. No utilizar sentencias SQL construidas dinmicamente. En lugar de ello:

Utilizar instrucciones SQL con Parmetros.

Dim myCommand As SqlDataAdapter = New SqlDataAdapter( _ "SELECT au_lname, au_fname FROM Authors " & _ "WHERE au_id= @au_id", myConnection) Dim parm As SqlParameter = _ myCommand.SelectCommand.Parameters.Add("@au_id", _ SqlDbType.VarChar, 11) parm.Value = Login.Text
Aunque de hecho es mejor utilizar Procedimientos Almacenados siempre que sea posible, as como tambin:

Utilizar Parmetros al llamar Procedimientos Almacenados.

Dim myCommand As SqlDataAdapter = _ New SqlDataAdapter("AuthorLogin", myConnection) myCommand.SelectCommand.CommandType = _ CommandType.StoredProcedure Dim parm As SqlParameter = _ myCommand.SelectCommand.Parameters.Add("@LoginId", _ SqlDbType.VarChar,11) parm.Value = Login.Text
3. No utilizar cuentas con privilegios administrativos.

Ejecutar las sentencias SQL o invocar Procedimientos Almacenados con una cuenta con privilegios mnimos. Nunca emplear 'sa' en el caso de MS SQL Server. Pero de preferencia adems... Conceder permisos de ejecucin nicamente a Procedimientos Almacenados propios desde los cuales, a manera de "wraper", se realicen las consultas a las Tablas de Usuario y llamados a los Procedimientos Almacenados del Sistema que se requieran en las aplicaciones, y negar el acceso directo a stos ltimos y a las Tablas de Usuario.

4. No proporcionar mayor informacin de la necesaria.

No exponer al usuario final los mensajes de error devueltos por el gestor de la base de datos, para no brindar mayor informacin que sea til al atacante. Implementar un sistema de gestin de errores que notifique del mismo nicamente a los administradores de la aplicacin y el gestor de la base de datos. Por ejemplo, para el caso de una aplicacin web, establecer en el archivo de configuracin web (Web.Config) el valor del atributo debug del elemento compilation en False y el atributo mode del elemento customErrors en On o en su defecto en RemoteOnly.

<compilation defaultLanguage="vb" debug = "false" /> <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> </customErrors>

Conclusin.
Para prevenir un ataque SQL Injection, as como para realizar pruebas (Testing) de vulnerabilidad contra el mismo en nuestras aplicaciones, no debemos olvidar que cualquier aplicacin que permita una "entrada" que sirva de parmetro para una consulta SQL es vulnerable a ste ataque. Por ello en ste artculo describimos brevemente de lo que se trata un SQL Injection, as como de los principios bsicos a seguir para protegernos del mismo. Por ltimo ejemplificamos algunas implementaciones de dichos principios. Medidas a tomar para protegerse de un ataque SQL Injection.

Haga clic en hacking por diversin y beneficio


por Jesse Farmer en Viernes, 22 de abril 2011

Un amigo me Imed el otro da, preguntando: "Sabes cmo hacer que la gente haga clic en las cosas que estoy presentando algo que a Reddit .? Me pueden ayudar el ttulo del mensaje" Una descripcin cruda de mis habilidades, sin duda, pero me hizo rer y me inspir a escribir un artculo sobre el arte de la piratera clic. Qu es la piratera haga clic en?

Aparte de ser un trmino que acaba de hacer, haga clic en la piratera es un tipo deingeniera social, donde el objetivo es conseguir que alguien haga clic en un hipervnculo. La relacin podra ser el ttulo de un puesto de Reddit, un botn en un formulario de una pgina de aterrizaje que est tratando de capturar su direccin de correo electrnico, o una imagen en un anuncio de Facebook. Decepcin puede ser, pero no est implicada necesariamente. Voy a usar Facebook, Hacker News, y Reddit, como los principales ejemplos de todo este artculo porque los conozco mejor. Si usted tiene otros ejemplos por favor deje un comentario! Para Bien o Para Mal Todas las tcticas que voy a describir puede ser utilizado para bien o para mal, y he visto cada uno utilizado para ambos. No tome este artculo como un respaldo para el envo de correo basura, estafas o engaos de Internet. Hay un montn de zona gris, tambin. En su inicio Reddit falsa en el lugar de actividad para evitar el aspecto de un pueblo fantasma. Era eso tico? Un error? Ninguna de estas tcticas son un sustituto para la generacin de valor real para su cliente, a pesar de que le ayudar a entender cmo sus clientes reaccionan a lo que se les presentan (y la forma de incentivar a reaccionar de la manera que usted desea). Los duros (y ms importante) las piezas son todava depende de usted. Con esa advertencia a un lado, vamos a bucear en los detalles.

Entender a su audiencia Por encima de todo, me tomo el tiempo para entender a mi pblico. Cada comunidad en lnea tiene sus propias costumbres, normas y estndares de comportamiento. Usted tiene que entender antes de que se pueden mezclar o destacar como sea necesario. Por ejemplo, Hacker News valores de civilidad 1 , trato directo, y la honestidad intelectual, pero puede ser un poco miope y adusto. Imgenes de ingenio de los valores (especialmente los juegos de palabras y injokes/memes) y tiene un fuerte sentido de la justicia comunitaria. Tambin puede ser completamente juvenil. Desde la perspectiva de que el hacker clic, un ttulo de un juego de palabras lleno podra hacer bien en Reddit, pero nunca volvera a ver la luz del da en Hacker News. Pedir Ayuda o Comentarios Una manera de hacer que la gente a prestar atencin es a pedir ayuda. Hacker News tiene un " Ask HN ", la cual se desarroll exclusivamente por el comportamiento de la comunidad. No son similares "Dile a HN" y "examen" de inicio de mis funciones. Por ejemplo, aqu se dibuj original de Houston despus de Hacker News pidiendo revisiones de Dropbox. Cada inicio S que quiere publicar un "fanfarrn" entrada en Hacker News y han conseguirlo a la primera pgina, y su gama de motivos honestos (que realmente quieren retroalimentacin) para auto-servicio (que slo quieren la atencin).

Dar un Regalo Todo el mundo ama regalos, pero cuando los recibamos, tambin sienten la presin de corresponder. El hacker clic puede utilizar la presin para que la gente hace lo que quiere. Esta tctica es la diferencia entre "me hizo un pastel" y "un pastel para ti . " Una persona normal est obligado a aceptar e incluso corresponder. Por ejemplo, este usuario Reddit escribi un hack CSS para cambiar la apariencia de la pgina - un pequeo regalo para cualquier persona que utilice Reddit. La comunidad Reddit correspondido dndole upvotes. Observe cmo l dice que lo hizo "para Reddit." El ejemplo de la torta tambin funciona, sin embargo. :) Soborno El soborno es lo opuesto a la entrega de regalos. En esta situacin, el hacker clic, dice, "Hazlo por m y yo te dar algo." Si ese algo es realmente impresionante la gente va a hacer casi cualquier cosa. En el ejemplo de estereotipo de aqu son los anuncios scammy para iPod gratis y similares. Todo lo que tienes que hacer es llenar este formulario y haga clic en este enlace y se le entr a ganar. O, bueno, en lugar tal vez usted puede enviar esta oferta a tres de sus amigos, y si uno de ellos gana demasiado, usted gana,! Esto se puede hacer bien en ciertos contextos. Por ejemplo, los desarrolladores de juegos de Facebook a menudo el comercio se instala mediante el pago de los jugadores moneda virtual, por ejemplo, en "Instalar este juego a ganar diez dlares de la granja." O un

desarrollador de juegos puede tener una pgina de destino especial que ofrece la moneda virtual de los jugadores como una forma de alentar a que el jugador haga clic en el botn de instalacin. El jugador obtiene lo que quiere (dinero virtual) y el desarrollador del juego adquiri un cliente de forma gratuita. Suponiendo que los trminos estn claramente definidos que no hay nada malo en ello.Por supuesto, hay un montn de espacio para la falta de honradez absoluta por productos prometedores que nunca llegan. No seas ese tipo. Escasez La gente quiere lo que no se puede tener. O, ms exactamente, la gente quiere lo que ellos piensan que no pueden tener. Dorado, por ejemplo, depende en gran medida de esta tctica para impulsar las ventas.Mejor haga clic en ese botn de compra ahora, porque nos estamos quedando sin! En el caso de dorado de la escasez es legtima, pero puede ser artificial, tambin. Un desarrollador de juegos puede hacer que un objeto en el juego ultra-rara con el fin de impulsar un comportamiento especfico. Beta limitada invita son un mtodo probado y verdadero de la generacin de trfico y los intereses; dar 20 invita a una audiencia de 20.000 personas y recoger la informacin de seguimiento para las personas que no reciben a tiempo. La escasez tambin trabaja con el tiempo, por ejemplo, "Si se instala este juego dentro de los prximos treinta segundos, obtendrs un bono de crdito de diez." Tic, tic, tic, tac.

Prueba Social Al igual que en la escasez, la gente no quiere sentir que est perdiendo. Si ellos ven a otras personas haciendo algo, especialmente las personas que conocen o respetan, van a ser ms probable que lo haga. Esta es la razn d' tre de Facebook Facepile widget. Haga clic en el botn que, al igual.Usted sabe que usted desea. Vamos, a todos tus amigos estn haciendo. Incluso la adicin de las caras de la gente al azar, pero agradable de aspecto puede ser eficaz en lograr que la gente haga clic a travs. Aqu est una captura de pantalla de la pgina principal Match.com 's.

Mira a toda esa gente feliz. No quieres ser feliz, tambin? Una pelea

En lugar de tratar de mezclarse con la comunidad, algunas veces ayuda a generar controversia. Esto puede que sea frente a la comunidad, o la creacin de dos facciones dentro de una comunidad contra la otra. Voy a compartir una historia a m mismo. Ya en 2009 estaba trabajando en una aplicacin de encuestas para Facebook. La gente votar en las encuestas y su voto se aparecen en su fuente de noticias. Los temas ms controvertidos fueron los ms exitosos, as que tome la iniciativa que ha creado una encuesta: "Usted apoya el matrimonio homosexual" Esto fue justo despus de la Proposicin 8 pelea, as que me decid a correr dos series de anuncios en Facebook: uno destinado a 50 millas alrededor de San Francisco y otro de la ciudad destinado a 50 millas alrededor de Salt Lake. No puedo decir que fue una victoria para el discurso poltico civil, pero que gener controversia suficiente para hacer esa encuesta viral y, a su vez que toda la aplicacin viral.2 Fallas del medio ambiente A veces, el medio ambiente tiene defectos que permiten que el hacker clic para ver algunas cosas interesantes. Cuando Facebook lanz su primera generados por los usuarios de productos de votacin, recuerdo haber visto varias encuestas que hacen preguntas como: "Qu modelo es ms caliente?" Las respuestas posibles eran las URL de las imgenes. Por desgracia para el usuario, haciendo clic en el texto de la respuesta (la direccin URL en este caso) podra registrar un voto y despus de

que el voto a su fuente de noticias. Sus amigos, que por supuesto tambin queran ver las fotos de los modelos calientes, hace clic en el URL, de forma accidental votado, y difundir la encuesta a sus amigos. Uy! Haz clic en los hackers utilizaban este mal funcin de forma deliberada para difundir nuevas encuestas a travs de Facebook. 3 No creo que muchas personas no estarn de acuerdo cuando digo que la mayor parte del crecimiento en la Plataforma de Facebook desde el periodo 2007-2009 fue construida sobre fallas similares del medio ambiente. He aqu un ejemplo de dos aos de edad de las brujas de Super Slide de:

Qu ms? Qu ms me falta? Publicar ejemplos en los comentarios. Alguna vez has sido "engaado" a hacer clic en algo? (S que tengo.) Tener una historia divertida? Tiene experiencia en la optimizacin de pginas de aterrizaje, etc y pensar en esto todo el tiempo de todos modos? Deja un comentario y comparte! La contratacin se Everlane

Mi inicio, Everlane , est contratando. Estamos tratando de tener los mejores elementos de las compras en lnea - Merchandising visual, personalidad, y la preservacin - y traerlos en lnea. Echa un vistazo a nuestra pgina de empleos en http://www.everlane.com/jobs y enviar un correo electrnico a jesse@everlane.com~~V si usted est interesado en hablar.

También podría gustarte