LUCIANO ARANGO: OK, ragazzi. Il mio nome è Luciano Arango. Sono al secondo anno in Adams House. E stiamo andando a parlare di sicurezza web difesa attiva. Così io lavoro per l'Ufficio di Informazioni Sicurezza in SEAS. E durante l'estate, ho internato a SeguraTec, che era una informazione società di sicurezza che ha servito per la Bank of Columbia. Questo è soprattutto lì che ho imparato quello che ho imparato finora. E così una parte del materiale che siamo intenzione di andare oltre oggi, non abbiamo davvero parlato in classe. Ma lo faremo presto. Sta andando essere come SQL, JavaScript. E non abbiamo davvero andato su di esso. Così che io possa ordinare di volo attraverso di essa, e si potrebbe non sapere alcune cose. Ma presto, per conoscere esso. E sarà tutto un senso. Anche un'altra cosa - rimanere etico. Alcune delle cose che si impara, si potrebbe utilizzare in modo non etico. Se è tuo, provare. Io sicuramente motivare i ragazzi provare i tuoi propri server, provare andando al loro interno. Vedere se è possibile penetrare, se è possibile ottenere al loro interno. Ma non chiunque altro. I poliziotti non piace molto le battute e Nel complesso, abbiamo messo questo qui. Siamo stati guai. Ottengono veramente arrabbiato. Quindi, oltre al capo questo sito web. Ce l'ho aperto proprio qui. Questo è un sito web, ed è ha un sacco di esempi. Succede che il primo esempio è una sorta di andare a essere molto più facile che l'ultimo esempio in senso che il primo esempio è completamente insicura. E l'ultimo è una sorta di quello che un persona normale sicurezza web farebbe. Ma è ancora possibile ordinamento di ottenere intorno a quello. E stiamo andando a concentrarsi su un e due esempi, uno e due. OK. Cominciamo con cross-site scripting. Il codice JavaScript viene eseguito su browser del client. Si tratta di un linguaggio di programmazione che si utilizza per funzionare su browser del client in modo non c'è bisogno di aggiornare il sito e tornare al server. Avete in esecuzione. Ad esempio, Facebook, non hai per ricaricare il sito web per nuovo status aggiornamenti a venire. Sta utilizzando JavaScript per generare tutte queste cose. Così possiamo iniettare codice JavaScript dannoso nei siti web. E in questo modo, quando inviamo un link a qualcuno, potremmo sorta di inviarlo con parte del codice che vogliamo. Ci sono persistenti e non persistenti JavaScript - persistente e non persistente cross-site scripting, voglio dire. E la differenza che persistente è JavaScript che sarà salvato sul sito. E non persistente saranno JavaScript che sarà effettivamente capita una volta. Quindi diamo un'occhiata a un esempio reale veloce. OK. Quindi questo sito, semplice, non succede niente qui. E stiamo andando a cercare di inserire qualche JavaScript. Così il nostro modo di iniziare a scrivere JavaScript è iniziamo con lo script iniziale. E chiudiamo con lo script. Stiamo semplicemente andando a mettere un messaggio - Ti faccio vedere - allarme. Alert è una funzione che JavaScript utilizza per mostrare qualcosa. Allora proviamo reale veloce. Ho intenzione di andare, allarme ciao. Beh, ho dimenticato di mettere - OK. Ecco, questo è semplice. Abbiamo messo JavaScript su un sito web, e si avvicinò. Ed è una sorta di succede solo sul nostro sito web, giusto? Quindi sembra che non è un problema, giusto? Voglio dire, come si potrebbe usare questa cattiveria? Quindi il modo che gli hacker fanno questo è davvero semplice. Stanno andando ad afferrarlo. Possono inviare questo link per voi. Se mando questo link per te in questo momento, e aprirlo, sta andando a dire ciao, dicendo che il mio sito web si sta dicendo ciao. E così, se dovessi dire qualcosa di un po 'più intelligente, se mi tiro su un JavaScript funzione I tipo di già scritto - ma se la si guarda, vado Su di esso prima l'ho scritto. Quindi stiamo andando a impostare un timeout. Stiamo andando ad aspettare un paio di secondi. In realtà, stiamo andando ad aspettare, se Non sbaglio, cinque secondi. Questo va in millisecondi. E allora che cosa stiamo andando a fare è che siamo andando per avvisare che l'accesso timeout per accedere interattiva E stiamo andando a modificare il percorso in una posizione diversa. Quindi, se io mando questo sito a qualcuno, che stanno andando essere navigazione intorno, la calma. Niente sta succedendo. E in cinque secondi, è in corso per dire, il tuo login scaduta. Effettua il login interattiva Una volta che si fa clic su OK, ho intenzione di portarli a un altro sito. Presumibilmente, il sito sta per essere simile al sito web che cui si trovavano prima. E andranno a registrare il loro credenziali nel mio sito web invece di il loro sito web. E così posso mandare la gente un la posta elettronica con questo link. Io dico, oh, ecco un link. Questa è una banca, per esempio. Dico, qui, vado su questo link. E una volta che inviano, sono andando a curiosare. Posso aspettare per 15 secondi, 20 secondi, e poi pop che fai il login nel Login indietro. Voi potete provare con molte più cose. E 'complicato perché voi ragazzi non hanno visto JavaScript, per cui si potrebbe Non so alcune funzioni. Ma tutto quello che dovete fare è iniziare con lo script, terminare con lo script. E si potrebbe mettere nulla nel mezzo. Alert è una funzione, attendere. Posizione della finestra vi porta in una nuova posizione. Ma si può fare molto di più. E così l'idea è che prendiamo che fuori. Se vado a esempio due, e io si inserisce in questo stesso codice, è non andare a lavorare. Quindi è la stampa di tutto a causa ciò che questo sito originariamente fa è se metto qualcosa qui, che sarà stamparlo proprio qui. Quindi non è la stampa di nulla. Questo esempio è effettivamente controllando per vedere se lo script è lì. Quindi sì, andare avanti. Chiedi a me. AUDIENCE: non sta inviando una richiesta GET o POST? LUCIANO ARANGO: Già. sono inviando una richiesta GET. PUBBLICO: E '? LUCIANO ARANGO: Già. Anche i browser utilizzano richieste POST. Ma sto cercando di mostrare richieste GET in modo che possiamo vedere ciò che è realmente accadendo. E così, se guardiamo a questo codice - quindi non funziona più. E se diamo uno sguardo a questo codice, sta andando ad essere in esempio due. Che questa persona sta facendo, la persona responsabile di questo browser - aprire, OK - sta sostituendo lo script parola. Questo è PHP, che voi ragazzi potrebbe hanno visto un po 'di vuoto. E 'solo la sostituzione del script di parole con il nome. Quindi, tuttavia, se vado avanti e appena messo in - se prendo di nuovo il mio codice, e sto andando per modificarlo solo un po '. Invece di sceneggiatura, ho intenzione di cambiare per script con un capitale R. e stiamo andando a vedere se questo codice funziona. Così non è stato stampato fuori, che è un buon segno. E si spera in due secondi, sta andando a pop-up. Il tuo login scaduta. OK. Va bene. Così, controllando lo script potrebbe non necessariamente funzionare. La persona - si può anche verificare la presenza di script maiuscolo, scritto minuscolo, caso str confrontare, assicurarsi che siano la stessa cosa. Ma l'hacker può ancora fare una sorta di quello che abbiamo fatto in Vigenere quando ci siamo trasferiti indietro di un paio di personaggi, andare avanti. E si può capire come mettere lo script torna in là in modo che possa iniettare quello script. Quindi, ciò che si desidera utilizzare è htmlspecialchars a proteggere il vostro sito web. E ciò che fa è fa in modo che ciò che si mette in - per esempio, corsi o questa superiore o inferiore a - è sostituito con qualcosa che non sarà - mi permetta di zoomare qui - la commerciale vero e proprio. Essa sostituirà quelli speciali HTML personaggi che vedremo quando siamo parlando - oh, questo sta andando a prendere me tornare a - questi personaggi proprio qui. Questi significano che qualcosa è in arrivo. Per HTML, quella fascia di inizio ci dice che qualcosa HTML relativo è in arrivo. E vogliamo sbarazzarsi di quella. Noi non vogliamo mettere HTML in un website.k Non vogliamo che l'utente sia in grado di mettere qualcosa nel loro sito web che possono influenzare il loro sito web, come script o HTML o qualcosa di simile. Quello che è importante è che si sterilizzare l'input dell'utente. Così gli utenti possono ingresso molte cose. Si può inserire un mucchio di roba da provare per ingannare il browser in ancora l'esecuzione di questo codice di script. Che cosa si vuole fare non è solo guardare per lo script, ma cercare per tutto che potrebbe essere dannoso. E htmlspecialchars lo farà per voi, quindi non è necessario di preoccuparsi. Ma non provate a fare da soli una sorta di con il proprio codice. È tutto chiaro XSS? OK. Andiamo a SQL injection. Così SQL injection è probabilmente il il numero uno della vulnerabilità in diversi siti web. Voglio dire, un buon esempio - Stavo ricercando più lontana per questa cosa. E ho trovato questo articolo fantastico, dove Ho visto che Harvard è stato violato, è stato violato. E mi chiedevo, bene, come lo farebbero? Harvard è la più impressionante, più garantire l'università mai. Giusto? Beh, di violare i server, gli hacker hanno usato un tecnica chiamata SQL injection. Quindi, questo accade in un giorno per giorno. La gente dimentica di prendere in considerazione per l'iniezione SQL. Harvard fa. Penso che qui si dice, Princeton, Stanford, Cornell. Quindi, come possiamo - così che cosa è questo SQL iniezione che sta portando tutti questi persone Down? OK. Quindi SQL è un linguaggio di programmazione usiamo per accedere ai database. Quello che facciamo è selezioniamo - così che cosa questa legge adesso è selezionare tutto dalla tabella. SQL, si trasforma in questi database che hanno tavoli pieni di informazioni. Quindi seleziona tutto da utenti dove il nome è nome utente. Giusto? Abbastanza semplice. L'idea di iniezione SQL è che inserire del codice maligno che avrebbe ingannare il server in esecuzione qualcosa diverso da quello che in origine era in esecuzione. Quindi diciamo che per il nome utente, mettiamo in 1 o uguale a 1. Così abbiamo messo in 1 o uguale a 1. Il modo in cui leggerà ora sarà select da parte degli utenti, tutto da utenti - questo è tutto - dove nome è il nome utente, ma username è 1 o uguale a 1. Così il nome è nulla o 1 è uguale a 1. 1 uguale 1 è sempre vero. Quindi questo sarà sempre tornare informazioni da parte degli utenti. OK. Non abbiamo bisogno di avere la Nome utente. Possiamo solo avere tutto ciò che vogliamo, e restituirà le informazioni di cui abbiamo bisogno. Diamo un'occhiata a un altro esempio. Se abbiamo selezionare tutto da utente, dove nome è utenti drop table - Allora, cosa pensi che questo testamento fare se ho messo il nome utente come utenti DROP TABLE? Qualcuno ha un'idea? Sì. AUDIENCE: Sta andando a raccontare a discarica tutte le tabelle. LUCIANO ARANGO: E 'intenzione di dirci per scaricare tutto nel sito, tutto nel database. E ciò che la gente usa questo per - così Io vado a mostrarvi ragazzi. Ho disabilitato cadere le tabelle perché non volevo che tu ragazzi a cadere le mie tabelle. Diamo uno sguardo a questo. Quindi questo prende semplicemente il backup delle informazioni per una certa persona. Quindi, come facciamo a sapere se si tratta di colpite da SQL injection. Stiamo andando a controllare la reale veloce se possiamo mettere qualcosa - fammi copiare il codice. Ho intenzione di andare oltre in un secondo. Ho intenzione di mettere radici e 1 è uguale a 1. Questo qui, questo segno di percentuale 23 - ciò che realmente è, se io guardare direttamente qui su - il modo HTML prende in numeri, se si dare un'occhiata a quando ho messo in uno spazio qui - se dovessi spazio qualcosa qui, esso cambia in percentuale 2. Voi ragazzi vedo questo qui quando ho messo in uno spazio? Il modo in cui funziona è che si può solo trasmettere valori ASCII tramite HTML. In modo che sostituisce, per esempio, uno spazio con 20 per cento. Non so se voi ragazzi hanno visto prima. Esso sostituisce un hashtag con 23 per cento. Abbiamo bisogno di un hashtag di fine o dichiarazione di modo che possiamo dire la database per dimenticare di commentare questo ultimo punto e virgola alla fine. Noi vogliamo che non pensare a questo. Vogliamo solo che funzioni tutto che abbiamo in precedenza e commentare che fuori. Diamo un'occhiata a questo. Quindi se dovessi mettere qualcosa di sbagliato - diciamo per esempio, ho messo 2 equals 1, non mi dà nulla. Quando ho messo in 1 uguale a 1, e lo fa ritorno qualcosa, questo mi dice che questa è vulnerabile a una iniezione SQL. Ora so che qualunque cosa Ho messo dopo questo - e, per esempio, eliminare tabelle o qualcosa di simile sarà sicuramente il lavoro. So che è vulnerabile a SQL injection perché so che sotto la cappa, si sta lasciando Mi faccio la 1 è uguale a 1 cosa. OK? E se guardiamo a questi altri, numero due e numero tre, è intenzione di fare un po 'di più di controllo sotto la Cappa di quello che è. Così chiunque abilitare la caduta ancora niente o provato? Voi ragazzi sorta di GET SQL? Perché so che voi ragazzi non hanno ancora visto, quindi è una specie di confusione per voi ragazzi. Diamo uno sguardo. Allora qual è il modo per prevenire SQLI? OK. Quindi questo è molto importante perché si ragazzi sicuramente vogliono impedire questo nei vostri siti web. In caso contrario, tutti i tuoi amici stanno per fare gioco di te quando cadono tutti le tabelle. Così l'idea è che si ripristina il SQL in un certo modo, che è partita ciò che gli input utente con una certa stringa. Quindi il modo in cui funziona è che si preparare il database. Si seleziona il nome, il colore, e calorie da un database chiamato frutta. E allora dove calorie è inferiore, e mettiamo un punto interrogativo lì dicendo che stiamo andando a ingresso qualcosa in un secondo. E il colore è uguale, e abbiamo messo una domanda dicendo marchio che andremo a ingresso qualcosa in un secondo pure. OK? E poi noi eseguiamo essa, mettendo in 150 e rosso. E questo controllare per Assicurarsi che questi due - questo array controllerà che questi due sono un numero intero e che questa è una stringa. Poi andiamo, e noi recuperiamo tutto, mettiamo in rosso. Questo significa che noi recuperiamo tutti. Significa che in realtà eseguiamo SQL dichiarazione e rimetterlo in rosso. Qui facciamo lo stesso, ma noi fare lo stesso per il giallo. E noi recuperiamo tutti. E in questo modo, si impedisce all'utente da essere in grado di inserire qualcosa non è questo che abbiamo specificato, una stringa o un numero intero, ad esempio. Io parlavo in precedenza su fare affidamento sugli altri. Quando voi ragazzi iniziare il vostro progetto, siete sicuramente intenzione di utilizzare bootstrap o qualcosa di simile. Avete ragazzi mai usato Wordpress? Probabilmente voi ragazzi avete usato Wordpress più probabile. Quindi il problema con l'utilizzo cose altrui - Sto solo andando a pratica reale di Google Vulnerabilità Wordpress. Se mi tiro questo proprio ora - Ho letteralmente fatto un due secondi di Google. Possiamo vedere che Wordpress - questo è datato nel settembre '12. 26 viene aggiornato. La configurazione di default di Wordpress prima della 3.6 non impedisce a tali alcuni caricamenti, che potrebbe rendere più facile per attacchi di cross-site scripting. Quindi una storia veloce, una volta che stavano lavorando con - quindi ero, in estate, lavorando un stage. E stavamo lavorando con una sorta di come una grande azienda della carta di credito. E si basano su qualcosa chiamato - Non so se voi ragazzi mai giocato con un prodotto chiamato Joomla. Joomla è un prodotto che viene utilizzato per controllo - sorta di simile a Wordpress, usata per costruire siti web. Così hanno avuto il loro sito web lavorando su Joomla. Questo è in realtà una carta di credito società in Colombia. Ti porterò alla loro sito reale veloce. Quindi hanno usato Joomla. E non avevano aggiornato Joomla per l'ultima aggiunta. E così quando stavamo prendendo uno sguardo a il loro codice, siamo stati in grado di effettivamente andare dentro il loro codice e rubare tutto il dati della carta di credito che avevano, tutti i numeri di carta di credito, i nomi, gli indirizzi. E questo era solo - e il loro codice era perfettamente soddisfacente. Avevano grande codice. Era tutto la sicurezza. Hanno controllato tutti i database. Hanno fatto in modo cross-site scripting era soddisfacente. Ma hanno usato qualcosa che non era aggiornato, che non era sicuro. E così che li ha portati a - così voi ragazzi sono assolutamente intenzione di utilizzare altri codice, quadri altrui persone per costruire il tuo sito web. Assicurarsi che sono sicuro perché a volte non sei tu, quello che fa un errore. Ma qualcuno fa un errore, e poi si cade giù a causa di questo. Password e PII. Quindi password. OK. Diamo uno sguardo alle password reale veloce. OK. Ti prego, dimmi che tutti utilizza Secure - Spero che tutti qui utilizza password sicure. Sto solo lasciando che come un presupposto. Quindi voi ragazzi sono sicuramente memorizzare le password per i vostri siti web. Stai andando a fare qualcosa di simile un login o qualcosa di simile. Quello che è importante è di non conservare password in testo normale. Questo è estremamente importante. Se non si desidera memorizzare un password in testo normale. E sicuramente non si vuole veramente per conservarlo in un senso unico hash. Quindi, ciò che un senso unico hash è che quando si generare una parola, quando si mette questa parola in una funzione di hash, lo farà generare retro una sorta di criptico messaggio o un set di chiavi criptico. Io vi mostrerò un esempio. Ho intenzione di hash che parola password1. Così Hash MD5 sta per tornare me una sorta di informazione strano. Il problema è che la gente là fuori che amano andare in siti web hanno già capito liste di tutti gli hash md5. Quello che hanno fatto è si sedettero sul loro computer, ed essi hash ogni sola parola possibile là fuori fino hanno ottenuto una sorta di cosa si tratta. Se dovessi guardare questo in su - Ho appena preso questo hash. Se ottengo questo hash da - se vado in un sito web, e trovo questo hash perché arrivare alla database e guardo in su, qualcuno già capito per me. Già. Così la gente si sedette, e qualunque md5 hash che si mette in, che stanno andando a ritorno a qualcosa che è una parola. Se io hash un'altra parola, come - Non lo so - trees2. Io non voglio essere deluso dalle mie ricerche di Google. Vi è, trees2. Così un sacco di siti web ancora usare hash MD5. Si dice, oh, è sicuro. Non stiamo memorizzazione in testo normale. Abbiamo questo hash MD5. E tutto quello che devo fare è solo Google il numero. Non hanno nemmeno bisogno di computare me stesso. Posso solo Google, e qualcuno già ha fatto per me. Ecco un mucchio di loro. Ecco un mucchio di password. Quindi sicuramente non utilizzare hash MD5, perché tutto ciò che dovete fare è Google esso. Allora, cosa si desidera utilizzare invece? OK. Qualcosa chiamato salatura. Così che cosa salatura è - voi ragazzi ricordi quando eravamo parlando casuale - Io non sono sicuro di quello che era Pset - Era pset lì o quattro? Stavamo parlando di trovare l'ago nel pagliaio. E nel pset, ha detto che si poteva in realtà capire cosa casuale genera perché qualcuno sta già corse Casualmente un milione di volte e solo tipo di formato cosa che generano. Che cosa si vuole fare è mettere in un ingresso. Ecco che cosa salatura tipo di è. Hanno già capito che cosa salatura restituisce per ogni opera. Così che cosa salatura fa è si mette in un sale. Hai messo in una certa parola. E sarà hash quella parola a seconda su ciò che si mette in qui. Quindi, se ho hash della password uno con questo sentenza, sta andando a hash diversamente se mi hash password1 con una frase diversa. E 'sorta di dà un posto per avviare per la hashing per iniziare. Quindi è molto più difficile da calcolare, ma si può ancora calcolare, soprattutto se si utilizza una brutta sale. La gente ha già anche capito sali comuni e capito ciò che è. Sali casuali sono molto meglio, ma il modo migliore è quello di utilizzare qualcosa chiamato cripta. E che cripta consente di fare - così queste funzioni sono già costruito per voi. Molti dimenticano che, o si dimenticano di usarlo. Ma se guardo fino cripta PHP, cripta già restituisce una stringa hash per me. E in realtà sali molte volte e hash molte volte. Quindi non dobbiamo fare questo. Quindi tutto quello che dovete fare è inviarlo in cripta. E si creerà una grande hash senza si doversi preoccupare di sale o nulla. Perché se si dovesse sale, devi per ricordare quello che il sale è stato utilizzato perché se no, non è possibile ottenere il Password indietro senza l' sale che hai usato. OK. E anche personali identificabili informazioni. Quindi la sicurezza sociale, la carta di credito - questo è abbastanza ovvio. Ma a volte la gente dimentica il modo in cui le opere è, quante informazioni ti effettivamente bisogno di trovare qualche persona? Qualcuno ha fatto uno studio su questo un modo per tornare. Ed era come, se avete un nome completo, non è possibile trovare qualcuno così facilmente. Ma cosa succede se si dispone di un nome completo e la loro data di nascita? È sufficiente per identificare qualcuno in particolare? Cosa fare se avete loro nome e l' indirizzo che essi vivono? È sufficiente trovare qualcuno? Ed è allora che mettono in discussione, ciò che è informazioni personali identificabili, e cosa si deve preoccupare non dare via? Se si dà via identificabili personali informazioni che qualcuno ti dà, si potrebbe ottenere citato. E noi certamente non vogliamo questo. Così, quando si sta mettendo il tuo sito web fuori, e si dispone di una davvero cool disegno, si spera hai fatto un progetto finale impressionante. Qualsiasi tipo di si desidera metterlo fuori là. Si vuole fare in modo che qualsiasi si sta prendendo da parte dell'utente, se è informazioni di identificazione personale, vuole fare in modo che tu sia davvero attenti con esso. Shell iniezione. OK. Iniezione Shell permette all'intruso di ottenere l'accesso alla riga di comando effettivo nel server. E così lui è in grado di eseguire codice che non si può controllare. Facciamo un esempio di questo bella stringa qui. Se andiamo di nuovo nel sito, sono intenzione di andare in iniezione di codice. Così che cosa fa è - è anche ciò che siamo stati guardando prima. Stiamo lasciando l'utente messo in qualunque che vuole, e stamperà quello che vuoi. Quindi ho intenzione di mettere una chiamata. Quello che fa è - inizierà concatenando. Così mi permette di correre qualunque comandare funzionamento della persona prima e il mio comando. E sto eseguendo un comando di sistema. E questi ultimi stringhe sono - ricorda quello che ho parlato con voi ragazzi su, considerando che si deve codificare in un metodo URL. Se corro questo adesso - Vi mostrerò qui - vedrai che ho finito up esecuzione di un comando. Questo è in realtà il server effettivo che il mio sito è in esecuzione. Quindi non vogliamo che, perché posso correre - questo server non è mio. Quindi io non voglio rovinare la sua la sorella, il server di Marcus. Ma è possibile eseguire più comandi che sono pericolosi. E potenzialmente, si potrebbe eliminare file, rimuovere directory. Posso rimuovere una directory se Avrei voluto, ma non voglio per fare questo a Marcus. Lui è un bravo ragazzo. Lui mi ha prestato il suo server. Quindi ho intenzione di lasciarlo off sul buono. Quindi, ciò che non si vuole usare - non lo facciamo desidera utilizzare eval o sistema. Eval o il sistema ci permette di effettuare queste chiamate di sistema. Mezzi Eval valutare. Sistema vuol dire quello che ho incontrato. È gestito qualcosa nel sistema. Ma possiamo vietare queste cose in PHP in modo che noi non li usiamo. E upload di file. Stavo per fare un fantastico cosa con l'upload di file. Ma come ti ho detto ragazzi, il mio file cosa upload non funziona. Se dovessi caricare un file in questo momento - se dovessi caricare un file, ed è una foto - avete una cosa di caricamento questa è una foto. Va bene. Non succede nulla. Ma se hai un file di caricamento, per esempio e l'utente effettivamente arrivi un file PHP o un file exe o qualcosa del genere così, allora si potrebbe potenzialmente avere un problema. Questo funzionava prima. Purtroppo per me, è Non funziona più. Se io, per esempio, caricare il file, io sono non ottenere il permesso di caricare il file dovuto al server non essendo il mio. Così il ragazzo è davvero intelligente. Quindi noi non vogliamo - Ho intenzione di mostrare voi ragazzi - Ok, questi sono alcuni strumenti davvero cool. Quindi questi - andare in - se voi ragazzi avete Firefox - speriamo che fate. Ci sono due add-on chiamato SQL Inject Me e Cross-Site Script me. Si aprono così piccolo lato barre sul lato. E se dovessi andare a CS60 per esempio - quindi ciò che fa è che sembra per tutte le forme che - si spera, non voglio entrare nei guai per questo. Ma OK. Ecco il sistema pin. Così, quando mi metto alla ricerca di buchi in il sistema, la prima cosa che faccio è aprire questa bella utensile sul lato. E sto andando a testare forme con gli attacchi auto. E così quello che fa è che lentamente aprire un mucchio di browser. Ecco un mucchio di browser. E sta provando ogni singola combinazione di cross-site scripting che eventualmente è, se si vede sul lato. E mi darà un risultato una sorta di quale sia la risposta. Tutto passa. Ovviamente, tutti passano. Voglio dire, sono davvero intelligenti gente lassù. Ma se dovessi correre - Ho avuto momenti prima quando eseguo questo su progetti finali degli studenti. Ho semplicemente eseguito SQL Inject Me con tutti i diversi attacchi. E si sta cercando di SQL Inject questo server pin. Quindi, se scorriamo, per esempio, si dice - questo è un bene se ritorna. Così testato alcuni determinati valori. E il server ha restituito un codice che è stato negativo. Rimuovere temporaneamente. Questo è un bene. Si cerca tutte queste prove. Così si potrebbe semplicemente eseguire - Vorrei poter trovare un sito web vero e proprio rapido che avrebbe lasciato me - forse il negozio CS50. Wow, questo sta per richiedere troppo tempo. Lascio il primo test non finire a destra. Quindi è lamentarsi. Quindi queste sono tre cose. Questi strumenti sono gratuiti. Potete scaricarli ed eseguirli su il tuo sito web, e vi dirà se avete cross-site scripting, se si dispone di SQL, se avete qualcosa di simile. Sono una specie di incasinare. Ciò che è importante - OK, mai fidarsi dell'utente. Qualunque sia gli input dell'utente a voi, fare Assicurati di disinfettare, si pulirlo, controllare per le cose giuste, che ti sta dando quello che che lui per darvi. Essere sempre aggiornato su ciò che i quadri che si sta usando. Se si utilizza qualcosa come bootstrap - So che voi ragazzi stanno per usare bootstrap perché ha intenzione di andare su questo presto in classe - e Wordpress o qualcosa di simile, Normalmente questo potrebbe essere violato. E poi non sai nemmeno. Si sta solo eseguendo il tuo sito web. Ed è totalmente sicuro. E si scende. Così sto pesca molto presto. Ma voglio ringraziare pentest Labs. Ho intenzione di mostrare voi ragazzi qualcosa chiamato pentest Labs. Se voi siete veramente interessati quale sicurezza è davvero, c'è una sito web chiamato pentest Labs se voi ragazzi GO per adesso. Oh, bene, che non è vero. Sto solo andando a correre in questo modo. Google mi dice la risposta. OK. E insegna utilizzare voi - così dice, imparare penetrazione web test nel modo giusto. Ti insegna - si spera, sei una persona etica. Ma ti insegna come si può guardare come si può ottenere dentro siti web. E se si impara come si può entrare siti web, si può imparare a proteggersi da ottenere siti all'interno. Lasciatemi zoomare perché forse voi ragazzi Non stanno guardando questo diritto. Da SQL injection a guscio, così sorta di come posso ottenere da SQL iniezione a guscio. E si scarica questa macchina virtuale. E la macchina virtuale viene già con il sito web che si sta andando a cercare su di esso. Si scarica questo PDF. E vi mostrerà riga per riga ciò che quello che dovete fare, quello che si controlla. Questo è ciò che un utente malintenzionato realtà lo fa per ottenere all'interno di un sito web. E alcune di queste cose è complicato. Vorrei poter andare oltre più cose con voi ragazzi. Ma temo che voi ragazzi Non hanno davvero - questo è quello che ho passato sopra con voi ragazzi, test web per test di penetrazione. Non so davvero che cosa SQL è e che cosa - Seminario di Carl Jackson è incredibile come bene. Voi ragazzi non sanno liste di cosa si tratta. Ma se andate a questo sito, e si scaricare questi tutorial e questi PDF, è possibile dare un'occhiata a sorta di ciò che l'area della sicurezza fa davvero in test di penetrazione, vedere come è possibile ottenere siti all'interno e proteggere da esso. Quindi se faccio una panoramica super veloce, Sarà evitare cross-site scripting. Si desidera utilizzare htmlspecialchars ogni cronometrare l'input dell'utente qualcosa. Prevenire SQL injection. Se lo fai, sei già meglio di Harvard era quando si sono aperti un varco. E assicurarsi che le password non sono in testo normale. Assicurati di fare non solo un modo di hash loro, ma che si utilizza cripta, il PHP funzione che vi ho mostrato i ragazzi. In questo modo, dovrebbe essere buona. Inoltre, se i tuoi amici ti permettono, esegue SQL non Iniettare Me sui loro siti web. Eseguire cross-site scripting sui loro siti web. E vedrete un sacco di questi siti web avere una tonnellata di vulnerabilità. E 'incredibile quanto la gente dimentica per sterilizzare i loro database o per fare sicuro di quello che inserendo della persona non è codice di script. OK. I sorta di finito molto presto. Ma se qualcuno ha dei dubbi niente, mi può sparare una domanda. Già. Vai, vai. PUBBLICO: Voglio solo chiedere, si può spiegare come il file carica esattamente opere. LUCIANO ARANGO: Già. Quindi lasciate che vi mostri il file carica reale veloce. Così l'upload di file - il problema wit l'upload di file in questo momento è che - Ho intenzione di aprire il codice in modo che voi ragazzi vedere il codice dietro le quinte. Ed è carica. Ecco un codice per il file uploader. Stiamo cercando di entrare in questo Elenco qui. E stiamo cercando di, una volta che inserire il il file, il file isset - quindi quando c'è un presentare in FILES, l'immagine, poi cerchiamo di spostare qui. Noi afferriamo il file qui. Il metodo è POST, tipo, immagine, file. E stiamo inviando questo file. E poi una volta che otteniamo, quindi una volta che il file ha un'immagine, stiamo cercando di inviare a questa directory. Il problema è che il sito non è lasciarmi andare a questa directory, perché non vuole che io vada indietro. Non vuole che me ne vada - Devo andare - ecco cos'é carica. Ecco le immagini. Devo andare tutta la strada al inizio e metterlo in là e poi andare a metterlo nella directory. Quindi, se io correvo una finestra di terminale, e volevo spostare un file - [Incomprensibile] può vederlo. Se volevo spostare un file, ho mettere il nome del file e quindi il percorso completo voglio inviarlo a. E poi il server non è lasciarmi andare indietro. E quindi non è lasciare Mi arrivare a quel file. Ma normalmente - quindi c'è un codice per caricamento di un file. Quindi, normalmente ciò che accadrà è che l' persona non sta verificando se il mio file termina con. jpeg, così ho vorrebbe controllare. Lasciatemi aprire un esempio troppo rapido reale. OK. Questa persona giusta - così ad esempio due sta controllando se preg_match - qui è finita qui - fare in modo che le estremità con PHP, che è buono. Questo è un bene. Ma c'è un vero e proprio grande problema con questo. Questo è un bene. Ma se dovessi mettere un file chiamato myfavoritepicture.php.jpeg, ho potuto ancora potenzialmente sbarazzarsi del jpeg ed eseguire it.k che PHP di pericoloso. Se non si desidera la persona sia in grado per eseguire il codice sul tuo sito web. Ma poi. Jpeg lascia passare. L'idea è ciò che si vuole veramente fare non è prendere i file, A. Ma, OK, cosa si vuole veramente fare è assicurarsi che si legge su tutto il mondo. E non c'è nulla. Php in esso. Non c'è. Php nella intero nome del file. AUDIENCE: Ma si potrebbe mettere. jpeg alla fine. I server ancora eseguire il codice. LUCIANO ARANGO: No, non lo farà eseguito all'inizio. Bisogna tornare indietro e provare per vedere se è possibile - AUDIENCE: Quindi dobbiamo - OK, solo un altro set che coinvolge - LUCIANO ARANGO: Già. AUDIENCE: OK. LUCIANO ARANGO: Già. OK. Tutte le altre domande? OK. Ho intenzione di lasciare questo e ordinare di provare a vedere se voi ragazzi può - le altre sono un po 'più complicato perché richiedono molto più conoscenza di SQL che solo il inizio conoscenza del web SQL è e ciò JavaScript è. Ma ho intenzione di cercare di mantenere questa funzione, e speriamo che voi ragazzi impareranno su questo e cercare di dare uno sguardo a cosa si può fare e quante esempi si può ottenere attraverso. Qualcuno ha qualche altra domande su di esso? Vai avanti. Sì, sparare, sparare. Sì, andare avanti. Vai avanti. AUDIENCE: OK. Così ho sentito parlare di come magic quotes non sono abbastanza sicuro. LUCIANO ARANGO: Cosa - Magic Quotes? AUDIENCE: Già. Quindi aggiunge - così ogni volta che si immette qualcosa, aggiunge sempre le virgolette. LUCIANO ARANGO: Già. Già. OK. PUBBLICO: E poi ho pensato che lavoravo, ma poi ho cercato su. E ha detto che non è buono. Ma io non so perché. LUCIANO ARANGO: Già. AUDIENCE: Non utilizzare Magic Quotes, perché non è sicuro. LUCIANO ARANGO: OK. Quotazioni Così, la magia è quando si inserisce SQL e aggiunge già la citazione per voi. AUDIENCE: Aggiunge sempre le virgolette intorno a quello che mettete dentro LUCIANO ARANGO: Già. Così il problema è che - Prendo uno sguardo a - AUDIENCE: Come acquisire l'istruzione SQL? O Credo che potrebbe essere come selezionare preventivo. LUCIANO ARANGO: Sì, è necessario buone quotazioni per SQL. PUBBLICO: No, ma il server lo fa per voi. LUCIANO ARANGO: Queste piccole citazioni proprio qui, queste piccole citazioni? AUDIENCE: Già. LUCIANO ARANGO: Già. Il problema è che si può commentare l'ultimo - Ok, quindi quello che posso fare è che posso commentare - quindi diamo un'occhiata a - let me aprire un file di testo di modifica. Vorrei solo modificare questo proprio qui direttamente. OK. Riesci a vedere ragazzi che chiaramente? Quello che posso fare è che posso commentare l'ultimo. Questo commentare l'ultima. E poi mi metterò uno qui, mettere tutta roba dannoso qui. Così l'utente realtà inserendo, giusto? L'utente non sta inserendo le cose, giusto? Questo è quello che ho intenzione di ingresso come la persona che tenta di entrare. Ho intenzione di mettere in - questa è una virgoletta. E 'solo deformata per errore. E poi ciò che il codice è intenzione di fare - scusate, ho intenzione di prendere questo fuori. Quello che il codice sta per fare è sta andando per aggiungere il primo virgolette qui. E sta andando a aggiungere l'ultima virgoletta pure. Ed è anche intenzione di aggiungere l' Infine, l'ultima virgoletta. Ma sto commentando questi preventivo segna fuori, quindi non corrono. E sto finendo questa citazione marcare qui. Hai capito? Ti sei perso? Posso commentare l'ultima quotazione segno, e prendersi cura del prima virgoletta. PUBBLICO: E finitura appena il primo. LUCIANO ARANGO: Già. E proprio finire il primo. Sì, è giusto. Questo è quello che posso fare. Già. Tutte le altre domande del genere? Questa è una grande domanda. No, sì, forse. Speriamo che voi ragazzi sorta di effettuare più senso quando si studia SQL e cose del genere. Ma assicuratevi di - mantenere questi strumenti in guardia. Spiacenti, questi strumenti più qui. Questi strumenti sono grandi. Se qualcuno ha delle domande, potete anche scrivermi. Questa è la mia email normale. E questa è la mia mail di lavoro, che è quando lavoro a SEAS. OK, grazie. Grazie, ragazzi. Tu sei a posto. Non dovete stare qui. Non applaudire. Che strano. OK, grazie, ragazzi.