>> LUCIANO ARANGO: OK, les gars.
Mon nom est Luciano Arango.
Je suis un étudiant en deuxième année dans Adams House.
Et nous allons parler de sécurité sur le Web défense active.
Donc, je travaille pour le Bureau de l'information Sécurité dans les mers.
Et pendant l'été, j'ai fait un stage à SeguraTec, qui était un informations
entreprise de sécurité qui a servi pour la Banque de Columbia.
C'est surtout là que j'ai appris ce que j'ai appris jusqu'à présent.
>> Et si une partie du matériel que nous sommes aller sur aujourd'hui, nous n'avons pas
vraiment parlé en classe.
Mais nous allons bientôt.
Ça va être comme SQL, JavaScript.
Et nous n'avons pas vraiment passé au-dessus.
Donc, je peux trier de vol à travers elle, et vous pourriez ne pas savoir certaines choses.
Mais bientôt, vous allez apprendre.
Et il va tout faire sens.
Et une autre chose -
rester éthique.
Certaines des choses que vous apprenez, vous pourrait utiliser des moyens non-éthiques.
>> Si c'est le vôtre, certainement essayer.
Je motive vraiment vous les gars d'essayer vos propres serveurs, essayez
aller à l'intérieur.
Voyez si vous pouvez y pénétrer, si vous pouvez obtenir à l'intérieur.
Mais pas de quelqu'un d'autre.
Les flics n'ont pas vraiment aiment les blagues et Dans l'ensemble, nous avons mis cela ici.
Nous avons été déconner.
Ils obtiennent vraiment en colère.
>> Alors rendez-vous sur ce site.
Je l'ai ouvert ici.
Il s'agit d'un site web, et il a un tas d'exemples.
Ce qui se passe est que le premier exemple est une sorte de va être beaucoup plus facile
que le dernier exemple, dans un sens que le premier exemple
est totalement sécurisé.
Et le dernier est en quelque sorte de ce qu'est un personne de la sécurité web normale ferait.
Mais vous pouvez toujours tri de contourner cela.
Et nous allons concentrer sur un et deux, un et deux exemples.
>> OK.
Commençons par cross-site scripting.
Le JavaScript est exécuté sur le navigateur du client.
C'est un langage de programmation que vous utilisez pour fonctionner sur le navigateur du client afin
vous n'avez pas à mettre à jour le site Web et revenir sur le serveur.
Vous avez en cours d'exécution.
Par exemple, Facebook, vous n'avez pas pour recharger le site pour le nouveau statut
mises à jour viennent.
Il s'agit d'utiliser JavaScript pour générer toutes ces choses.
Donc, nous pouvons injecter du code JavaScript malveillant dans les sites Web.
Et de cette façon, lorsque nous envoyons un lien vers quelqu'un, nous pourrions sorte de l'envoyer avec
une partie du code que nous voulons.
>> Il ya persistant et non persistant JavaScript -
cross-site persistant et non persistant script, je veux dire.
Et la différence étant que la persistance est JavaScript qui sera
enregistré sur le site.
Et non-persistant sera JavaScript qui aura fait juste arriver une fois.
Alors regardons un exemple très vite.
>> OK.
Alors ce site, simple, rien ne se passe ici.
Et nous allons essayer de insérer du JavaScript.
Donc, la façon dont nous commençons à écrire JavaScript c'est que nous commençons avec le script de départ.
Et nous fermons avec script.
Nous allons simplement mettre un message -
Je vais vous montrer -
alerte.
Alert est une fonction JavaScript utilise pour afficher quelque chose.
Essayons donc il très vite.
Je vais y aller, bonjour alerte.
Eh bien, j'ai oublié de mettre -
OK.
Donc, c'est simple.
>> Nous mettons JavaScript sur un site web, et il est venu.
Et il sorte de ne se produit sur notre site Web, à droite?
Il semble donc que ce n'est pas un problème, non?
Je veux dire, comment pourriez-vous utiliser cette malveillance?
Ainsi, la manière que les pirates font c'est vraiment simple.
Ils vont l'attraper.
Ils peuvent envoyer ce lien à vous.
Si je vais envoyer ce lien pour vous maintenant, et vous ouvrir, il va
dire bonjour, dire que mon site web vous dit bonjour.
>> Et si je devais dire quelque chose d'un peu plus intelligent, si je tire un
Fonction JavaScript je genre de déjà écrit -
mais si vous regardez, je vais sur elle avant que je l'ai écrit.
Nous allons donc définir un délai.
Nous allons attendre pour un couple de secondes.
En fait, nous allons attendre, si Je ne me trompe pas, les cinq secondes.
Cela va en millisecondes.
Et puis ce que nous allons faire, c'est que nous sommes aller à avertir que la connexion
expiré à identifier Dans
Et nous allons changer l'emplacement à un emplacement différent.
>> Donc, si je vous envoie ce site à quelqu'un, ils vont être
navigation autour, calme.
Rien ne se passe.
Et dans les cinq secondes, il va à-dire, votre login expiré.
S'il vous plaît vous connecter Dans
Une fois qu'ils cliquent sur OK, je vais prendre à un autre site Web.
Vraisemblablement, le site va être semblable au site que
ils étaient avant.
Et ils vont identifier leur pouvoirs dans mon site à la place de
leur site web.
>> Et si je peux envoyer des gens un envoyer un email avec ce lien.
Je dis, oh, voici un lien.
Il s'agit d'une banque, par exemple.
Dis-je, ici, aller sur ce lien.
Et une fois qu'ils envoient, ils sont va être la navigation autour.
Je peux attendre pendant 15 secondes, 20 secondes, puis pop que s'il vous plaît connectez-vous revenir dans
signer à nouveau.
Les gars, vous pouvez essayer avec beaucoup plus de choses.
C'est compliqué parce que vous avez n'ont pas vu JavaScript, donc vous pourriez
sais pas certaines fonctions.
Mais tout ce que vous avez à faire est de commencer avec un script, terminer par script.
Et vous pouvez mettre n'importe quoi dans le milieu.
>> Alert est une fonction, attendez.
l'emplacement de la fenêtre vous emmène vers un nouvel emplacement.
Mais vous pouvez faire beaucoup plus.
Et si l'idée est que nous prenons cela au large.
Si je vais à l'exemple de deux, et je mis dans ce même code, il est
ne va pas fonctionner.
Donc, il est tout imprimer parce Qu'est-ce que le site à l'origine
fait est si je mets quelque chose ici, il va l'imprimer ici.
Donc ce n'est pas l'impression quoi que ce soit.
Cet exemple est en fait en vérifiant pour voir si le script est là.
Donc oui, allez-y.
Demandez-moi.
>> PUBLIC: N'est-ce pas l'envoi un GET ou POST demande?
>> LUCIANO ARANGO: Ouais. ils sont envoyer une demande d'obtention.
>> PUBLIC: Il est?
>> LUCIANO ARANGO: Ouais.
Aussi navigateurs utilisent les demandes de poste.
Mais je suis en train de montrer les requêtes GET afin que nous puissions voir ce qui est
passe réellement.
Et si nous regardons ce code - si ce n'est pas plus de travail.
Et si nous prenons un coup d'oeil à ce code, ça va être dans l'exemple de deux.
Qu'est-ce que cette personne fait, la personne en charge de votre navigateur -
ouvrir, OK -
remplace le mot script.
C'est PHP, qui vous les gars pourrait ont encore vu un peu de.
>> Il vient remplacer le script de mot avec le nom.
Donc, cependant, si je vais de l'avant et vient de mettre en -
si je prends mon code à nouveau, et je vais de le modifier un peu.
Au lieu de scénario, je vais changer pour script avec un grand R. Et
nous allons voir si ce code fonctionne.
Donc, il n'a pas l'imprimer, qui est un bon signe.
Et nous espérons que dans deux secondes, il va apparaître.
>> Votre identifiant expiré.
OK.
C'est bon.
Donc, la vérification de script peut ne fonctionnera pas nécessairement.
La personne -
il peut également vérifier pour le script majuscule, écriture minuscule, str cas
comparer, assurez-vous qu'ils sont la même chose.
Mais le pirate peut toujours faire un peu ce que nous l'avons fait dans Vigenère quand nous avons déménagé
retour d'un couple caractères, aller de l'avant.
Et il peut trouver une façon de mettre un script retour là-bas afin qu'il puisse injecter
ce script.
>> Donc ce que vous voulez utiliser est htmlspecialchars à
protéger votre site Web.
Et ce que cela fait est qu'il rend vous que ce que vous mettez dans -
par exemple, de citations ou ce supérieur ou inférieur à -
est remplacé par quelque chose ce ne sera pas -
laissez-moi un zoom avant ici -
l'esperluette réelle.
Il remplacera ceux spéciale HTML personnages que nous voyons quand nous sommes
parler -
oh, ça va me ramener à -
ces caractères ici.
>> Ces signifient que quelque chose est à venir.
Pour HTML, cette tranche de commencer nous dit que quelque chose
HTML correspondant est à venir.
Et nous voulons nous débarrasser de cela.
Nous ne voulons pas mettre en HTML website.k Nous ne voulons pas que l'utilisateur
en mesure de mettre quelque chose dans leur site Web qui peuvent influer sur leur site, comme
script ou HTML ou quelque chose comme ça.
Ce qui est important est que vous désinfecter l'entrée de l'utilisateur.
>> Ainsi, les utilisateurs peuvent entrée beaucoup de choses.
Il peut entrer un tas de trucs à essayer de tromper votre navigateur en encore
l'exécution de ce code de script.
Qu'est-ce que vous voulez faire n'est pas seulement l'air pour le script, mais la recherche de tout
qui pourrait être malveillant.
Et htmlspecialchars feront que pour vous, si vous n'avez pas
à s'inquiéter à ce sujet.
Mais n'essayez pas de le faire par vous-même sorte de votre propre code.
Tout le monde est clair sur XSS?
>> OK.
Allons à l'injection SQL.
Donc injection SQL est probablement le numéro un de la vulnérabilité
dans différents sites.
Je veux dire, un bon exemple -
J'étais juste des recherches plus loin pour cette chose.
Et j'ai trouvé cet article impressionnant, où J'ai vu que Harvard a été violé,
a été piraté.
Et je me demandais, bien, comment pourraient-ils le faire?
Harvard est la plus impressionnante, la plus garantir université jamais.
Droite?
Eh bien, à violer les serveurs, les pirates ont utilisé un
technique appelée injection SQL.
>> Donc ce qui se passe sur un jour le jour.
Les gens oublient de prendre en compte pour l'injection de SQL.
Harvard fait.
Je pense qu'il dit ici, Princeton, Stanford, Cornell.
Alors, comment pouvons-nous - alors quel est ce SQL injection qui apporte tous ces
gens vers le bas?
OK.
Donc SQL est un langage de programmation qui nous utilisons pour accéder à des bases de données.
Ce que nous faisons est que nous choisissons -
Donc ce que cela se lit en ce moment est sélectionné tout sur la table.
>> SQL, il se transforme en ces bases de données que des tables pleines de renseignements.
Donc, sélectionnez tout d'utilisateurs où le nom est le nom d'utilisateur.
Droite?
Assez simple.
L'idée de l'injection SQL, c'est que nous insérer du code malveillant qui serait
tromper le serveur en exécutant quelque chose différent de ce qu'il
était à l'origine l'exécution.
Donc, disons que le nom d'utilisateur, nous avons mis en ou 1 est égal à 1.
Nous avons donc mis en ou 1 est égal à 1.
La façon dont il va lire maintenant sera de sélection des utilisateurs, tout de
utilisateurs - c'est tout -
où nom est le nom d'utilisateur, mais nom d'utilisateur est égal à 1 ou 1.
>> Donc le nom n'est rien ou 1 est égal à 1.
1 est égal à 1 est toujours vrai.
Donc, ce sera toujours retourner des informations la part des utilisateurs.
OK.
Nous n'avons pas besoin d'avoir la nom d'utilisateur correct.
Nous pouvons juste avoir quelque chose que nous voulons, et il retourne des informations
que nous avons besoin.
Voyons un autre exemple.
>> Si nous avons tout sélectionner de l'utilisateur, où nom est DROP TABLE users -
afin que pensez-vous de cette volonté faire si je mets le nom d'utilisateur
que les utilisateurs DROP TABLE?
Quelqu'un a une idée?
Oui.
>> PUBLIC: Il va dire à vider toutes les tables.
>> LUCIANO ARANGO: Il va nous dire pour vider tout le site,
tout dans la base de données.
Et ce que les gens utilisent cela pour - si Je vais vous montrer les gars.
J'ai désactivé tomber les tables parce que je ne veux pas que vous
les gars de laisser tomber mes tableaux.
Jetons un coup d'oeil.
Donc, ce tire simplement jusqu'à l'information pour une certaine personne.
Alors, comment pouvons-nous savoir si ce n'est touchés par injection SQL.
Nous allons vérifier très vite si nous pouvons mettre quelque chose -
permettez-moi de copier ce code.
Je vais aller sur elle en une seconde.
Je vais mettre la racine et 1 est égal à 1.
>> Ce droit ici, ce signe pour cent 23 -
ce qu'il est vraiment, si je regarder ici sur -
la façon dont HTML prend en nombre, si vous jetez un oeil à quand je mets dans un espace
ici - si je devais quelque chose de l'espace ici, il le change à un pour cent 2.
Vous ne trouvez ce que vous les gars ici quand je mets dans un espace?
La façon dont cela fonctionne est que vous ne pouvez envoyer des valeurs ASCII par HTML.
Alors qu'il remplace, par exemple, un espace avec pour cent 20.
Je ne sais pas si vous les gars ont vu cela auparavant.
>> Il remplace un hashtag avec 23 pour cent.
Nous avons besoin d'un hashtag à la fin ou déclaration afin que nous puissions dire à la
base de données d'oublier de commenter ce dernier point-virgule à la fin.
Nous voulons qu'il pense pas à ce sujet.
Nous voulons juste qu'il fonctionne tout que nous avons préalablement et
commenter cela.
Jetons un coup d'oeil.
>> Donc, si je devais mettre quelque chose de mal - disons par exemple, je mets deux égaux
1, il ne me donne rien.
Quand je mets en 1 est égal à 1, et il ne retourner quelque chose, cela me dit que
ce est vulnérable à une injection SQL.
Je sais maintenant que tout ce Je mets après -
et par exemple, supprimer des tables ou quelque chose comme ça
va certainement travailler.
Je sais que c'est vulnérable à l'injection SQL parce que je sais que
sous le capot, c'est de laisser moi faire une chose est égal à 1.
OK?
>> Et si nous regardons ces autres, numéro deux et numéro trois, c'est
va faire un peu plus de vérification sous la
capot de ce qu'il est.
Donc, toute personne permettre à la baisse encore rien ou essayé?
Avez-vous les gars sorte de SQL obtenir encore?
Parce que je sais que vous n'avez pas encore vu, si c'est le genre de
confusion pour vous les gars.
Jetons un coup d'oeil.
Alors, quelle est la façon de prévenir SQLI?
OK.
Donc ce qui est vraiment important parce que vous les gars veulent absolument éviter
ce dans vos sites Web.
>> Sinon, tous vos amis vont se moquer de vous quand ils tombent tous
vos tables.
Donc, l'idée est que vous réparez le SQL d'une certaine façon, alors vous correspondez
ce que les entrées de l'utilisateur avec une certaine chaîne.
Ainsi, la façon dont cela fonctionne est que vous préparer la base de données.
Vous sélectionnez le nom, la couleur, et les calories à partir d'une base de données appelée fruits.
Et puis où calories est inférieur, et nous mettons un point d'interrogation, il
dire que nous allons à l'entrée quelque chose dans une seconde.
>> Et la couleur est égale, et nous pose une question marque en disant que nous allons
entrée quelque chose dans un second aussi.
OK?
Et puis nous exécutons, en mettant en 150 et le rouge.
Et ce sera vérifiez vous que ces deux -
ce tableau va vérifier que ceux-ci deux sont un nombre entier et
qu'il s'agit d'une chaîne.
Ensuite, nous allons, et nous allons chercher tous, nous le mettons en rouge.
Cela signifie que nous récupérons tous.
Cela signifie que nous exécutons en fait le SQL déclaration et le remettre en rouge.
Ici, nous faisons la même chose, mais nous faire la même chose pour le jaune.
Et nous allons chercher tous.
>> Et de cette façon, nous évitons l'utilisateur d'être capable d'entrer quelque chose
ce n'est pas ce que nous avons spécifié, une chaîne ou un nombre entier, par exemple.
Je parlais plus tôt compter sur les autres.
Lorsque vous les gars de commencer votre projet, vous êtes plus va certainement utiliser
bootstrap ou quelque chose de semblable.
Avez-vous les gars jamais utilisé Wordpress?
Probablement vous les gars ont utilisé Wordpress plus probable.
Ainsi, le problème avec l'aide les choses d'autres personnes -
Je vais à Google réel rapide Vulnérabilité Wordpress.
>> Si je tire ce droit jusqu'à maintenant -
Je me suis littéralement fait pendant deux secondes Google.
Nous pouvons voir que Wordpress -
ce est datée Septembre '12.
26 est mis à jour.
La configuration par défaut de Wordpress avant 3.6 n'empêche pas les
certains ajouts, qui pourrait faciliter
attaques cross-site scripting.
Donc une histoire rapide, une fois nous travaillions - alors que j'étais, en été, un travail
stage.
Et nous avons travaillé avec sorte de comme une grande compagnie de carte de crédit.
>> Et ils s'appuient sur ce qu'on appelle -
Je ne sais pas si vous avez déjà joué avec un produit appelé Joomla.
Joomla est un produit qui est utilisé pour contrôle - une sorte de semblable à
Wordpress, utilisé pour construire des sites Web.
Donc, ils ont eu leur site travaillant sur Joomla.
Il s'agit en fait d'une carte de crédit société en Colombie.
Je vais vous prendre à leur site très vite.
>> Donc, ils ont utilisé Joomla.
Et ils n'avaient pas mis à jour Joomla à la dernière addition.
Et quand nous avons pris un coup d'oeil leur code, nous avons été en mesure de réellement
aller à l'intérieur de leur code et de voler tous les informations de carte de crédit qu'ils avaient,
tous les numéros de cartes de crédit, les noms, les adresses.
Et ce n'était que -
et leur code était parfaitement bien.
Ils avaient beaucoup de code.
Il était tout sécurité.
Ils ont vérifié toutes les bases de données.
Ils se sont assurés cross-site script était très bien.
>> Mais elles utilisaient quelque chose qui n'était pas mise à jour, ce n'était pas sécurisé.
Et pour que les conduit à - si vous les gars allez certainement utiliser d'autres
code, d'autrui cadres de personnes pour construire votre site Web.
Assurez-vous qu'ils sont en sécurité parce que parfois ce n'est pas vous, celui qui
fait une erreur.
Mais quelqu'un d'autre fait une erreur, et alors vous tombez à cause de cela.
>> Les mots de passe et PII.
Ainsi les mots de passe.
OK.
Jetons un coup d'œil à des mots de passe très vite.
OK.
S'il vous plaît me dire que tout le monde utilise sécurisé -
J'espère que tout le monde ici utilise des mots de passe sécurisés.
Je ne fais que ce que dans comme une hypothèse.
Alors vous les gars allez certainement stocker les mots de passe pour vos sites Web.
Vous allez faire quelque chose comme une connexion ou quelque chose comme ça.
Ce qui est important est de ne pas stocker les mots de passe en texte clair.
Cela est extrêmement important.
Vous ne voulez pas enregistrer un mot de passe en texte clair.
>> Et vous ne voulez pas vraiment de le stocker dans une table de hachage à sens unique.
Alors qu'est-ce un hachage unidirectionnel est que lorsque vous générer un mot, quand vous mettez ce
mot dans une fonction de hachage, il sera générer dos une sorte de cryptique
message ou ensemble énigmatique de touches.
Je vais vous montrer un exemple.
Je vais hacher ils mot password1.
Donc Hash md5 va me revenir une sorte d'informations bizarre.
>> Le problème est que les gens là-bas qui aiment aller dans les sites Web ont
déjà compris tri de toutes les valeurs de hachage MD5.
Qu'est-ce qu'ils ont fait est qu'ils sont assis sur leur ordinateurs, et ils hachés chaque
seul mot possible là-bas jusqu'à ce que ils se sorte de ce que c'est.
Si je devais chercher cette place -
Je viens attrapé ce hachage.
Si je reçois ce hachage de -
si je vais dans un site Web, et je trouve ce hachage parce que je suis à l'
bases de données, et je regarde vers le haut, quelqu'un déjà pensé à elle pour moi.
>> Ouais.
Alors, les gens se sont assis, et quelle que soit md5 hachage que vous mettez, ils vont
revenir à quelque chose que vous c'est un mot.
Si je hachage un autre mot, comme -
Je ne sais pas -
trees2.
Je ne veux pas être déçu par mes recherches Google.
Ça y est, trees2.
Donc, beaucoup de sites Web toujours utiliser le hachage MD5.
Ils disent, oh, c'est sûr.
Nous ne sommes pas stocker en clair.
Nous avons ce hash md5.
Et tout ce que j'ai à faire est de simplement Google le nombre.
>> Je n'ai même pas à me calculer.
Je peux juste Google il, et quelqu'un déjà fait pour moi.
Voici un tas d'entre eux.
Voici un tas de mots de passe.
Donc, certainement ne pas utiliser le hachage MD5, parce que tout ce que vous avez à
faire est de Google il.
Alors qu'est-ce que vous souhaitez utiliser à la place?
OK.
Quelque chose qui s'appelle le salage.
Alors, que le salage est -
que vous les gars me souviens quand nous étions parler de hasard dans -
Je ne suis pas sûr de ce que c'était PSet -
était-il PSet il ou quatre?
>> Nous parlions de trouver l'aiguille dans la botte de foin.
Et dans l'ensemble de processeurs, il a dit que vous pouviez fait comprendre ce aléatoire
génère parce que quelqu'un a déjà couru aléatoires un million de fois et seulement
sorte de former ce qu'ils génèrent.
Qu'est-ce que vous voulez faire est mettre dans une entrée.
C'est ce que le salage sorte de est.
Ils ont déjà compris ce salage renvoie pour chaque travail.
>> Alors, que le salage fait est vous mettez dans un sel.
Vous mettez en un mot.
Et il hacher ce mot en fonction sur ce que vous mettez ici.
Donc, si je passe un hachage avec cette phrase, il va hacher
différemment si je hachage password1 avec une peine différente.
Il sorte de lui donne quelque part pour commencer pour le hachage pour commencer.
Il est donc beaucoup plus difficile à calculer, mais vous peut encore calculer, surtout
si vous utilisez une mauvaise sel.
>> Les gens ont déjà également compris sels communs et compris
ce qu'il est.
Sels aléatoires sont beaucoup mieux, mais le meilleur moyen est d'utiliser
quelque chose qui s'appelle la crypte.
Et ce crypte vous permet de ne - si ces fonctions sont
déjà construit pour vous.
Beaucoup de gens oublient que, ou ils oublient de l'utiliser.
Mais si je regarde PHP crypte, de la crypte retourne déjà une chaîne de hachage pour moi.
Et il sels effectivement plusieurs fois et le hache de nombreuses fois.
>> Donc, nous n'avons pas à le faire.
Donc, tout ce que vous avez à faire est envoyer dans la crypte.
Et il va créer un grand hachage sans que vous ayez à vous soucier de sel
ou quoi que ce soit.
Parce que si vous étiez à sel, vous avez de se rappeler ce que vous avez utilisé le sel
parce que sinon, vous ne pouvez pas obtenir votre passe en arrière sans le
sel que vous utilisez.
OK.
>> Et aussi personnelles identifiables information.
Donc, la sécurité sociale, de carte de crédit - c'est assez évident.
Mais parfois les gens oublient la façon dont il œuvres est, combien d'informations vous faites
réellement besoin de trouver une seule personne?
Quelqu'un a fait une étude sur ce un moyen de revenir.
Et il était comme, si vous avez un nom complet, vous ne pouvez pas trouver
quelqu'un qui facilement.
Mais que faire si vous avez un nom complet et leur date de naissance?
Est-ce suffisant pour identifier quelqu'un en particulier?
>> Que faire si vous avez leur nom et la adresse à laquelle ils vivent?
Est-ce suffisant pour trouver quelqu'un?
Et c'est quand ils remettent en question, ce qui est renseignements personnels identifiables, et
Que devez-vous vous soucier pas loin de donner?
Si vous donnez personnelles identifiables informations que quelqu'un vous donne,
vous pourriez potentiellement être poursuivi.
Et nous ne voulons certainement pas que.
>> Ainsi, lorsque vous mettez votre site , et vous avez un vraiment cool
conception, nous espérons que vous avez fait un projet final impressionnant.
Tout vous voulez sorte de à mettre là-bas.
Vous voulez vous assurer que les vous prenez de l'utilisateur, si c'est
informations personnelles identifiables, vous voulez vous assurer que vous être vraiment
prudent avec lui.
>> Injection Shell.
OK.
Injection Shell permet à l'intrus accéder à votre ligne de commande réelle
dans votre serveur.
Et il est capable d'exécuter du code que vous ne pouvez pas contrôler.
Prenons un exemple de cette belle chaîne ici.
Si nous allons dans le site Web de nouveau, je suis va aller dans l'injection de code.
Donc, ce qu'il fait est -
c'est aussi ce que nous étions regarder avant.
Nous laissons à l'utilisateur de mettre en quelque il veut, et il affichera
ce que vous voulez.
>> Donc, je vais mettre un appel.
Que cela ne soit -
il va commencer par la concaténation.
Donc, il va me laisser courir quelque commander le fonctionnement de la personne
avant et mon commandement.
Et je suis d'exécuter une commande du système.
Et ces dernières sont des cordes - rappelez-vous ce que j'ai dit à vous les gars sur,
alors que vous avez à coder dans un procédé d'URL.
Si je lance ce moment -
Je vais vous montrer ici -
vous verrez que j'ai fini jusqu'à l'exécution d'une commande.
>> C'est en fait le serveur réel que mon site est en cours d'exécution sur.
Donc, nous ne voulons pas que, parce que je peux courir -
ce serveur n'est pas le mien.
Donc, je ne veux pas gâcher son soeur, le serveur de Marcus.
Mais vous pouvez exécuter plusieurs commandes qui sont dangereux.
Et potentiellement, vous pouvez supprimer fichiers, supprimer des répertoires.
Je peux enlever un répertoire si Je voulais, mais je ne veux pas
à faire que de Marcus.
C'est un bon gars.
Il m'a laissé emprunter son serveur.
Je vais donc lui laisser de rabais sur le bon.
>> Donc, ce que nous ne voulons pas utiliser - nous ne faisons pas vouloir utiliser eval ou système.
Eval ou système nous permet de faire ces appels système.
Moyen Eval évaluer.
Signifie système que j'ai couru.
Il est géré quelque chose dans le système.
Mais nous ne pouvons interdire ces choses dans PHP afin que nous ne les utilisons pas.
Et le téléchargement de fichiers.
J'allais faire une impressionnante chose avec le téléchargement du fichier.
Mais comme je vous l'ai dit les gars, mon dossier téléchargement chose ne fonctionne pas.
Si je devais télécharger un fichier en ce moment -
si je devais télécharger un fichier, et c'est une image -
vous avez une chose de téléchargement c'est une image.
C'est très bien.
Rien ne se passe.
>> Mais si vous avez un fichier de téléchargement, pour exemple, et l'utilisateur en fait ajouts
un fichier PHP ou un fichier exe ou quelque chose comme ça, alors vous pourriez potentiellement
avoir un problème.
Cette travaillait avant.
Malheureusement pour moi, c'est ne fonctionne plus.
Si moi, par exemple, télécharger ce fichier, je suis pas obtenir la permission de télécharger
le fichier en raison de la serveur ne pas être le mien.
Alors le gars est vraiment intelligent.
>> Donc, nous ne voulons pas -
Je vais vous montrer les gars -
OK, ce sont des outils vraiment cool.
Il s'agit donc -
aller dans - si vous les gars avez Firefox - j'espère que vous faites.
Il ya deux modules appelés SQL Inject Moi et Cross-Site Script moi.
Ils ouvrent aussi peu côté barres sur le côté.
Et si je devais revenir à CS60 par exemple -
si ce qu'il fait est qu'il semble pour toutes les formes que -
espérons-le, je ne vais pas en difficulté pour cela.
>> Mais OK.
Voici le système d'axe.
Alors, quand je commence à regarder pour les trous dans le système, la première chose que je fais est
ouvrir cette belle petite outil sur le côté.
Et je vais tester formes avec des attaques automatiques.
Et si ce qu'il fait est il va lentement ouvrir un tas de navigateurs.
Voici un tas de navigateurs.
Et il essaie toutes les combinaisons unique de cross-site scripting
qu'il peut dire, si vous voyez sur le côté.
>> Et il va me donner un résultat sorte de ce que la réponse est.
Toutes les passer.
De toute évidence, ils passent tous.
Je veux dire, ils sont vraiment intelligent les gens là-bas.
Mais si je devais courir -
J'ai eu fois avant quand je lance ce sur les projets finaux des étudiants.
Je cours tout simplement SQL Inject Me avec toutes les différentes attaques.
Et il essaie de SQL injection ce serveur de broche.
Donc, si nous faisons défiler vers le bas, pour exemple, il est dit -
ce qui est bon si elle renvoie.
>> Donc, il a testé des certaines valeurs.
Et le serveur a renvoyé une code qui a été négative.
Retirer temporairement.
C'est une bonne chose.
Il essaie tous ces tests.
Ainsi, vous pouvez simplement lancer -
Je souhaite que je pourrais trouver un site réel rapide que cela me laisse -
peut-être le magasin de CS50.
>> Wow, cela va prendre beaucoup trop de temps.
Je vais laisser le premier test pas finir droite.
Il s'agit donc de se plaindre.
Donc, ce sont trois choses.
Ces outils sont gratuits.
Vous pouvez les télécharger et les exécuter sur votre site web, et il vous dira si
vous avez cross-site scripting, si vous avez SQL, si vous avez
quelque chose comme ça.
Je suis une sorte de gâcher.
>> Ce qui est important -
OK, donc ne jamais faire confiance à l'utilisateur.
Quelles que soient les entrées de l'utilisateur pour vous, assurez- Assurez-vous de désinfecter, vous nettoyer,
vous de vérifier les bonnes choses, que c'est vous donner ce que vous
veulent qu'il vous donne.
Toujours être à jour sur ce cadre que vous êtes en train d'utiliser.
Si vous utilisez quelque chose comme bootstrap -
Je sais que vous allez utiliser bootstrap parce qu'il va aller
sur ce bientôt en classe -
et Wordpress ou quelque chose comme ça, normalement cela pourrait être piraté.
>> Et puis, vous ne savez même pas.
Vous êtes juste le fonctionnement de votre site web.
Et c'est totalement sécurisé.
Et vous descendez.
Donc, je pêche très tôt.
Mais je tiens à remercier Pentest Labs.
Je vais vous montrer quelque chose les gars appelé PenTest Labs.
Si vous êtes vraiment intéressé par quelle sécurité est vraiment, il ya un
site Web appelé PenTest Labs si vous les gars aller à ce moment.
Oh, eh bien, ce n'est pas ça.
Je vais courir comme ça.
Google me dit la réponse.
>> OK.
Et il vous apprend utiliser - il dit, apprendre pénétration Web
tester la bonne façon.
Il vous apprend -
espérons-le, vous êtes une personne éthique.
Mais il vous enseigne comment vous pouvez regarder comment vous pouvez obtenir à l'intérieur des sites.
Et si vous apprenez comment vous pouvez obtenir à l'intérieur sites Web, vous pouvez apprendre à
se protéger contre sites à l'intérieur.
Permettez-moi de zoom avant, car peut-être que vous les gars ne cherchent pas à ce droit.
>> De injection SQL à débourser, si sorte de comment je peux obtenir à partir de SQL
injection à débourser.
Et vous téléchargez cette machine virtuelle.
Et la machine virtuelle est déjà avec le site que vous êtes
va essayer.
Vous téléchargez le PDF.
Et il vous montrera ligne par ligne ce vous avez à faire, ce que vous vérifiez.
C'est ce que fait un attaquant fait pénétrer à l'intérieur d'un site web.
>> Et certaines de ces choses est compliqué.
Je souhaite que je pourrais aller sur plus choses avec vous les gars.
Mais je crains que vous les gars n'ont pas vraiment -
c'est ce que je suis allé avec vous les gars, tests web
pour les tests de pénétration.
Je ne sais pas vraiment ce que SQL et ce -
Le séminaire de Carl Jackson est génial aussi.
Les gars, vous ne savez pas de tri de ce que c'est.
Mais si vous allez à ce site, et vous télécharger ces tutoriels et les
PDF, vous pouvez jeter un oeil à type de ce que le domaine de la sécurité fait vraiment
dans des tests de pénétration, voir comment vous pouvez obtenir des sites Web à l'intérieur et à protéger
vous d'elle.
>> Donc, si je fais un aperçu très rapide, il va être éviter cross-site scripting.
Vous souhaitez utiliser htmlspecialchars chaque chronométrer les entrées de l'utilisateur quelque chose.
Empêcher l'injection SQL.
Si vous faites cela, vous êtes déjà mieux que Harvard était
quand ils se sont violées.
Et assurez-vous que vos mots de passe ne sont pas en texte brut.
Assurez-vous que vous n'avez pas une seule façon de hachage eux, mais que vous utilisez crypte, le PHP
fonction que je vous ai montré les gars.
De cette façon, vous devrait être bon.
>> En outre, si vos amis vous permettent, exécutez Me SQL a Injecter sur leurs sites Web.
Exécutez cross-site scripting sur leurs sites Web.
Et vous verrez beaucoup de ces sites avoir une tonne de vulnérabilités.
C'est incroyable à quel point les gens oublient pour assainir leurs bases de données ou de faire
sûr de ce que saisie de la personne n'est pas le code de script.
OK.
J'ai en quelque sorte fini très tôt.
Mais si quelqu'un a des questions sur quoi que ce soit, vous pouvez me tirer une question.
Ouais.
Allez, allez.
>> PUBLIC: Je veux juste demander, pouvez-vous expliquer comment le fichier
télécharger des œuvres exactement.
>> LUCIANO ARANGO: Ouais.
Alors permettez-moi de vous montrer le fichier télécharger très vite.
Ainsi, le téléchargement de fichiers -
le problème wit le téléchargement du fichier C'est en ce moment que -
Je vais ouvrir le code de sorte que vous les gars voir le code dans les coulisses.
Et il est charger.
Voici un code pour le fichier uploader.
>> Nous essayons d'aller dans ce Annuaire ici.
Et nous essayons de, une fois que nous l'entrée fichier, fichier isset - alors quand il ya un
déposer dans des fichiers, cette image, alors nous essayons de le déplacer ici.
Nous récupérons le fichier ici.
La méthode est POST, type, image, fichier.
Et nous envoyons ce fichier.
Et puis une fois que nous recevons il, donc une fois le fichier a une image, nous essayons de les envoyer
à ce répertoire.
>> Le problème est que le site n'est pas me laisser aller à ce répertoire,
parce qu'il ne veut pas que je retourne.
Il ne veut pas que je parte -
Je dois y aller - Alors, voici télécharger.
Voici les images.
Je dois y aller tout le chemin du retour à la début et le mettre là-dedans et puis
aller et de le mettre dans le répertoire.
Donc, si je courais une fenêtre de terminal, et je voulais déplacer un fichier -
[Inaudible]
peut le voir.
Si je voulais déplacer un fichier, j'ai de mettre le nom de fichier, puis le
chemin d'accès complet, je veux l'envoyer à.
>> Et puis le serveur n'est pas laisser moi de revenir.
Et si ce n'est pas de laisser me rendre à ce fichier.
Mais normalement -
donc il ya un code pour Télécharger un fichier.
Donc, normalement, ce qui va arriver, c'est que la personne n'est pas de vérifier si mon dossier
se termine par. jpeg, donc je voudrait vérifier.
Permettez-moi d'ouvrir un exemple bien réel rapide.
>> OK.
Cette bonne personne -
si par exemple deux vérifie si preg_match -
ici, il est ici -
pour s'assurer que les extrémités avec PHP, qui est bon.
C'est une bonne chose.
Mais il ya un vrai grand problème avec cela.
C'est une bonne chose.
Mais si je devais mettre un fichier appelé myfavoritepicture.php.jpeg, je pouvais
encore potentiellement se débarrasser de l'jpeg et exécuter it.k que PHP est dangereux.
Vous ne voulez pas que la personne soit en mesure d'exécuter du code sur votre site.
>> Mais alors. Jpeg permet de passer.
L'idée est ce que vous voulez vraiment faire n'est pas prendre les fichiers, A. Mais, OK, ce
vous voulez vraiment faire est de s'assurer que vous lisez dans le monde entier.
Et il n'y a rien. Php en elle.
Il n'y a pas. Php dans le nom de fichier entier.
>> PUBLIC: Mais vous pourriez mettre. jpeg sur la fin.
Les serveurs courent toujours le code.
>> LUCIANO ARANGO: Non, il ne sera pas fonctionner au début.
Vous devez revenir en arrière et essayer de pour voir si vous pouvez -
>> PUBLIC: Nous devons donc -
OK, juste un autre jeu qui implique -
>> LUCIANO ARANGO: Ouais.
>> PUBLIC: OK.
>> LUCIANO ARANGO: Ouais.
OK.
D'autres questions?
OK.
Je vais laisser cela et trier de tenter de voir si vous les gars peuvent -
les autres sont un peu plus compliquée car ils nécessitent beaucoup
plus de connaissances de SQL que la simple commençant la connaissance de la bande et est SQL
de ce qu'est JavaScript.
Mais je vais essayer de garder cette place, et j'espère que vous les gars vont apprendre
à ce sujet et essayer de prendre un coup d'oeil à ce que vous pouvez faire et combien exemples
vous pouvez passer à travers.
>> N'importe qui ont une autre questions à ce sujet?
Allez-y.
Ouais, tirer, tirer.
Oui, allez-y.
Allez-y.
>> PUBLIC: OK.
Donc, j'ai entendu parler de la façon dont les guillemets magiques ne sont pas suffisamment sécurisé.
>> LUCIANO ARANGO: Qu'est -
Les guillemets magiques?
>> PUBLIC: Ouais.
Il ajoute donc - donc chaque fois que vous entrez quelque chose, il ajoute toujours des guillemets.
>> LUCIANO ARANGO: Ouais.
Ouais.
OK.
>> PUBLIC: Et puis j'ai pensé que travaillé, mais alors j'ai cherché en place.
Et il a dit qu'il n'est pas bon.
Mais je ne sais pas pourquoi.
>> LUCIANO ARANGO: Ouais.
>> PUBLIC: Ne pas utiliser les guillemets magiques, parce qu'il n'est pas sûr.
>> LUCIANO ARANGO: OK.
Citations Donc magie, c'est quand vous insérez SQL et il ajoute déjà la citation pour vous.
>> PUBLIC: Il ajoute toujours des citations autour de ce que vous mettez dedans
>> LUCIANO ARANGO: Ouais.
Ainsi, le problème, c'est que -
Je vais jeter un oeil à -
>> PUBLIC: Comment ça acquérir l'instruction SQL?
Ou je suppose que cela pourrait être comme citation sélectionnez.
>> LUCIANO ARANGO: Ouais, vous avez besoin bonnes citations pour le SQL.
>> PUBLIC: Non, mais le serveur le fait pour vous.
>> LUCIANO ARANGO: Ces petites citations ici, ces petites citations?
>> PUBLIC: Ouais.
>> LUCIANO ARANGO: Ouais.
Le problème est que vous pouvez commenter le dernier -
OK, donc ce que je peux faire, c'est que je peux commenter Départ - nous allons donc jeter un oeil à - permettez-moi de
ouvrir un fichier d'édition de texte.
Permettez-moi de modifier cette ici directement.
OK.
Pouvez-vous les gars voir que clairement?
Qu'est-ce que je peux faire, c'est que je peux commenter sur le dernier.
Cela commenter la dernière.
Et puis je vais mettre un ici, mettre tous les trucs malveillants ici.
>> Ainsi, l'utilisateur est en fait entrée, à droite?
L'utilisateur n'est pas saisie les choses, non?
C'est ce que je vais à l'entrée en la personne qui tente de pénétrer à l'intérieur.
Je vais mettre en -
c'est un guillemet.
C'est juste ondulée par erreur.
Et puis ce que le code va faire -
désolé, je vais prendre ça.
Qu'est-ce que le code va faire est il va ajouter de la première
guillemets ici.
Et il va ajouter de la dernière guillemet ainsi.
>> Et il va aussi ajouter la Enfin, dernier guillemet.
Mais je suis en commentant les devis marque, de sorte qu'ils ne fonctionnent pas.
Et je termine cette citation marquer ici.
Comprenez-vous?
Vous êtes perdu?
Je ne peux commenter la dernière cotation marque, et de prendre soin de la
premier guillemet.
>> PUBLIC: Et juste fini la première.
>> LUCIANO ARANGO: Ouais.
Et juste finir le premier.
Ouais, c'est vrai.
C'est ce que je peux faire.
Ouais.
D'autres questions de ce genre?
C'est une grande question.
Non, oui, peut-être.
Espérons que vous les gars sorte de faire plus de sens quand vous étudiez et SQL
des choses comme ça.
Mais assurez-vous -
garder ces outils dans la montre.
Désolé, ces outils plus ici.
Ces outils sont grands.
Si quelqu'un a des questions, vous pouvez également m'envoyer un email.
C'est mon email normal.
Et c'est mon travail e-mail, qui c'est quand je travaille au MERS.
>> OK, merci.
Merci, les gars.
Vous êtes bon pour aller.
Vous n'avez pas à rester ici.
Ne pas applaudir.
C'est bizarre.
OK, merci, les gars.