LUCIANO ARANGO: OK, muchachos. Mi nombre es Luciano Arango. Soy un estudiante de segundo año en la Casa de Adams. Y vamos a estar hablando de defensa activa de seguridad web. Así que yo trabajo para la Oficina de Información Seguridad en SEAS. Y durante el verano, me internaron en SeguraTec, que era una información empresa de seguridad que sirvió para el Banco de Columbia. Eso es sobre todo donde aprendí lo que he aprendido hasta ahora. Y así, algunos de los materiales que estamos va a ir hoy, no tenemos realmente se habla en clase. Pero lo haremos pronto. Va a ser como SQL, JavaScript. Y en realidad no hemos repasado. Así que puede ordenar de vuelo a través de él, y usted puede no saber algunas cosas. Pero pronto, usted aprenderá él. Y todo va a tener sentido. También otra cosa - permanecer ético. Algunas de las cosas que aprendes, te podría utilizar en formas no éticas. Si es tuyo, sin duda prueba. Definitivamente me motivo a ustedes para tratar sus propios servidores, intente ir dentro de ellos. A ver si puedes penetrar en ellos, si usted puede conseguir en su interior. Pero no de cualquier otro. Los policías no les gusta realmente los chistes y general, nos puso esto aquí. Estábamos tonteando. Consiguen realmente enojado. Así que dirígete a este sitio web. Lo tengo abierto aquí. Se trata de un sitio web, y tiene un montón de ejemplos. Lo que pasa es que el primer ejemplo es una especie de va a ser mucho más fácil que el anterior ejemplo, en un sentido que el primer ejemplo es completamente inseguro. Y el último es una especie de lo que es un persona normal de seguridad web haría. Pero todavía se puede ordenar de conseguir alrededor de eso. Y vamos a centrarse en un y dos, uno y dos ejemplos. Aceptar. Vamos a empezar con cross-site scripting. El JavaScript se ejecuta en el navegador del cliente. Es un lenguaje de programación que se utiliza para ejecutarse en el navegador del cliente para usted no tiene que actualizar el sitio web e ir de nuevo al servidor. Usted tiene que correr. Por ejemplo, Facebook, usted no tiene volver a cargar la página web para el nuevo estado cambios a subir. Se trata de utilizar JavaScript para generar todas estas cosas. Así que podemos inyectar código JavaScript malicioso en los sitios web. Y de esa manera, cuando enviamos un enlace a alguien, podríamos especie de enviarlo con una parte del código que queremos. Hay persistente y no persistente JavaScript - cross-site persistente y no persistente scripting, quiero decir. Y la diferencia de que persistente es JavaScript que será guardado en el sitio web. Y no persistente será JavaScript que será en realidad sólo ocurrirá una vez. Así que echemos un vistazo a un ejemplo muy rápido. Aceptar. Así que este sitio web, simple, aquí no pasa nada. Y vamos a tratar de insertar algo de JavaScript. Así que la manera de empezar a escribir JavaScript es que empezamos con la secuencia de comandos de inicio. Y cerramos con la escritura. Estamos simplemente va a poner un mensaje - Te voy a mostrar - de alerta. Alerta es una función que JavaScript utiliza para mostrar algo. Así que vamos a intentarlo realmente rápido. Yo voy a ir, hola alerta. Bueno, se me olvidó poner - Aceptar. Así que eso es simple. Ponemos JavaScript en un sitio web, y se ha producido. Y que tipo de sólo ocurre en nuestro sitio web, ¿no? Así que parece que no es un problema, ¿verdad? Quiero decir, ¿cómo puede usted usar esta forma maliciosa? Así que la forma en que lo hagan los hackers esto es realmente simple. Ellos van a agarrar. Pueden enviar este enlace a usted. Si voy a enviar este enlace a usted en este momento, y abrirlo, se va a decir hola, decir que mi sitio web le está diciendo hola. Y así, si yo fuera a decir algo un poco más inteligente, si me levanto un Función de JavaScript que tipo de que ya escribió - pero si usted lo mira, voy a ir sobre él antes de que yo escribí. Así que vamos a establecer un tiempo de espera. Vamos a esperar a que un par de segundos. De hecho, vamos a esperar a que, si No me equivoco, a cinco segundos. Esto va en milisegundos. Y entonces lo que vamos a hacer es que estamos va a alertar de que el inicio de sesión el tiempo de espera para volver a iniciar sesión Y vamos a cambiar la ubicación a una ubicación diferente. Así que si le envío esta página web a otra, que van a ser navegar alrededor, calma. No ocurre nada. Y en cinco segundos, se va decir, el tiempo de espera de inicio de sesión. Por favor, vuelva a iniciar sesión pulg Una vez que haga clic en OK, voy a llevarlos a otro sitio web. Presumiblemente, el sitio va a ser similar a la página web que en que estaban antes. Y van a iniciar su credenciales en mi sitio web en lugar de su página web. Y para que pueda enviar a la gente una un correo electrónico con el enlace. Yo digo, oh, aquí hay un enlace. Se trata de un banco, por ejemplo. Digo, aquí, voy en este enlace. Y una vez que lo envían, son va a navegar alrededor. Puedo esperar durante 15 segundos, 20 segundos, y luego pop que por favor vuelva a entrar firmar de nuevo. Ustedes pueden tratar con muchas más cosas. Es complicado porque ustedes no han visto JavaScript, por lo que podría No sé algunas funciones. Pero todo lo que tienes que hacer es empezar con la escritura, terminar con guión. Y se puede poner cualquier cosa en el medio. Alerta es una función, espere. Ubicación de la ventana te lleva a una nueva ubicación. Pero se puede hacer mucho más. Y así, la idea es que tomamos eso. Si voy al ejemplo dos, y yo puso en este mismo código, es no va a funcionar. Así que ha de imprimir todo lo que fuera porque lo que este sitio web originalmente hace es si pongo nada aquí, que va a imprimir hacia fuera aquí. Así que no es nada fuera de impresión. Este ejemplo es en realidad la comprobación para ver si el script está ahí. Así que sí, adelante. Pídeme. AUDIENCIA: no está enviando una petición GET o POST? LUCIANO ARANGO: Si. son enviando una solicitud GET. AUDIENCIA: ¿Lo es? LUCIANO ARANGO: Si. También navegadores utilizan las peticiones POST. Pero estoy tratando de mostrar las solicitudes get para que podamos ver lo que hay realmente está pasando. Y así, si nos fijamos en el código - por lo que no funciona más. Y si echamos un vistazo a este código, que va a ser en el ejemplo dos. Lo que esta persona está haciendo, la persona a cargo de este navegador - abrir, OK - está sustituyendo el guión palabra. Esta es PHP, que ustedes podrían han visto un poco el momento. Él sólo la sustitución de la escritura de palabras con el nombre. Así que, sin embargo, si voy por delante y sólo hay que poner en - si yo cojo mi código de nuevo, y voy modificarlo un poco. En lugar de la escritura, yo voy a cambiar para escritura con mayúscula R. Y vamos a ver si el código funciona. Por lo tanto, no se ha impreso a cabo, la cual es una buena señal. Y espero que en dos segundos más, que va a aparecer. Su nombre de usuario el tiempo de espera. Aceptar. Todo está bien. Así que la comprobación de secuencia de comandos podría no necesariamente funcionará. La persona - también puede comprobar si hay mayúsculas guión, minúscula escritura, caso str comparar, asegúrese de que son lo mismo. Pero el hacker todavía puede hacer más o menos lo lo hicimos en Vigenére cuando nos mudamos personajes de nuevo una pareja, seguir adelante. Y se puede encontrar la manera de poner la escritura volver ahí para que pueda inyectar ese guión. Así que lo que usted desea utilizar es htmlspecialchars a proteger a su sitio web. Y lo que esto hace es que hace Asegúrese de que lo que pones en - por ejemplo, las cotizaciones o los esta mayor que o menor que - se sustituye con algo eso no será - déjame el zoom aquí - el signo real. Sustituirá los especiales HTML personajes que veremos cuando estemos hablando - oh, esto va a llevarme de vuelta a - estos personajes aquí. Estos significan que algo que viene. Para HTML, esa franja que comienza nos dice que algo HTML relacionada está llegando. Y queremos deshacernos de eso. No queremos poner HTML en un website.k No queremos que el usuario sea capaz de poner algo en su página web que pueden afectar a su página web, al igual que script o HTML, o algo así. Lo que es importante es que usted desinfectar la entrada del usuario. Así los usuarios pueden de entrada de muchas cosas. Se puede introducir un montón de cosas para tratar de engañar a su navegador en aún la ejecución de este código de script. Lo que quiero hacer es que no basta con ver para la secuencia de comandos, pero mira por todo eso podría ser dañino. Y htmlspecialchars harán que por usted, por lo que no tiene que preocuparse por ello. Pero no trate de hacer por ti mismo especie de con su propio código. Es claro en XSS todo el mundo? Aceptar. Vamos a ir a la inyección de SQL. Así que la inyección de SQL es probablemente la el número uno de la vulnerabilidad en diferentes sitios web. Es decir, un buen ejemplo - Estaba investigando más lejos por esto. Y me encontré con este artículo impresionante, donde Vi que Harvard fue violada, fue hackeado. Y me preguntaba, bueno, ¿cómo iban a hacerlo? Harvard es la más impresionante, más asegurar universidad nunca. ¿Cierto? Bueno, a la violación de los servidores, los piratas informáticos utilizan un técnica llamada inyección SQL. Así que esto ocurre en el día a día. La gente se olvida de tener en cuenta para la inyección SQL. Harvard hace. Creo que dice aquí, Princeton, Stanford, Cornell. Entonces, ¿cómo - ¿y qué es esto SQL inyección que está llevando todo esto gente abajo? Aceptar. Así SQL es un lenguaje de programación que podemos acceder a bases de datos. Lo que hacemos es seleccionamos - así que lo que esto se lee en este momento es de selección todo, desde la mesa. SQL, se transforma en estas bases de datos que tienen mesas llenas de información. Así que seleccione todo, desde los usuarios donde el nombre es nombre de usuario. ¿Cierto? Bastante simple. La idea de inyección SQL es que insertar algún código malicioso que haría engañar al servidor para que ejecute algo diferente de lo que originalmente se ejecuta. Así que digamos que el nombre de usuario, ponemos en o 1 es igual a 1. Por eso, pusimos en o 1 es igual a 1. La forma en que se va a leer ahora será select de los usuarios, de todo, desde usuarios - esto es todo - donde nombre es nombre de usuario, pero nombre de usuario es o 1 es igual a 1. Así que el nombre no es nada o 1 es igual a 1. 1 es igual a 1 es siempre cierto. Así que esto siempre devolverá información de los usuarios. Aceptar. No es necesario tener la nombre de usuario correcto. Sólo podemos tener lo que queremos, y ha de devolver la información lo que necesitamos. Veamos otro ejemplo. Si hemos seleccionar todo de usuario, donde nombre es usuarios DROP TABLE - así que ¿qué cree usted que esta voluntad hacer si pongo el nombre de usuario como usuarios DROP TABLE? ¿Alguien tiene una idea? Sí. AUDIENCIA: Se lo voy a decir a volcar todas las tablas. LUCIANO ARANGO: Va a decirnos para volcar todo en la página web, todo en la base de datos. Y lo que la gente usa esto para - por lo Voy a mostrarles. He desactivado eliminar las tablas porque yo no te quiero chicos a soltar mis tablas. Echemos un vistazo a esto. Así que esto simplemente se levanta la información para una persona determinada. Así que, ¿cómo sabemos si esto es afectada por la inyección de SQL. Vamos a revisar muy rápido si podemos poner algo - déjame copiar este código. Yo voy a ir sobre ella en un segundo. Me voy a poner la raíz y 1 es igual a 1. Este derecho aquí, esto signo de porcentaje 23 - lo que realmente es, si yo buscar aquí mismo, en - la forma en que HTML tiene en número, si echar un vistazo a cuando puse en un espacio aquí - si yo fuera al espacio algo aquí, cambia a un 2 por ciento. ¿Ustedes ven esto aquí cuando puse en un espacio? La forma en que funciona es que sólo se puede enviar valores ASCII a través de HTML. De forma que sustituye, por ejemplo, un espacio con 20 por ciento. No sé si ustedes han visto eso antes. Sustituye a un hashtag con 23 por ciento. Necesitamos un hashtag al final o declaración para que podamos decirle al base de datos que te olvides de comentar este último punto y coma al final. Queremos que no piensa en eso. Sólo queremos que se ejecute todo que tenemos de antemano y comentar eso. Vamos a echar un vistazo. Así que si yo fuera a poner algo mal - digamos, por ejemplo, me pongo 2 iguales 1, no me da nada. Cuando me puse en 1 es igual a 1, y lo hace regresar algo, esto me dice que este es vulnerable a una inyección SQL. Yo sé ahora que todo lo que Puse después de esto - y, por ejemplo, eliminar tablas o algo por el estilo sin duda trabajar. Sé que es vulnerable a inyección SQL porque sé que debajo de la capilla, que está dejando me hago el 1 es igual a 1 cosa. ¿De acuerdo? Y si nos fijamos en las demás, número dos y número tres, es vamos a hacer un poco más de comprobar debajo de la capó de lo que es. Así que cualquiera habilitar la gota nada ni juzgado? ¿Ustedes suerte de conseguir SQL todavía? Porque yo sé que ustedes no han visto todavía, así que es una especie de confuso para ustedes. Vamos a echar un vistazo. ¿Cuál es la manera de prevenir SQLI? Aceptar. Así que esto es realmente importante, ya que chicos definitivamente quieren evitar esto en sus sitios web. Si no es así, todos sus amigos van a se burlan de usted cuando se les cae todo sus tablas. Así que la idea es que reparar el SQL en cierto modo, mientras que coinciden lo que las entradas del usuario con una cadena determinada. Así que la forma en que esto funciona es que preparar la base de datos. Usted selecciona el nombre, el color y calorías a partir de una base de datos denominada fruta. Y entonces, ¿dónde calorías es menor que, y ponemos un signo de interrogación no diciendo que vamos a la entrada algo en un segundo. Y el color es igual, y nos hace una pregunta marca diciendo que vamos a introduzca datos en un segundo también. ¿De acuerdo? Y luego lo ejecutamos, poniendo en 150 y rojo. Y esto va a comprobar para asegurarse Asegúrese de que estos dos - esta matriz se compruebe que éstas dos son un número entero y que esto es una cadena. Luego vamos y buscamos a todo, lo ponemos en rojo. Eso significa que buscamos a todos. Esto significa que en realidad ejecuta el SQL declaración y poner de nuevo en rojo. Aquí hacemos lo mismo, pero nosotros hacer lo mismo para el amarillo. Y buscamos a todos. Y de esta manera, evitamos que el usuario de ser capaz de introducir algo eso no es lo que hemos especificado, una cadena o un número entero, por ejemplo. Yo estaba hablando antes sobre depender de otros. Cuando ustedes empezar su proyecto, usted es definitivamente va a utilizar arrancar o algo similar. ¿Han utilizado alguna vez Wordpress? Probablemente ustedes han utilizado Wordpress más probable. Así que el problema con el uso cosas de los demás - Yo sólo voy a bienes rápida Google Vulnerabilidad Wordpress. Si tiro de esto ahora mismo - Yo, literalmente, hice un dos segundos Google. Podemos ver que Wordpress - este tiene fecha en septiembre '12. 26 se actualiza. La configuración por defecto de Wordpress antes 3.6 no impide estos ciertos archivos, lo que podría hacer que sea más fácil para los ataques cross-site scripting. Así que una historia rápida, una vez que estaban trabajando - así estaba yo, en verano, un trabajo de prácticas. Y estábamos trabajando con una especie de como una gran compañía de tarjeta de crédito. Y se basan en algo que se llama - No sé si ustedes alguna vez jugaron con un producto llamado Joomla. Joomla es un producto que se utiliza para de control - tipo de similar a Wordpress, usado para construir sitios web. Así que tuvieron su página web trabajando en Joomla. Esto es en realidad una tarjeta de crédito empresa en Colombia. Te llevaré a su sitio muy rápido. Así que ellos usan Joomla. Y no habían actualizado Joomla a la última incorporación. Y así, cuando nos estábamos tomando un vistazo a su código, pudimos realmente entrar su código y robar todo el información de la tarjeta de crédito que tenían, todos los números de tarjetas de crédito, los nombres, las direcciones. Y esto fue sólo - y su código era perfectamente bien. Tenían un gran código. Era toda la seguridad. Revisaron todas las bases de datos. Se aseguraron de cross-site scripting estaba bien. Pero usaron algo que no era actualizada, que no era seguro. Y para que los llevó a - así que ustedes definitivamente se va a utilizar otra código, los marcos de la gente de la gente para construir su sitio web. Asegúrese de que son seguras porque a veces no eres tú, el que comete un error. Pero alguien comete un error, y entonces te caes por eso. Contraseñas y PII. Así contraseñas. Aceptar. Echemos un vistazo a las contraseñas muy rápido. Aceptar. Por favor, dime que todo el mundo utiliza seguro - Espero que todo el mundo aquí utiliza contraseñas seguras. Yo sólo voy a dejar que como una suposición. Así que ustedes son sin duda va a almacenar las contraseñas de tus sitios web. ¿Vas a hacer algo como un inicio de sesión, o algo así. Lo importante es no almacenar contraseñas en texto plano. Esto es extremadamente importante. Usted no desea almacenar un contraseña en texto plano. Y definitivamente no quiere realmente para almacenarlo en un hash de una manera. Así que lo que es un hash de un sentido es que cuando se generar una palabra, cuando se pone esta palabra en una función hash, lo hará generar de nuevo algún tipo de críptico mensaje o conjunto críptica de llaves. Te voy a mostrar un ejemplo. Voy hash que contraseña1 palabra. Hash md5 Así me va a volver algún tipo de información extraña. El problema es que la gente por ahí que les gusta ir a los sitios web tienen ya descubierto especie de todos los hashes md5. Lo que hicieron es que se sentaron en su computadoras, y hash cada sola palabra posible por ahí hasta que consiguieron una especie de lo que es esto. Si yo fuera a ver esto - Agarré este hash. Si consigo este hash de - si entro en un sitio web, y me encuentro con este hash porque me permite la bases de datos, y miro hacia arriba, alguien ya descubierto por mí. Sí. Así que la gente se sentó, y cualquiera que sea md5 hash que usted pone en, van a volver a algo es decir una palabra. Si Hachís otra palabra, como - No sé - trees2. No quiero que se decepcione por mis búsquedas de Google. Ahí está, trees2. Así que un montón de sitios web seguir utilizando hash MD5. Ellos dicen, oh, es seguro. No vamos a almacenar en texto plano. Tenemos este hash md5. Y todo lo que tengo que hacer es Google el número. Ni siquiera tengo que calcular a mí mismo. Yo sólo puedo buscarlo en Google, y alguien Ya lo hizo por mí. Aquí hay un montón de ellos. Aquí hay un montón de contraseñas. Así que, definitivamente, no debe emplear hash md5, porque todo lo que tiene que hacer es Google él. Así que ¿qué es lo que desea utilizar en su lugar? Aceptar. Algo llamado salazón. Entonces, ¿cuál es el salado - es lo que ustedes recuerden cuando éramos hablando de azar en - No estoy seguro de qué conjunto de procesadores que era - Se lo PSet allí o cuatro? Estábamos hablando de la búsqueda la aguja en el pajar. Y en el conjunto de procesadores, se dijo que se podía realmente averiguar lo aleatorio genera porque alguien ya está corriendo al azar un millón de veces y sólo suerte de formar lo que ellos generan. Lo que quiero hacer es poner en una entrada. Así que eso es lo que la salazón tipo de es. Ya cuenta de lo salado devuelve para cada obra. Así que lo que hace es salado se pone en una sal. Se pone en una determinada palabra. Y será hash de esa palabra en función en lo que se pone aquí. Así que si yo hash de la contraseña uno con este frase, va para discutir diferente si Hachís contraseña1 con una frase diferente. De alguna manera se le da un lugar para comenzar por el hash para comenzar. Así que es mucho más difícil de calcular, pero todavía puede calcularla, especialmente si utiliza una mala sal. La gente ya ha también descubierto sales comunes y descubierto lo que es. Sales de azar son mucho mejores, pero la mejor manera es usar algo que se llama cripta. ¿Y qué cripta le permite no - por lo que estas funciones son ya construido para usted. Mucha gente se olvida de que, o se olvidan de utilizarlo. Pero si miro hacia arriba cripta PHP, cripta Ya devuelve una cadena hash para mí. Y lo que realmente sales muchas veces y hashes muchas veces. Así que no tenemos que hacer esto. Lo único que tienes que hacer es enviarlo a la cripta. Y va a crear un gran picadillo sin tener que preocuparse acerca de la sal ni nada. Porque si usted fuera a la sal, tienes recordar lo que la sal que utilizó porque si no, usted no puede conseguir su contraseña de nuevo sin el sal que usa. Aceptar. Y también identificable personal información. Así que la seguridad social, la tarjeta de crédito - eso es bastante obvio. Pero a veces la gente se olvida de la manera que obras es, la cantidad de información hace que en realidad la necesidad de encontrar alguna persona? Alguien hizo un estudio sobre este un camino de regreso. Y fue como, si usted tiene el nombre completo, no se puede encontrar alguien tan fácilmente. Pero lo que si usted tiene un nombre completo y su fecha de nacimiento? ¿Es eso suficiente para identificar alguien en concreto? ¿Qué pasa si usted tiene su nombre y la dirección de la calle que viven? ¿Es eso suficiente para encontrar a alguien? Y fue entonces cuando se preguntan, ¿cuál es información de identificación personal, y ¿qué debe preocuparse por no regalar? Si usted regala identificable personal información que alguien te da, usted podría ser demandado. Y definitivamente no queremos eso. Así que cuando usted está poniendo su sitio web , y usted tiene una muy cool diseño, es de esperar que usted hizo un proyecto final impresionante. Cualquier especie de que deseas lo puso ahí. Usted quiere asegurarse de que todo lo que usted está tomando por parte del usuario, si es información de identificación personal, querrá asegurarse de que usted está siendo realmente cuidado con él. Inyección de Shell. Aceptar. Inyección de carcasa permite que el intruso obtener acceso a la línea de comandos real en su servidor. Y así que él es capaz de ejecutar código que no se puede controlar. Veamos un ejemplo de esto hermosa cadena aquí. Si entramos en la página web de nuevo, estoy va a entrar en la inyección de código. Así que lo que esto hace es - que es también lo que fuimos mirando antes. Estamos dejando al usuario poner en cualquier que quiere, y lo que imprimirá lo que quieras. Así que me voy a poner una llamada. Lo que esto hace es - se iniciará mediante la concatenación. Así que me permite ejecutar cualquier comando de fórmula de la persona antes y mi mando. Y me estoy quedando un comando del sistema. Y estas últimas cadenas son - recuerda lo que hablé con ustedes acerca de, mientras que usted tiene que codificar en un método de URL. Si me quedo esto ahora - Te voy a mostrar aquí - verás que terminé hasta la ejecución de un comando. Esto es en realidad el servidor real que mi sitio web se está ejecutando. Así que nosotros no queremos eso, porque puedo correr - este servidor no es mío. Así que no quiero echar a perder su hermana, servidor de Marcus. Pero se puede ejecutar más comandos que son peligrosos. Y potencialmente, podría eliminar archivos, eliminar directorios. Puedo eliminar un directorio determinado si Yo quería, pero yo no quiero hacerle eso a Marcus. Él es un buen tipo. Él me prestó su servidor. Así que voy a dejarlo de descuento en la buena. Así que lo que no quieren usar - no lo hacemos quiera usar eval o sistema. Eval o el sistema nos permite hacer estas llamadas al sistema. Medios de evaluación evalúan. Sistema significa lo que me encontré. Está dirigido algo en el sistema. Pero podemos prohibir estas cosas en PHP para que no los usamos. Y la carga de archivos. Yo iba a hacer una impresionante cosa con la carga de archivos. Pero como te dije chicos, mi archivo Lo carga no está funcionando. Si tuviera que cargar un archivo en este momento - si tuviera que cargar un archivo, y es una imagen - usted tiene algo de carga eso es una foto. Eso está bien. No ocurre nada. Pero si usted tiene un archivo de carga, por ejemplo, y el usuario realmente archivos un archivo PHP o un archivo exe o algo así, entonces usted podría potencialmente tener un problema. Esto funcionaba antes. Por desgracia para mí, es no trabajar nunca más. Si yo, por ejemplo, subir el archivo, estoy no obtener permiso para subir el archivo debido a que el servidor no siendo mía. Así que el chico es muy inteligente. Así que no queremos - Voy a mostrar que ustedes - Bueno, estas son algunas herramientas muy interesantes. Así que estos - entrar - si ustedes tienen Firefox - espero que sí. Hay dos agregaciones llamadas SQL Inject Yo y Cross-Site Guión Me. Abren tan poco de lado bares en el lado. Y si tuviera que ir a CS60, por ejemplo - así que lo que hace es lo que parece para todas las formas que - con suerte, no voy a entrar en problemas por esto. Pero en Aceptar. Aquí está el sistema de pin. Así que cuando me pongo a buscar agujeros en el sistema, lo primero que hago es abrir esta pequeña y hermosa herramienta en el lado. Y yo voy a probar formas con ataques automáticos. Y así, lo que esto hace es que poco a poco abrir un montón de navegadores. Aquí hay un montón de navegadores. Y está tratando cada combinación única de cross-site scripting que posiblemente es decir, si que se ve en el lado. Y que me va a dar un resultado especie de cuál es la respuesta. Todos pasar. Obviamente, todos ellos pasan. Quiero decir, ellos son muy inteligentes la gente de allá arriba. Pero si yo fuera a correr - He tenido momentos antes, cuando ejecuto esto sobre los proyectos finales de los alumnos. Yo simplemente ejecutar SQL Inject Me con todos los diferentes ataques. Y está tratando de inyectar SQL este servidor pin. Así que si nos desplazamos hacia abajo, para ejemplo, se dice - esto es bueno si devuelve. Así que probó algunos ciertos valores. Y el servidor ha devuelto un código que fue negativo. Retire temporalmente. Esto es bueno. Trata todas estas pruebas. Así que usted puede simplemente ejecutar - Me gustaría poder encontrar un sitio web de bienes rápida que me dejaron - tal vez la tienda CS50. Wow, esto va a tomar demasiado tiempo. Voy a dejar que la primera prueba No terminó bien. Por lo tanto, se queja. Así que estas son tres cosas. Estas herramientas son gratis. Puedes descargarlos y ejecutarlos en su sitio web, y le dirá si usted tiene cross-site scripting, si tiene SQL, si usted tiene algo por el estilo. Yo soy una especie de echar a perder. Lo que es importante - OK, así que nunca confiar en el usuario. Cualquiera que sea el usuario introduce para ti, enviame Seguro que desinfectar, lo limpie, comprobar por las cosas correctas, que le está dando lo que quería que se le dan. Esté siempre al día de lo marcos que en realidad estás usando. Si utiliza algo como bootstrap - Yo sé que ustedes van a utilizar arrancar porque él va a ir sobre esto pronto en la clase - y Wordpress o algo por el estilo, Normalmente esto podría ser hackeado. Y entonces usted ni siquiera conoce. No eres más que el funcionamiento de su sitio web. Y es totalmente seguro. Y usted va abajo. Así que me voy a pescar muy temprano. Pero quiero agradecer Pentest laboratorios. Voy a mostrar que ustedes algo llamado Pentest laboratorios. Si ustedes son realmente interesado en lo que la seguridad es en realidad, hay una sitio web llamado Pentest laboratorios si ustedes van a él en estos momentos. Oh, bueno, eso no es todo. Yo sólo voy a correr así. Google me dice la respuesta. Aceptar. Y te enseña el uso - por lo que dice, aprender penetración web las pruebas de la manera correcta. Te enseña - con suerte, usted es una persona ética. Pero le enseña cómo se puede ver en cómo se puede conseguir dentro de sitios web. Y si se entera de cómo se puede conseguir dentro de sitios web, usted puede aprender a proteger uno contra sitios web en su interior. Déjame el zoom en porque tal vez ustedes no están mirando a este derecho. De inyección de SQL a la cáscara, por lo que especie de cómo puedo obtener de SQL inyección de shell. Y usted descarga esta máquina virtual. Y la máquina virtual ya viene con el sitio web que usted está va a probar. Usted descarga el PDF. Y le mostrará línea por línea lo que lo que tienes que hacer, lo que comprueba. Esto es lo que un atacante en realidad Cómo llegar dentro de una página web. Y algunas de estas cosas es complicado. Me gustaría poder ir más cosas con ustedes. Pero me preocupa que ustedes no tiene en realidad - esto es lo que me acerqué con ustedes, pruebas web para las pruebas de penetración. Realmente no sé lo que SQL es y lo que - El seminario de Carl Jackson es increíble. Ustedes no saben ordenar de lo que se trata. Pero si vas a este sitio web, y usted descargar estos tutoriales y éstos PDF, usted puede echar un vistazo a una especie de lo que el área de la seguridad que realmente hace en pruebas de penetración, ver cómo se puede conseguir sitios web dentro y proteger a sí mismo de ella. Así que si hago un resumen muy rápido, Será prevenir cross-site scripting. ¿Quieres usar htmlspecialchars cada momento en que el usuario introduce algo. Evitar la inyección SQL. Si usted hace eso, usted ya está mejor que Harvard estaba cuando fueron violadas. Y asegúrese de que sus contraseñas no están en texto plano. Asegúrese de hacer no sólo una forma de hash ellos, sino que se utiliza cripta, el PHP función que les mostré chicos. De esa manera, debe ser bueno. Además, si sus amigos le permiten, ejecuta SQL Inject Me en sus sitios web. Ejecutar secuencias de comandos en sitios cruzados en sus sitios web. Y verás que muchos de estos sitios web tener un montón de vulnerabilidades. Es increíble cómo se olvidan de mucha gente para desinfectar sus bases de datos o para hacer seguro de lo de introducción de la persona no es de código script. Aceptar. En cierto modo me terminé muy temprano. Pero si alguien tiene alguna pregunta acerca de cualquier cosa, usted puede dispararme una pregunta. Sí. Vaya, vaya. AUDIENCIA: Sólo quiero preguntar, ¿puede explicar cómo el archivo subir exactamente obras. LUCIANO ARANGO: Si. Así que déjame que te enseñe el archivo subir muy rápido. Así que la carga de archivos - el problema ingenio la carga de archivos ahora mismo es que - Voy a abrir el código para que ustedes ver el código detrás de las escenas. Y se sube. Aquí hay un código para el cargador de archivos. Estamos tratando de entrar en esta directorio por aquí. Y estamos tratando de, una vez que la entrada de archivo, archivo isset - así que cuando hay una presentar en ARCHIVOS, esa imagen, a continuación, tratamos de mover aquí. Cogemos el archivo aquí. El método es POST, tipo, imagen, archivo. Y estamos enviando este archivo. Y una vez que lo hagamos, así que una vez el archivo tiene una imagen, que estamos tratando de enviarlo a este directorio. El problema es que el sitio web no es dejarme ir a este directorio, ya que no quiere que vuelva. No quiere que me vaya - Me tengo que ir - así que aquí está la cargar. He aquí las imágenes. Tengo que ir todo el camino de regreso a la comenzando y lo puso en en el acto ir y ponerlo en el directorio. Así que si yo estaba corriendo una ventana de terminal, y quería mover un archivo - [Inaudible] puede verlo. Si quisiera mover un archivo, tengo para poner el nombre del archivo y luego el ruta completa Quiero enviar el mensaje. Y a continuación, el servidor no está dejarme ir hacia atrás. Y lo que no está dejando a llegar a ese archivo. Pero normalmente - así que hay un código para subir un archivo. Así que normalmente lo que sucederá es que el persona no está comprobando si mi archivo termina con. jpeg, así que que desee comprobar. Permítanme abrir un ejemplo demasiado rápido. Aceptar. Esta persona adecuada - así ejemplo dos es la comprobación si preg_match - aquí está aquí - para asegurarse de que termina con PHP, lo cual es bueno. Esto es bueno. Pero hay una gran reales problema con esto. Esto es bueno. Pero si tuviera que poner un archivo llamado myfavoritepicture.php.jpeg, pude siendo potencialmente deshacerse del jpeg y ejecutar PHP it.k Eso es peligroso. Usted no quiere que la persona sea capaz para ejecutar código en su sitio web. Pero entonces. Jpeg lo deja pasar. La idea es lo que realmente quieres hacer No es tomar los archivos, A. Pero, bien, lo que que realmente quiero hacer es asegurarse de que se lee en todo el mundo. Y no hay nada. Php en ella. No hay. Php en el nombre del archivo entero. AUDIENCIA: Pero podrías poner. jpeg en el extremo. Los servidores siguen corriendo el código. LUCIANO ARANGO: No, no lo hará correr por el principio. Tienes que volver y probar para ver si puedes - AUDIENCIA: Así que tenemos que - Bien, sólo otro conjunto que implica - LUCIANO ARANGO: Si. AUDIENCIA: OK. LUCIANO ARANGO: Si. Aceptar. ¿Alguna otra pregunta? Aceptar. Voy a dejar esto y ordenar de tratar de ver si ustedes pueden - los otros son un poco más complicado porque requieren mucho más conocimientos de SQL que sólo la a partir del conocimiento de la web es SQL y lo que JavaScript está. Pero voy a tratar de seguir con esto, y es de esperar que los chicos se aprenda sobre esto y tratar de echar un vistazo a lo que puede hacer y cuántos ejemplos usted puede conseguir a través. Alguien tiene alguna otra preguntas al respecto? Adelante. Sí, disparar, disparar. Sí, adelante. Adelante. AUDIENCIA: OK. Así me enteré de cómo Cotizaciones Magia no están lo suficientemente seguro. LUCIANO ARANGO: ¿Qué - Cotizaciones magia? AUDIENCIA: Si. Por lo tanto, añade - así que siempre que la entrada algo, que siempre añade comillas. LUCIANO ARANGO: Si. Sí. Aceptar. AUDIENCIA: Y entonces pensé que trabajé, pero luego busqué arriba. Y dijo que no es bueno. Pero no estoy seguro de por qué. LUCIANO ARANGO: Si. AUDIENCIA: No utilice Comillas Mágicas, porque no es seguro. LUCIANO ARANGO: OK. Así Comillas Mágicas es al insertar SQL y ya suma la oferta para usted. AUDIENCIA: Siempre agrega comillas todo lo que usted pone adentro LUCIANO ARANGO: Si. Así que el problema con esto es que - Voy a echar un vistazo a - AUDIENCIA: ¿Cómo se adquieren la sentencia de SQL? O supongo que podría ser como dice la cita seleccionar. LUCIANO ARANGO: Sí, usted necesita buenas citas para el SQL. AUDIENCIA: No, pero el servidor lo hace por usted. LUCIANO ARANGO: Estos pequeños cotizaciones aquí, estas pequeñas frases? AUDIENCIA: Si. LUCIANO ARANGO: Si. El problema es que se puede comente la última - OK, así que lo que puedo hacer es lo que puedo comentar - así que vamos a echar un vistazo a - dejame abrir un archivo de texto de edición. Permítanme editar este aquí directamente. Aceptar. Pueden ustedes ver que claramente? Lo que puedo hacer es que puedo comentar fuera el último. Esto le comente la última. Y luego voy a poner uno aquí, puesto todas las cosas malicioso aquí. Así que el usuario es en realidad insertando, ¿verdad? El usuario no está introduciendo las cosas, ¿no? Esto es lo que voy a la entrada como la persona que intenta entrar. Me voy a poner en - esa es una comilla. Es sólo serpenteante por error. Y entonces lo que el código va a hacer - lo siento, me voy a tomar esto. Lo que el código va a hacer es que va a añadir el primero comillas aquí. Y se va a agregar a la última comilla también. Y también va a añadir el última, última comilla. Pero yo estoy comentando estos cita marca a cabo, por lo que no se ejecutan. Y estoy terminando esta cita marque aquí. ¿Entiendes? ¿Te has perdido? Yo puedo comentar la última cotización marca, y cuidar de la primera comilla. AUDIENCIA: Y acabado justo el primero. LUCIANO ARANGO: Si. Y así terminar la primera. Sí, eso es correcto. Eso es lo que puedo hacer. Sí. ¿Alguna otra pregunta como esa? Esa es una gran pregunta. No, sí, tal vez. Con suerte, ustedes van a hacer una especie de más sentido cuando se estudia SQL y cosas así. Pero asegúrese de que - mantener estas herramientas en el reloj. Lo sentimos, estas herramientas más aquí. Estas herramientas son muy buenos. Si alguien tiene alguna pregunta, usted también puede enviarme un email. Este es mi correo electrónico normal. Y este es mi correo electrónico del trabajo, que es cuando yo trabajo en SEAS. Bien, gracias. Gracias, chicos. Eres bueno para ir. Usted no tiene que quedarse aquí. No aplauda. Eso es raro. Bien, gracias, chicos.