2009-10-20 20 views
8

Estoy buscando una forma automatizada para difuminar mi aplicación o escanearla en busca de vulnerabilidades. Por favor, asuma que mi conocimiento de pirateo es 0. También la fuente está en mi servidor local, así que necesito una forma de filtrarla localmente sin depender de una conexión a Internet. ¿Pueden algunos expertos en seguridad darme algunos consejos o recomendaciones? No estoy seguro de qué opciones son mejores.¿Cómo puedo escanear/confundir mi código de vulnerabilidades?

Editar:

Gracias por el esfuerzo de responder, pero hasta ahora ninguno parece conseguir el punto. Me gustaría ser más específico (porque me ayuda con la pregunta) pero sin influir en las opiniones o sonar como si estuviera anunciando un producto específico. Estoy buscando algo como wapiti (disculpa mencionar nombres, pero tuve que hacerlo, porque las respuestas hasta ahora, como aprender sobre inyecciones sql, xss, etc. obviamente no son respuestas "expertas" reales a esta pregunta. Ya sé sobre esto () en serio, hace esta pregunta sonido como que podría preguntado por alguien que no conoce la sal por la seguridad?)

no estoy pidiendo si que debería probar, estoy pidiendo cómo que debería probar. I ya decidí incorporar la automatización (y no hay vuelta atrás en esta decisión a menos que alguien me proporcione una respuesta experta que demuestre que es inútil), así que por favor respete mi decisión de que me gustaría automatizar. No quiero revisar todas las listas compiladas de xss, sql injection, etc. y probarlas manualmente en mi sitio (incluso los hackers no lo hacen). Súper puntos extra para cualquiera que reciba la pregunta.

Algunas personas se preguntan por qué no solo aprenden. Las mejores prácticas (que yo sé) no son lo mismo que saber piratear. Algunas personas quieren argumentar que son una moneda de mano, pero definitivamente no estoy de acuerdo :) por lo tanto, necesito una herramienta de protección por alguien con la "mentalidad de pirata". ¿Cómo va a doler, de hecho, debe intentarlo también;) respuestas de expertos de los que saben.

+0

He estado buscando algún tipo de analizador de código estático durante años. Sobre todo, he puesto mis esperanzas en el nuevo proyecto roadsend + LLVM, es concebible que pueda generar advertencias como desee a medida que compila. –

+0

"Gracias por el esfuerzo de responder, pero ninguno hasta ahora parece entender el punto". - Eso es porque no se puede obtener el punto. Los seres humanos encuentran agujeros de seguridad usando cantidades increíbles de creatividad, esfuerzo y esfuerzo. Si las auditorías de seguridad pueden ser reemplazadas por la automatización, ¿cree que alguien elegiría hacerlo manualmente? –

+0

@Pekka, Parece que está olvidando el punto de que tales herramientas ya existen. Di un ejemplo de uno en mi propia pregunta, sin mencionar que los piratas informáticos todos los días están probando sus sitios usando variaciones de ellos. Ok, suficiente dijo :) – Chris

Respuesta

7

Hay services que realizarán escaneos automatizados de vulnerabilidades. No captarán todo, pero te ayudarán a identificar problemas. Su mejor opción es utilizar uno de estos servicios y APRENDER ALGUNAS mejores prácticas de SEGURIDAD.

Empieza a aprender acerca de sql injection y cross site scripting. estas son las vulnerabilidades más grandes y fáciles de arreglar.

La programación defensiva es una habilidad que en mi humilde opinión todo programador debe aprender.

No hay sustituto para comprender estos problemas por su cuenta.

0

Antes de volverse loco con la automatización (que probablemente arroje resultados que probablemente no comprenda), le sugiero que lea en lugar de escribir código de seguridad y aprenda a identificar las cosas que está haciendo mal. Aquí hay algunos tutoriales para empezar:

http://php.net/manual/en/security.php

De no ser así, me gustaría sugerir la externalización de su código para una empresa de seguridad si se lo puede permitir.

¡Buena suerte!

+1

No me deja publicar más de un enlace en el original, pero aquí hay algunos más: [1] http: //www.phpfreaks.com/tutorial/php-security [2] http://phpsec.org/articles/ –

+0

Muy cierto, es como tratar de ejecutar un análisis automático para buscar problemas de rendimiento: no se puede automatizar la comprensión. –

+0

@Chris: una vez que comprende los problemas relacionados con los aspectos positivos, pueden ser útiles, pero la falta de comprensión dará como resultado el no retorno cuando obtenga una lista de "posibles vulnerabilidades" que no significan nada para el autor del código. Espero que eso explique mi respuesta un poco mejor. –

0

Siempre que conozcas C, puedes trabajar con spike, siempre es bueno hacer una comprobación manual de desbordamientos en cualquier cosa que pueda ser tocada por un usuario final. Las pruebas habituales de% x% x% x para cadenas de formato ataques, y solo para ser diligente en su análisis estático.

PeachFuzz y SPIKE están bien documentados.

En su defecto, escribir el suyo es trivial.

3

Para responder estrictamente a su pregunta, la forma en que debe probar es mediante el uso de una herramienta. Existen dos tipos principales de herramientas que puede usar, un escáner de seguridad que explora activamente un sitio web en ejecución o una herramienta de análisis estático que se ejecuta en el código fuente que usa para construir su aplicación web.

La respuesta corta es que quiere una herramienta de escaneo de seguridad como wapiti o eructo. Herramientas como estas construyen y ejecutan de forma dinámica pruebas de seguridad exclusivas para su sitio. Podría intentar explotar manualmente su propio sitio, pero eso llevaría mucho tiempo y no proporcionaría ningún valor. Sería inútil que revise una lista de problemas conocidos de inyección de xss o sql porque cada problema es exclusivo del sitio al que se aplica. Además, estas herramientas pueden atacar su sitio mejor que una prueba de estrés de seguridad más rigurosa.

Existen 2 herramientas principales que puede utilizar, herramientas de análisis estático y herramientas de análisis dinámico. Las herramientas de análisis estático leen en su código fuente, descifran cómo fluyen los datos a través de la aplicación y buscan problemas de seguridad. En su raíz, la mayoría de los problemas de seguridad permiten que un usuario controle algunos datos que fluyen a una parte inapropiada de una aplicación, por lo que aunque la aplicación no se está ejecutando, se frota contra el problema de detención, método de análisis estático de "adivinar" e intentar cada ruta de código puede producir buenos resultados. Las herramientas de análisis estático dependen del idioma y la mayoría son costosas. Algunos libres son FxCop (C#), el PMD y findbugs (Java), ver http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

herramientas de análisis dinámico (más comúnmente llamado simplemente "escáner de seguridad") que la configuración requerir su aplicación web para que pueda ejecutar las pruebas en contra de ella, esto suena como más lo que quieres Mi herramienta favorita aquí es eructar, algunos gratuitos incluyen wapiti, que también es bueno. Estas herramientas analizarán la forma en que su aplicación maneja los datos, busca las entradas y los llena con datos maliciosos en un intento de desencadenar vulnerabilidades. Una prueba de ejemplo sería probar scripts reflejados entre sitios, el escáner miraría una página e insertaría javascript en cada valor de cadena de consulta, valor de cookie, valor de forma, etc. y luego renderizaría la página para ver si el código malicioso de JavaScript estaba regresando a la página.

Es probable que no necesite o no desee un fuzzer. Las herramientas de fuzzing te ayudan cuando hay mucho código de análisis, por lo que un fuzzer no es el más adecuado para una aplicación de Internet, pero sería una buena opción para un protocolo que estás haciendo. Hay capacidades de fuzzing limitadas en las herramientas de escáner de seguridad enumeradas anteriormente y es probable que no necesite más que esto. Fuzzers también toman tiempo para construir. Los fuzzers a menudo encuentran más cosas en el código c/C++ porque hay menos bibliotecas integradas que ya están haciendo lo correcto, en el caso de webapp hay menos "espacio para jugar fuzzers", por así decirlo.

0

Saber qué es el fuzzing y cómo se puede abordar no necesariamente lleva a las habilidades necesarias para probar y evaluar su software por vulnerabilidades y fallas. Debe usar pruebas automáticas, pero de forma ajustada, en las que modifica las pruebas que realiza la herramienta a medida que encuentra nuevas rutas de entrada, interacciones, etc.

Básicamente, lo que estoy diciendo es que necesita saber lo que está haciendo si desea que esto sea un valor agregado real. No puede simplemente elegir una herramienta, ejecutarla y esperar obtener buenos resultados. Necesita a alguien que realice este tipo de pruebas para trabajar con o para usted. Las herramientas son útiles, pero solo pueden producir resultados útiles si las usa alguien experto en este arte.

0

He usado Paros - http://www.parosproxy.org/ - es gratis, fácil de usar y muestra tanto la causa del error, la posible solución y cómo replicarlo (generalmente un enlace).

Es fácil de configurar y araña todo el sitio, también puede arañar las instalaciones locales.

Tiene una interfaz gráfica de usuario también.

Es viejo, pero es bueno y fácil.

Intenté configurar WAPITI pero fue simplemente demasiado difícil para mí.

0

He estado investigando este tema desde hace muchos años por mi propia aplicación y halló una herramienta fantástica recientemente que estaba basado en PAROS (ver mi otra respuesta anterior)

Su ZAP de OWASP y es las tuercas patos.

Una de las mejores cosas que puede hacer es integrar ZAP en su proyecto de automatización/construir de manera cada vez que se hace una compilación de las pruebas de funcionamiento.

Mejor aún, puedes sentarte junto a tus pruebas automatizadas de selenio para 'recolectar' las páginas que pruebas, ¡entonces ... escanearlas al máximo!

Está muy bien documentado, pero necesitará una PC rápida ya que ejecuta cientos de pruebas por página. Si está haciendo un sitio completo, puede tomar algo de tiempo.

Hay algunas otras herramientas que puede tener en cuenta

me encontré con esta herramienta .... aterradoramente fácil de usar y muy muy completo.

Cada vez que obtengo lo que yo pensaba que era un "falso positivo" con ZAP, escaneaba la página con SQLmap (tienes que descubrir cómo usar Python - es fácil, tomó un par de horas) y SQLmap tampoco verifique el falso positivo o encuentre la vulnerabilidad.

Cuestiones relacionadas