2010-03-16 20 views
11

Recientemente encontré this blog entry en una herramienta que escribe ataques XSS directamente en la base de datos. Parece una manera terriblemente buena de escanear una aplicación en busca de debilidades en mis aplicaciones.¿Existen herramientas multiplataforma para escribir ataques XSS directamente en la base de datos?

He intentado ejecutarlo en Mono, ya que mi plataforma de desarrollo es Linux. Desafortunadamente se bloquea con un System.ArgumentNullException en el interior de Microsoft.Practices.EnterpriseLibrary y parece que no puedo encontrar suficiente información sobre el software (parece ser un proyecto de una sola toma, sin página principal y sin desarrollo posterior).

¿Alguien conoce una herramienta similar? Preferiblemente debe ser:

  • multiplataforma (Java, Python, .NET/Mono, incluso multiplataforma C está bien)
  • de código abierto (me gusta mucho poder auditar mis herramientas de seguridad)
  • capaz de hablar con una amplia gama de productos de base de datos (los grandes son los más importantes: MySQL, Oracle, SQL Server, ...)

Editar: me gustaría aclarar mi objetivo: Me gustaría una herramienta que directamente escribe el resultado de un ataque de inyección XSS/SQL exitoso en la base de datos. La idea es que quiero comprobar que cada lugar de mi aplicación corrige con la codificación de salida. Detectar y evitar que los datos lleguen allí en primer lugar es algo completamente diferente (y podría no ser posible cuando visualizo datos escritos en el DB por una aplicación de un tercero).

Edición 2: Corneliu Tusnea, el autor de la herramienta he vinculado al anterior, desde entonces ha lanzado la herramienta como software libre en CodePlex: http://xssattack.codeplex.com/

+0

Sólo para que conste la entrada de blog es ahora 404. Se parecía interesante sin embargo ... – Eric

+0

Una rápida búsqueda en Google no muestra una nueva ubicación para el blog Tusneas, por desgracia. –

Respuesta

2

Creo que metasploit tiene la mayoría de los atributos que está buscando. Incluso puede ser el único que tiene todo lo que especifique, ya que todos los demás que puedo pensar son de código cerrado. Hay algunos módulos existentes que tratan con XSS y uno en particular al que debe echar un vistazo: Infección por HTTP XSS de Inyección de SQL de Microsoft. A partir de los sonidos de ese módulo, es capaz de hacer exactamente lo que quiere hacer. El marco está escrito en Ruby, creo, y se supone que es fácil de ampliar con sus propios módulos que puede necesitar/querer hacer. Espero que eso ayude.

http://www.metasploit.com/

+0

¡Definitivamente va en la dirección correcta! Todavía escribe los datos a través de un exploit, que no sería necesario para mi caso de uso, pero hace lo que quiero. –

+0

Ok, gracias por la aclaración. En ese caso, tomaría el archivo xssAttacks.xml del zip de la herramienta xssattack al que está vinculado en el blog que mencionó. Escribiría un script que examine mi base de datos de prueba/desarrollo e inserte uno de esos ataques en cualquier columna que sea tipo varchar/string/test/etc. Esa podría ser tu mejor apuesta. – mikewilliamson

+0

sí, eso es básicamente lo que haré si no existe tal herramienta: transferir la herramienta a Java (porque eso es lo que mejor sé). Solo esperaba que existiera algo más. –

1

Hay algunos plugins de Firefox para hacer algunas pruebas XSS aquí: http://labs.securitycompass.com/index.php/exploit-me/

+0

Esas son probablemente herramientas útiles, pero no son lo que busco. Me gustaría inyectar los ataques en el DB para * explícitamente * probar la codificación de salida. –

1

Un amigo mío sigue diciendo que php-ids es bastante bueno. No he probado a mí mismo, pero suena como si aproximadamente podría coincidir con su descripción:

  • de código abierto (LGPL),
  • Plataforma Cruz - PHP no está en su lista, pero tal vez está bien?
  • Detecta "todo tipo de XSS, Inyección SQL, inyección de cabecera, recorrido de directorio, RFE/LFI, DoS y ataques LDAP" (esto es de las preguntas más frecuentes)
  • Registros en bases de datos.
+0

Lo siento, pero eso no es lo que estoy buscando. Estoy intentando probar mi codificación de salida inyectando cadenas de ataque XSS en mi base de datos. Esto parece ser un filtro para detectar ataques actuales y solo funciona para aplicaciones PHP. –

+0

@Joachim Sauer: Entiendo mal tu oración "que escribe ataques XSS directamente en la base de datos" - Pensé que querías decir que debería escribir los hechos sobre un ataque que ocurrió directamente en la base de datos. –

1

No creo que exista tal herramienta, aparte de la que usted nos indicó. Creo que hay una buena razón para eso: probablemente no sea la mejor manera de probar que todos y cada uno de los resultados estén codificados correctamente para el contexto aplicable.

Al leer acerca de esa herramienta, parece que la premisa es insertar vectores aleatorios xss en la base de datos y luego explorar su aplicación para ver si alguno de esos vectores tiene éxito. Esta es más bien una metodología al azar, por decir lo menos.

Una idea mucho mejor, creo, sería realizar revisiones de código.

Puede que le resulte útil echar un vistazo a algunos de los recursos disponibles en http://owasp.org, a saber, el Estándar de verificación de seguridad de la aplicación (ASVS), la Guía de prueba y la Guía de revisión de códigos.

+0

@jah: estoy de acuerdo en que puede haber formas mejores, pero las revisiones de código pueden ser tan acertadas. No estoy diciendo que una herramienta de este tipo sea el final de todas las herramientas de seguridad (ninguna herramienta puede serlo), pero puede ser una herramienta muy útil para una primera aproximación. –

+0

@Joachim: No estoy de acuerdo con que 'las revisiones de códigos puedan ser tan fáciles de ejecutar' (pueden ejecutarse mal, seguro). Los problemas con esa herramienta específica son dos: primero, no parece haber ningún control sobre qué vectores se prueban, por lo que un enfoque metódico, asegurando que se intenta una amplia gama de técnicas para cada campo, está fuera de discusión y segundo, no hay forma de asignar entradas específicas a sus respectivas salidas; solo navega por la aplicación esperando hits. Si define correctamente un conjunto de controles de seguridad, debería ser muy fácil verificar que se están utilizando con una revisión de código. – jah

2

No estoy seguro si esto es lo que está buscando, es un fuzzer de parámetros para HTTP/HTTPS.

No lo he usado por un tiempo, pero IIRC actúa como un proxy entre usted y la aplicación web en cuestión e insertará cadenas de ataque de inyección XSS/SQL en cualquier campo de entrada antes de considerar si la respuesta fue "interesante "o no, por lo tanto, si la aplicación es vulnerable o no.

http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project

Desde su pregunta supongo que es un tipo de fuzzer que estás buscando, y uno específicamente para aplicaciones de XSS y web; si estoy en lo cierto, ¡entonces eso podría ayudarte!

Forma parte del Proyecto de seguridad de aplicaciones web abiertas (OWASP) al que "jah" lo ha vinculado anteriormente.

+0

Esto también se ve muy interesante, pero no es lo que estaba buscando específicamente. ¡Quiero probar la * codificación de salida * correcta de mis aplicaciones! Para esto necesito datos en mi base de datos ** como si un ataque hubiera tenido éxito **, sin importar si mi aplicación es vulnerable o no. –

+1

@Joachim: si su base de datos ofrece una interfaz web, entonces podría ejecutar el parámetro fuzzer en esa interfaz, para que pueda insertar algo directamente en la base de datos (quizás defina primero algunas vistas actualizables de las tablas, por lo que no puede cambiar teclas principales, etc.) Entonces tendría que verificar, si su aplicación expone contenido no protegido. Esto podría ser una solución, si no encuentra una herramienta más adecuada ... –

+0

@chris_l: idea clara! Lo investigaré si no encuentro la herramienta "perfecta". –

Cuestiones relacionadas