>> LUCIANO Arango: OK, băieți.
Numele meu este Luciano Arango.
Sunt un al doilea de studentie în Adams House.
Și vom vorbi despre securitate web apărare activă.
Așa că am de lucru pentru Biroul de Informare Securitate în SEAS.
Și în timpul verii, am internat la SeguraTec, care a fost o informație
Compania de securitate care a servit pentru Banca de Columbia.
Asta-i cea mai mare parte în care am învățat ceea ce am învățat până acum.
>> Și astfel o parte din materialul pe care suntem de gând să meargă peste ziua de azi, noi nu avem
într-adevăr a vorbit despre în clasa.
Dar o vom face în curând.
O să fie ca SQL, JavaScript.
Și nu am cu adevărat trecut peste el.
Asa ca am putea sorta de zbor prin ea, și s-ar putea să nu știu unele lucruri.
Dar în curând, vei afla.
Și va face toate sens.
De asemenea, un alt lucru -
rămâne etic.
Unele din lucrurile pe care le învață, te ar putea folosi într-un mod non-etice.
>> Dacă e al tău, să încercați cu siguranta.
Eu cu siguranta voi motiva pentru a încerca propriile servere, încercați
întâmplă în interiorul lor.
A se vedea dacă aveți posibilitatea să le pătrundă, dacă puteți obține în interiorul lor.
Dar nu oricine altcineva.
Polițiștii nu-mi place cu adevărat glumele și În general, am pus asta aici.
Am fost în jur de joc.
Ei primesc foarte furios.
>> Deci, peste cap de la acest site.
Am deschis-o chiar aici.
Acesta este un site web, și-l are o grămadă de exemple.
Ce se întâmplă este că primul exemplu este un fel de a merge pentru a fi mult mai ușor
decât ultimul exemplu într-un sens că primul exemplu
este complet nesigur.
Iar ultima este un fel de ceea ce o persoană normală securitate web ar face.
Dar puteți totuși fel de a obține în jurul asta.
Și am de gând să concentrându-se pe o și doi, exemple unu și doi.
>> OK.
Să începem cu cross-site scripting.
JavaScript este rulat pe browser-ul clientului.
Este un limbaj de programare pe care le utilizați pentru a rula pe browser-ul clientului, astfel
nu aveți pentru a actualiza site-ul web și du-te înapoi la server.
L-ați pornit.
De exemplu, Facebook, nu trebuie pentru a reîncărca site-ul pentru un nou statut
actualizări de a veni.
Este folosind JavaScript pentru a genera toate aceste lucruri.
Deci, putem injecta malitios JavaScript în site-urile.
Și în acest fel, atunci când vom trimite un link la cineva, am putea un fel de-l trimite cu
o parte din codul pe care ne-o dorim.
>> Există persistente și non-persistent JavaScript -
persistente și non-persistent cross-site-ul scripting, vreau să spun.
Și diferența fiind că persistente este JavaScript care va fi
salvate pe site-ul web.
Și non-persistent va fi JavaScript că se va întâmpla de fapt, doar o dată.
Așa că haideți să ne uităm la un exemplu foarte repede.
>> OK.
Deci acest site, simplu, nu se întâmplă nimic aici.
Și vom încerca să introduce unele JavaScript.
Deci, modul în care începe să scrie JavaScript este să începem cu scenariul început.
Și l-am închide cu script.
Suntem pur și simplu merge pentru a pune un mesaj -
Vă voi arăta -
alertă.
Alert este o funcție care JavaScript folosește pentru a afișa ceva.
Deci, haideți să încercăm repede.
Am de gând să merg, salut alertă.
Ei bine, am uitat să pun -
OK.
Deci, asta e simplu.
>> Am pus JavaScript pe un site web, și a venit în sus.
Și ea un fel de întâmplă numai pe site-ul nostru, nu?
Deci, se pare ca nu e o problemă, nu?
Vreau să spun, cum ai putea folosi această răutate?
Astfel modul în care hackerii fac acest lucru este foarte simplu.
Ei au de gând să-l apuca.
Ei pot trimite link-ul pentru tine.
Dacă voi trimite link-ul la tine chiar acum, și-l deschide, se va
spun, salut, spunând că site-ul meu va spune salut.
>> Și așa că, dacă ar fi să spun ceva un pic mai inteligent, dacă am trage un
JavaScript funcții I fel a scris deja -
dar dacă te uiți la el, voi merge peste el înainte de a am scris-o.
Așa că am de gând să se stabilească un timeout.
Vom aștepta câteva secunde.
De fapt, am de gând să aștepte, în cazul în care Eu nu mă înșel, cinci secunde.
Acest lucru este valabil în milisecunde.
Și atunci ce vom face este că suntem O să avertizăm că conectare
a expirat pentru a vă conecta înapoi inch
Și vom schimba locația la o altă locație.
>> Deci, dacă am trimite acest site pentru cineva, ei vor fi
navighează în jurul, calm.
Nu se întâmplă nimic.
Și în cinci secunde, acesta va să spun, login-ul expirat.
Conectați-vă înapoi inch
După ce fac clic pe OK, am de gând să le ia la un alt site.
Probabil, site-ul se va fie similar cu site-ul care
au fost înainte.
Și au de gând să vă conectați lor scrisorile de acreditare în site-ul meu în loc de
site-ul lor.
>> Și așa că am putea trimite oameni o e-mail cu acest link.
Eu zic, oh, aici este un link.
Aceasta este o bancă, de exemplu.
Eu spun, aici, du-te la acest link.
Și odată ce-l trimit, sunt va fi de navigare în jurul.
Pot să aștept timp de 15 secunde, 20 secunde, și apoi pop care vă rugăm să intrați din nou în
semna din nou.
Voi încerca să-l cu mult mai multe lucruri.
E complicat pentru că voi nu s-au văzut JavaScript, deci s-ar putea
Nu știu unele funcții.
Dar tot ce trebuie să faceți este să înceapă cu script-ul, se încheie cu script.
Și ai putea pune ceva în mijloc.
>> Alert este o funcție, așteptați.
Locul de amplasare fereastră va duce într-o locație nouă.
Dar puteți face acest lucru mult mai mult.
Și astfel ideea este că vom lua aia.
Dacă mă duc la exemplu, două, și eu pune în același cod, este
nu va merge.
Deci, se imprimă tot din cauza ceea ce acest site inițial
nu este dacă am pus ceva aici, se va imprima chiar aici.
Deci, nu se imprimă nimic.
Acest exemplu este de fapt verificare pentru a vedea în cazul în care script-ul este acolo.
Deci da, dă-i drumul.
Întreabă-mă.
>> Audiența: nu este trimiterea o obține sau cerere posta?
>> LUCIANO Arango: Da. acestea sunt trimite o cerere GET.
>> Audiența: Este?
>> LUCIANO Arango: Da.
De asemenea, browsere folosesc cereri POST.
Dar eu încerc să arate cereri get astfel încât să putem vedea ce este
de fapt se întâmplă.
Și așa, dacă ne uităm la acest cod - asa ca nu mai e de lucru.
Și dacă ne uităm la acest cod, aceasta va fi în exemplul doi.
Ce această persoană este de a face, persoana care se ocupă de acest browser -
deschide, OK -
este înlocuirea script cuvânt.
Acest lucru este PHP, care voi s-ar putea au văzut un pic de încă.
>> Tocmai înlocuirea script cuvânt cu nume.
Deci, cu toate acestea, dacă am merge mai departe și doar a pus în -
dacă am apuca codul meu din nou, și am de gând să-l modifice doar un pic.
În loc de scenariu, am de gând să se schimbe l pentru script cu un capital R. Și
vom vedea dacă acest cod de lucrări.
Deci, nu-l imprimați, ceea ce este un semn bun.
Și, sperăm, în mai multe de două secunde, se va pop-up.
>> Login-ul expirat.
OK.
E bine.
Deci, de verificare pentru script-ar putea nu funcționează în mod necesar.
Persoana -
se poate verifica, de asemenea, pentru script majuscule, script litere mici, caz str.
comparație, asigurați-vă că sunt la fel.
Dar hacker poate face încă un fel de ceea ce am făcut în Vigenere când ne-am mutat
înapoi câteva personaje, merge mai departe.
Și-l pot da seama cum de a pune script înapoi acolo astfel încât să poată injecta
că script.
>> Deci, ceea ce doriți să utilizați este htmlspecialchars a
proteja site-ul dumneavoastră.
Și ce acest lucru nu este o face sigur că ceea ce ai pus în -
de exemplu, cursuri sau acest mai mare sau mai mică de -
este înlocuit cu ceva că nu va fi -
permiteți-mi mări aici -
ampersand real.
Acesta va înlocui cele special HTML personaje pe care le vom vedea când vom fi
vorbesc despre -
oh, acest lucru se întâmplă să mă ducă înapoi la -
aceste personaje chiar aici.
>> Acestea înseamnă că ceva se apropie.
Pentru HTML, ca suport început ne spune că ceva
Vine HTML aferente.
Și vrem să scăpăm de asta.
Noi nu vrem să pună HTML într-un website.k Nu vrem ca utilizatorul să fie
posibilitatea de a pune ceva pe site-ul lor care pot afecta site-ul lor, cum ar fi
script sau HTML sau ceva de genul asta.
Ceea ce este important este că asanare a introduse de utilizator.
>> Astfel încât utilizatorii pot de intrare multe lucruri.
El poate introduce o grămadă de lucruri pentru a încerca a truc browser-ul dvs. în continuare
care rulează acest cod script.
Ce doriți să faceți este să nu se uite doar pentru scenariu, dar uita-te pentru tot
care ar putea fi rău intenționat.
Și htmlspecialchars va face asta pentru tine, astfel încât să nu aveți
să vă faceți griji despre asta.
Dar nu încerca să faci de unul singur un fel de cu propriul cod.
Este clar pe toată lumea XSS?
>> OK.
Să mergem la SQL injection.
Deci, injecție SQL este, probabil, numărul unu vulnerabilitate
în diferite site-uri.
Vreau să spun, un exemplu bun -
Am fost doar cercetarea mai departe pentru acest lucru.
Și am găsit acest articol minunat, în cazul în care Am văzut că la Harvard a fost încălcat,
a fost spart.
Și mă întrebam, ei bine, cum ar face ei?
E Harvard cel mai minunat, cel mai asigura universitate vreodată.
Corect?
Ei bine, să încalce serverele, hackerii au folosit un
tehnica numita SQL injection.
>> Deci, acest lucru se întâmplă într-o zi la bază zi.
Oameni uitați să luați în considerare pentru injecție SQL.
Harvard are.
Cred că se spune aici, Princeton, Stanford, Cornell.
Deci, cum putem - Deci, ce este această SQL injectare, care aduce toate aceste
oameni în jos?
OK.
Deci, SQL este un limbaj de programare care vom folosi pentru a accesa bazele de date.
Ceea ce facem este vom selecta -
Deci, despre ce citește acum este select totul, de la masa.
>> SQL, se schimbă în aceste baze de date care au mese pline de informații.
Deci, alege totul, de la utilizatori în cazul în care numele este numele de utilizator.
Corect?
Destul de simplu.
Ideea de injecție SQL este că noi introduceți un cod malitios care ar
păcăli serverul în care rulează ceva diferit de ceea ce se
inițial a fost difuzate.
Deci, haideți să spunem, de numele de utilizator, am pus în sau 1 este egal cu 1.
Așa că am pus în sau 1 este egal cu 1.
Modul în care se va citi acum vor fi selectați de la utilizatori, totul, de la
utilizatori - aceasta este tot ceea ce -
unde nume este numele de utilizator, dar numele de utilizator este de 1 sau egal cu 1.
>> Deci numele nu este nimic sau 1 este egal cu 1.
1 este egal cu 1 este întotdeauna adevărat.
Deci, acest lucru se va întoarce întotdeauna informații de utilizatori.
OK.
Noi nu trebuie să aibă numele de utilizator corect.
Putem avea doar ceva care ne-o dorim, și se va reveni informații
de care avem nevoie.
Să ne uităm la un alt exemplu.
>> Dacă am alege orice de la utilizator, unde nume este utilizatorii TABLE DROP -
Deci, ce crezi că acest lucru va face în cazul în care am pus la numele de utilizator
ca utilizatorii TABLE DROP?
Oricine are o idee?
Da.
>> Audiența: O să spun o să-și arunce toate mesele.
>> LUCIANO Arango: O să ne spună să-și arunce totul în site-ul,
tot în baza de date.
Și ceea ce oamenii folosesc acest lucru pentru - așa Am de gând să-ți arăt băieți.
Am dezactivat scadere tabele pentru că eu nu te-am vrut
băieți să renunțe mesele mele.
Să aruncăm o privire la aceasta.
Deci, acest lucru pur și simplu trage în sus informațiile pentru o anumită persoană.
Deci, cum știm dacă acest lucru este afectat de injecție SQL.
Vom verifica foarte repede dacă putem pune ceva -
permiteți-mi să copiați acest cod.
Am de gând să meargă peste ea într-o secundă.
Am de gând să rădăcină și 1 este egal cu 1.
>> Acest lucru chiar aici, acest procente semn 23 -
ceea ce este într-adevăr, dacă am uita-te aici la -
modul HTML ia în număr, dacă aruncăm o privire la când am pus într-un spațiu
aici - dacă ar fi să spațiu ceva aici, ea se transformă într-o sută 2.
Nu voi vedea acest lucru chiar aici atunci când am pus într-un spațiu?
Modul în care funcționează este că puteți doar trimite valorile ASCII prin HTML.
Deci îl înlocuiește, de exemplu, un spațiu cu 20 la sută.
Nu știu dacă voi au văzut că, înainte.
>> Acesta înlocuiește un hashtag cu 23 la sută.
Avem nevoie de un hashtag la sfârșitul sau afirmație astfel încât să putem spune
de baze de date pentru a uita să comentați acest ultim punct și virgulă la sfârșitul anului.
Vrem să nu se gândească la asta.
Vrem doar să rulați totul pe care le avem în prealabil și
comment asta.
Să aruncăm o privire la ea.
>> Deci, dacă ar fi să pun ceva în neregulă - să spunem, de exemplu, mi-am pus 2 la egal la egal
1, nu-mi dai nimic.
Când m-am pus în 1 este egal cu 1, și o face reveni ceva, acest lucru mi-a spus că
aceasta este vulnerabil la o injecție SQL.
Știu acum că orice Am pus după această -
și, de exemplu, DROP TABELE sau ceva de genul asta
va lucra cu siguranta.
Știu că e vulnerabil la SQL injection pentru că știu că
sub capota, se lasa mi fac un lucru este egal cu 1.
OK?
>> Și dacă ne uităm la aceste altele, numărul doi și numărul trei, este
de gând să faci un pic mai mult de verificare sub
capota din ceea ce este.
Astfel încât oricine să permită scăderea încă nimic sau au încercat?
Nu voi un fel de a obține SQL încă?
Pentru că știu că voi nu au văzut-o încă, așa că e un fel de
confuz pentru voi.
Să aruncăm o privire.
Deci, ceea ce este modul de a preveni sqli?
OK.
Deci, acest lucru este foarte important pentru că baieti cu siguranta doriți pentru a preveni
aceasta în site-urile dvs..
>> Dacă nu, toți prietenii tăi sunt de gând să râd de tine atunci când picătură toate
tabele.
Deci, ideea este că veți repara SQL într-un anumit fel, în timp ce se potrivesc
ceea ce intrările de utilizatori cu un anumit șir.
Deci, modul în care aceasta funcționează este tine pregăti baza de date.
Selectați nume, culoare, și de calorii dintr-o bază de date numită fruct.
Și atunci unde calorii este mai mic, și am pus un semn de întrebare acolo
spunând vom intrare ceva într-o secundă.
>> Și culoare este egal, și am pus o întrebare semn spunând vom
ceva de intrare într-un al doilea, de asemenea.
OK?
Și apoi l-am executa, punând în 150 și roșu.
Iar acest lucru se va verifica pentru a face sigur că aceste două -
această matrice va verifica faptul că aceste două sunt un întreg și
că acest lucru este un șir.
Apoi mergem, și ne-am aduce toate, ne-am pus-o în roșu.
Asta înseamnă că ne aduce tot.
Aceasta înseamnă că, de fapt executa SQL declarație și a pus-o înapoi în roșu.
Aici vom face același lucru, dar ne-am face același lucru pentru galben.
Și ne-am aduce toți.
>> Și în acest fel, vom preveni utilizatorul de a fi capabil de a introduce ceva
că nu este ceea ce am precizat, un șir sau un număr întreg, de exemplu.
Vorbeam mai devreme despre bazându-se pe alții.
Când voi începe proiectul tău, ai cel mai sigur de gând să utilizeze
bootstrap sau ceva similar.
L-ați folosit vreodată Wordpress?
Probabil că voi fi folosit WordPress, cel mai probabil.
Deci problema cu folosirea lucruri altor oameni -
Mă duc la Google foarte repede Vulnerabilitate WordPress.
>> Dacă am trage asta chiar acum -
Am făcut literalmente o două secunde Google.
Putem vedea că Wordpress -
acest lucru este datat ca septembrie '12.
26 este actualizat.
Configurația implicită de Wordpress înainte de 3.6 nu împiedică aceste
anumite încărcări, care s-ar putea face mai ușor pentru
atacuri cross-site scripting.
Deci, o poveste rapid, odată ce am fost de lucru cu - așa că am fost, în vara, lucru un
stagiu.
Și am fost de lucru cu un fel de ca o companie de card de credit mare.
>> Și ele se bazează pe ceva numit -
Nu știu dacă voi jucat vreodată cu un produs numit Joomla.
Joomla este un produs care este utilizat pentru a Controlul - un fel de similar cu
Wordpress, folosit pentru a construi site-uri web.
Așa că a trebuit site-ul lor lucru pe Joomla.
Aceasta este de fapt un card de credit companie în Columbia.
Te voi duce la lor site-ul foarte repede.
>> Așa că au folosit Joomla.
Și ei nu au actualizat Joomla la cele mai recente plus.
Așa că atunci când am fost de a lua o privire la codul lor, am reușit să efectiv
du-te în interiorul codul lor și fura tot informații card de credit care au avut,
toate numerele de card de credit, numele, adresele.
Și acest lucru a fost doar -
și codul lor a fost foarte bine.
Ei au avut o mare cod.
Totul a fost de securitate.
Ei au verificat toate bazele de date.
S-au asigurat cross-site-ul scripting a fost bine.
>> Dar au folosit ceva care nu a fost actualizat, care nu a fost sigur.
Și astfel încât le-a dus la - așa voi sunt cu siguranta de gând să utilizeze alte
cod, cadre altor oameni oameni pentru a construi site-ul dumneavoastră.
Asigurați-vă că acestea sunt sigure, deoarece uneori, nu ești tu, cel care
face o greșeală.
Dar cineva face o greșeală, și atunci vei cădea în jos din cauza asta.
>> Parole și PII.
Deci parole.
OK.
Să aruncăm o privire la parole foarte repede.
OK.
Te rog, spune-mi că toată lumea foloseste sigur -
Sper că toată lumea de aici folosește parole sigure.
Mă las asta în ca o presupunere.
Deci, voi sunt cu siguranta de gând să stoca parolele pentru site-uri web.
Ai de gând să facă ceva de genul o autentificare sau ceva de genul asta.
Ceea ce este important nu este de a stoca parolele in text simplu.
Acest lucru este extrem de important.
Nu doriți să stocați un parola în text simplu.
>> Si cu siguranta nu vrei cu adevărat să-l păstrează într-un mod hash.
Deci, ceea ce o într-un fel hash este că, atunci când genera un cuvânt, atunci când pune această
cuvânt într-o funcție hash, se va genera spate un fel de criptice
mesaj sau set criptic de chei.
O să-ți arăt un exemplu.
Am de gând să hash au password1 cuvânt.
Hash astfel MD5 este de gând să-mi întoarcă un fel de informații ciudat.
>> Problema este că oamenii de acolo care vrea să intre în site-uri au
deja seama de sortare din toate hash MD5.
Ceea ce au făcut ei este așezat pe teritoriul lor calculatoare, și au distribuit în fiecare
posibil cuvânt singur acolo până au primit un fel de ceea ce este aceasta.
Dacă ar fi să te uiți asta -
Am luat acest hash.
Dacă am obține acest hash de la -
dacă mă duc într-un site web, și mi se pare acest hash pentru că eu ajung la
baze de date, și l-am privi în sus, cineva deja a dat seama pentru mine.
>> Da.
Așa că oamenii se așeză, și indiferent de MD5 hash care ai pus în, au de gând să
a reveni la ceva care este un cuvânt.
Dacă am hash un alt cuvânt, cum ar fi -
Nu știu -
trees2.
Nu vreau să fie dezamăgit de căutările mele Google.
Acolo este, trees2.
Deci, o mulțime de site-uri web încă mai folosesc md5 hash.
Ei spun, oh, e sigur.
Nu suntem stocarea în text simplu.
Avem acest hash MD5.
Și tot ce trebuie sa faci este doar Google numărul.
>> Eu nici măcar nu trebuie să mă calcula.
Am să-l Google, și cineva deja a făcut-o pentru mine.
Iată o grămadă de ei.
Iată o gramada de parole.
Deci, cu siguranta, nu folositi md5 hash, pentru că tot ce trebuie să
faceți este să Google-l.
Deci, ce vrei să utilizați în schimb?
OK.
Ceva numit sărare.
Deci, ceea ce sărare este -
nu voi amintesc când am fost vorbind despre aleatoare în -
Eu nu sunt sigur ce PSET a fost -
a fost o PSET acolo sau patru?
>> Vorbeam despre găsirea acul în carul cu fân.
Și în PSET, a spus că ai putea seama de fapt ce aleator
generează pentru că cineva deja a fugit aleatoare de un milion de ori și doar
un fel de format ceea ce le generează.
Ce doriți să faceți este să pune într-o intrare.
Deci, asta e ceea ce fel de sărare este.
Ei au deja dat seama ce sărare revine pentru fiecare lucrare.
>> Deci, ce sărare nu este ai pus într-o sare.
Ai pus într-un anumit cuvânt.
Și se va hash ca cuvânt în funcție de pe ceea ce ai pus aici.
Deci, dacă am hash parola una cu acest propoziție, se va hash
altfel dacă am hash password1 cu o pedeapsă diferită.
Este un fel de-l dă undeva la începe de hashing pentru a începe.
Deci, este mult mai greu de a calcula, dar tu poate încă se calcula, în special
dacă utilizați o sare rău.
>> Oamenii au deja, de asemenea, seama săruri și-a dat seama comune
ceea ce, care este.
Săruri aleatorii sunt mult mai bine, dar cel mai bun mod este de a utiliza
ceva numit cripta.
Și criptă ce vă permite să nu - astfel încât aceste funcții sunt
deja construit pentru tine.
Multi oameni uita ca, sau au uitat să-l folosească.
Dar dacă mă uit în sus PHP crypt, cripta returnează deja un șir hash pentru mine.
Și de fapt, săruri de mai multe ori și hash-l de mai multe ori.
>> Deci, noi nu trebuie să facem acest lucru.
Deci, tot ce trebuie sa faci este trimite-l în criptă.
Și se va crea o mare hash fără a fi nevoie să vă faceți griji cu privire la sare
sau ceva.
Pentru că dacă ar fi să-l sare, aveți să-și amintească ceea ce sare, folosit
pentru că dacă nu, nu puteți obține dvs. parola înapoi fără
sare pe care ai folosit.
OK.
>> Și, de asemenea, identificabile personal informații.
De securitate socială, astfel, carte de credit - asta e destul de evident.
Dar, uneori, oamenii uita modul în care fapte este, cât de mult informații aveți
de fapt, nevoie de a găsi ceva o singură persoană?
Cineva a făcut un studiu despre aceasta o cale de întoarcere.
Și a fost ca și cum, dacă aveți un nume complet, nu puteți găsi
cineva atât de ușor.
Dar ce se întâmplă dacă aveți un nume complet și data de naștere?
Este suficient pentru a identifica cineva în mod special?
>> Ce se întâmplă dacă ai numele lor și adresă care trăiesc pe?
Este suficient pentru a găsi pe cineva?
Și că este atunci când întrebarea, ceea ce este informații de identificare personală, și
ceea ce ar trebui să vă faceți griji cu privire la nu departe oferind?
Dacă ați da identificabile personal informații că cineva îți dă,
ai putea fi dat în judecată potențial.
Și noi cu siguranță nu vreau asta.
>> Deci, atunci când vă pune site-ul dvs. afară, și le-ați un foarte cool
proiectare, sperăm că a făcut un proiect final minunat.
Orice ai un fel de care doriți să a pus-o acolo.
Vă doriți să vă asigurați că indiferent de sunteți luați de la utilizator, în cazul în care este
informații de identificare personale, doriți să vă asigurați că ești într-adevăr
atent cu ea.
>> Injecție coajă.
OK.
Injecție Shell permite intrusul a avea acces la linia de comandă actual
în server-ul dvs..
Și așa el este capabil să ruleze cod că nu puteți controla.
Să luăm un exemplu în acest sens frumos șir chiar aici.
Dacă vom merge în site-ul din nou, eu sunt de gând să meargă în injectare de cod.
Deci, despre ce nu este -
este, de asemenea, ceea ce am fost privi înainte.
Vom lăsa utilizatorul să pună în orice el vrea, și se va imprima
ce vrei.
>> Așa că am de gând să pun un apel.
Ce este acest lucru nu este -
se va începe prin concatenarea.
Asa ca ma vor lasa sa ruleze orice comanda de funcționare a persoanei
înainte și comanda mea.
Și eu sunt rulează un sistem de comandă.
Și aceste ultimele siruri de caractere sunt - amintiți-vă ceea ce am vorbit cu voi despre,
în timp ce aveți pentru a codifica într-o metodă de URL.
Dacă I ​​a alerga acest lucru acum -
O să-ți arăt pe aici -
veți vedea că am ajuns up execută o comandă.
>> Aceasta este de fapt serverul real că site-ul meu se execută pe.
Deci, noi nu vrem asta, pentru că eu pot rula -
acest server nu este a mea.
Deci, eu nu vreau să distrugeți lui sora, server Marcus lui.
Dar puteți rula mai multe comenzi că sunt periculoase.
Si, posibil, ai putea șterge fișiere, eliminați directoare.
Am posibilitatea de a elimina un anumit director în cazul în care Am vrut, dar eu nu vreau
pentru a face acest lucru la Marcus.
E un tip de treabă.
El lasă-mă să împrumute serverul lui.
Așa că am de gând să-l lase off pe cel bun.
>> Deci, ceea ce nu doriți să utilizați - noi nu facem doriți să utilizați eval sau sistem.
Eval sau sistem ne permite să face aceste apeluri sistem.
Mijloace eval evalua.
Sistem înseamnă ceea ce am fugit.
Este condus ceva în sistem.
Dar putem să scoată în afara legii aceste lucruri în PHP, astfel încât să nu le folosesc.
Și upload.
Am fost de gând să facă un minunat lucru cu fișier de încărcare.
Dar, ca voi am spus, dosarul meu lucru de încărcare nu este de lucru.
Dacă ar fi să încărcați un fișier chiar acum -
dacă ar fi să încărcați un fișier, și este o imagine -
aveți un lucru de upload E o poză.
Asta e bine.
Nu se întâmplă nimic.
>> Dar, dacă aveți un fișier de încărcare, pentru exemplu, și utilizatorul de fapt imaginile
un fișier PHP sau un fișier exe sau ceva cum ar fi faptul că, atunci ai putea potențial
au o problemă.
Acest lucru a fost de lucru înainte.
Din nefericire pentru mine, e nu mai este de lucru.
Dacă eu, de exemplu, încărcați acest fișier, eu sunt nu primesc permisiunea de a încărca
fișierul din cauza serverului nu este a mea.
Deci, tipul e foarte inteligent.
>> Deci, noi nu vrem să -
Am de gând să arate voi -
OK, acestea sunt unele instrumente foarte cool.
Astfel încât acestea -
du-te în - în cazul în care voi avea Firefox - sperăm să faci.
Există două suplimente numite SQL Inject Eu și Cross-Site Script Me.
Ei deschid cât mai puțin lateral baruri pe partea.
Și dacă ar fi să merg la CS60 de exemplu -
deci ceea ce face este se pare pentru toate formele pe care -
sperăm, eu nu va primi probleme pentru acest.
>> Dar OK.
Iată sistemul de pini.
Așa că atunci când am începe căutarea pentru găuri în sistemul, primul lucru pe care îl fac este
deschide acest mic frumos instrument pe partea.
Și am de gând pentru a testa forme cu atacuri auto.
Și așa mai departe ceea ce acest lucru nu este va încet deschide o grămadă de browsere.
Iată o grămadă de browsere.
Și se încearcă fiecare combinație de cross-site scripting
că există, eventual, este, în cazul în care veți vedea pe partea de.
>> Și-mi va da un rezultat un fel de ceea ce răspunsul este.
Toate trec.
În mod evident, toate acestea trec.
Vreau să spun, sunt foarte inteligent oameni acolo.
Dar dacă ar fi să fugi -
Am avut momente mai înainte, când am rula acest pe proiectele finale ale elevilor.
Eu pur și simplu a alerga SQL Injectați Me cu toate atacurile diferite.
Și se încearcă să SQL injecta acest server pin.
Deci, dacă vom derula în jos, pentru exemplu, se spune -
acest lucru este bun, dacă se întoarce.
>> Deci, testat unele anumite valori.
Si serverul a returnat un cod care a fost negativ.
Elimina temporar.
Acest lucru este bun.
Incearca toate aceste teste.
Deci, ai putea pur și simplu rulați -
Aș vrea să pot găsi un site web real, repede că m-ar lăsa -
poate magazin CS50.
>> Wow, acest lucru se întâmplă la ia prea mult timp.
Voi lasa primul test nu termina bine.
Deci, se plânge.
Deci, acestea sunt cele trei lucruri.
Aceste instrumente sunt gratuite.
Puteți să le descărcați și rulați-le pe site-ul dvs., și vă va spune dacă
aveți cross-site scripting, dacă aveți SQL, dacă aveți
ceva de altele asemenea.
Sunt un fel de încurc.
>> Ceea ce este important -
OK, astfel încât să nu aibă încredere în utilizatorului.
Oricare ar fi intrările de utilizator pentru tine, face vă că-l igienizarea, îl curățați,
Cameră pentru lucrurile dreapta, că este oferindu-vă ceea ce
ca el să-ți dau.
Întotdeauna să fie actualizate pe care cadrele că sunteți de fapt, folosind.
Dacă utilizați ceva de genul bootstrap -
Știu că voi sunt de gând să utilizeze bootstrap pentru că el va merge
peste această curând în clasă -
și Wordpress sau ceva de genul asta, în mod normal, acest lucru ar putea fi spart.
>> Și atunci tu nici măcar nu știu.
Tu doar rulează site-ul dumneavoastră.
Și este absolut sigur.
Și te duci în jos.
Deci, eu sunt de pescuit foarte devreme.
Dar vreau să-i mulțumesc Pentest Labs.
Am de gând să arate voi ceva numit Pentest Labs.
Dacă voi sunteți cu adevărat interesați în ceea ce de securitate este într-adevăr, există o
site web numit Pentest Labs dacă voi merge la ea chiar acum.
Oh, ei bine, asta nu e tot.
Mă duc să-l rulați ca aceasta.
Google mi-a spus răspunsul.
>> OK.
Și-l învață să folosiți - asa ca spune, să învețe de penetrare web
testarea mod corect.
Ea te invata -
sperăm, esti o persoana etic.
Dar te învață cum poti sa te uiti la cum puteți obține în interiorul site-uri.
Și dacă ai afla cum puteți obține în interiorul site-uri web, puteți învăța cum să
a vă proteja de la obtinerea site-uri web în interiorul.
Permiteți-mi mări, deoarece poate voi nu se uita la acest drept.
>> De la injecție SQL pentru a plăti, așa un fel de modul în care pot obține de la SQL
injecție pentru a plăti.
Și să descărcați această mașină virtuală.
Și mașina virtuală vine deja cu site-ul pe care esti
de gând să-l încerce pe.
Să descărcați acest PDF.
Și vă va arăta linie cu linie ce ce trebuie să faci, ce verifică.
Aceasta este ceea ce un atacator de fapt nu pentru a obține într-un site web.
>> Iar unele dintre aceste lucruri este complicat.
Aș vrea să pot trece peste mai mult lucruri cu voi.
Dar mi-e teamă că voi nu au într-adevăr -
acest lucru este ceea ce m-am dus peste cu voi, teste de web
pentru teste de penetrare.
Nu știu cu adevărat ce SQL este și ceea ce -
Seminar Carl Jackson este minunat la fel de bine.
Voi nu știu fel de ce este aceasta.
Dar dacă te duci la acest site, și tu descarca aceste tutoriale și acestea
PDF-uri, aveți posibilitatea să luați o privire la fel de ce zona de securitate nu într-adevăr
în teste de penetrare, vezi cum poți a obține site-uri web în interiorul și proteja
te de la ea.
>> Deci, dacă am face o imagine de ansamblu super-rapid, acesta va fi preveni cross-site scripting.
Vrei să htmlspecialchars utilizați de fiecare momentul în care datele introduse de utilizator ceva.
Preveni injecție SQL.
Dacă faci asta, ești deja mai bine decât la Harvard a fost
atunci când s-au încălcat.
Și asigurați-vă că parolele nu sunt în text simplu.
Asigurați-vă că nu numai într-un fel hash ei, dar pe care le utilizați criptă, PHP
Funcția pe care le-am arătat băieți.
În acest fel, ar trebui să fie bun.
>> De asemenea, în cazul în care prietenii tăi să vă, rulați Me SQL injectează pe site-urile lor.
Rulați cross-site scripting pe site-urile lor.
Și veți vedea o mulțime de aceste site-uri au o tona de vulnerabilități.
Este incredibil cât de mult oamenii uita pentru a steriliza bazele lor de date sau pentru a face
sigur ce a introdus în sistem a persoanei nu este cod de script.
OK.
Am cam terminat foarte devreme.
Dar dacă cineva are întrebări despre ceva, puteți să-mi trage o întrebare.
Da.
Du-te, du-te.
>> Audiența: Vreau doar să întreb, poate explica modul în care fișierul
încărcați exact lucrări.
>> LUCIANO Arango: Da.
Deci, lasă-mă să vă arăt dosarul încărca foarte repede.
Deci, fișier de încărcare -
problema spirit upload fișier chiar acum este că -
Am de gând să deschidă codul asa ca voi vedea codul din spatele scenei.
Și este încărcați.
Aici e un cod pentru încărcare fișier.
>> Încercăm să meargă în această directorul aici.
Și noi încercăm să, odată ce vom intrare fișier, dosar isset - așa că atunci când există o
fișier în fișiere, acea imagine, atunci vom încerca să-l mute aici.
Ne apuca fișierul pe aici.
Metoda este POST, tip, de imagine, fișier.
Și vom trimite acest fișier.
Și apoi o dată ne-am înțeles, astfel încât o dată fișier are o imagine, noi încercăm să-l trimită
pentru acest director.
>> Problema este că site-ul nu este lasa-ma sa plec la acest director,
pentru că nu vrea să mă întorc.
Ea nu vrea să mă duc -
Trebuie să mă duc - Deci, aici e încărcați.
Iată imagini.
Trebuie să merg tot drumul înapoi la început și a pus-o acolo și apoi
du-te și pune-l în directorul.
Deci, dacă am fost difuzate o fereastră terminal, și am vrut să se mute un fișier -
[Inaudibil]
se poate vedea.
Dacă am vrut să se mute un fișier, am pentru a pune numele de fișier și apoi
cale complet Vreau să-l trimită la.
>> Și atunci serverul nu este mă lași să mă întorc.
Și deci nu lasa mi ajunge la acel fișier.
Dar în mod normal -
deci nu e un cod pentru încărcarea unui fișier.
Deci, în mod normal, ceea ce se va întâmpla este că persoană nu se verifica dacă dosarul meu
se termină cu. jpeg, așa că am ar dori să verificați.
Permiteți-mi deschid un exemplu prea repede.
>> OK.
Această persoană drept -
astfel de exemplu doi este verificarea dacă preg_match -
aici e aici -
pentru a se asigura că se termină cu PHP, care este bun.
Acest lucru este bun.
Dar există o mare reală probleme pentru acest.
Acest lucru este bun.
Dar dacă ar fi să pun un fișier numit myfavoritepicture.php.jpeg, am putut
încă potențial scăpa de JPEG și a alerga it.k Asta e PHP periculos.
Nu vrei persoana să fie în măsură pentru a rula cod pe site-ul tau.
>> Dar apoi. Jpeg vă permite să-l dați.
Ideea este ceea ce vrei cu adevărat să faci nu se ia fișiere, A. Dar, OK, ceea ce
într-adevăr doriți să faceți este să vă asigurați că ai citit în întreaga lume.
Și nu e nimic. Php în el.
Nu e nici un. Php în întreg nume de fișier.
>> Audiența: Dar ai putea pune. jpeg la sfârșitul.
Serverele încă rula cod.
>> LUCIANO Arango: Nu, ea nu va rula la început.
Trebuie să te duci înapoi și să încercați pentru a vedea dacă se poate -
>> Audiența: Deci, avem de a -
OK, doar un alt set care implică -
>> LUCIANO Arango: Da.
>> Audiența: OK.
>> LUCIANO Arango: Da.
OK.
Orice alte întrebări?
OK.
Am de gând să părăsească această sus și sortarea a încerca să vedem dacă voi putea -
celelalte sunt un pic mai mult complicată, deoarece au nevoie de mai mult
mai multe cunoștințe de SQL mult decât începutul cunoștințe de web SQL este și
ceea ce este JavaScript.
Dar am de gând să încercați să păstrați asta, și sperăm că voi vor învăța
despre acest lucru și să încerce să ia o privire la ceea ce se poate face și cât de multe exemple
puteți obține prin intermediul.
>> Oricine are orice alt întrebări despre ea?
Dă-i drumul.
Da, trage, trage.
Da, dă-i drumul.
Dă-i drumul.
>> Audiența: OK.
Am auzit despre cum Citate Magic nu sunt suficient de sigur.
>> LUCIANO Arango: Ce -
Citate Magic?
>> Audienta: Da.
Deci, se adaugă - astfel încât ori de câte ori de intrare ceva, se adaugă întotdeauna citate.
>> LUCIANO Arango: Da.
Da.
OK.
>> Audiența: Și apoi am crezut că a lucrat, dar apoi l-am căutat în sus.
Și ea a spus că nu e bine.
Dar eu nu sunt sigur de ce.
>> LUCIANO Arango: Da.
>> Audiența: Nu utilizați Citate Magic, pentru că nu e sigur.
>> LUCIANO Arango: OK.
Citate astfel Magic este atunci când introduceți SQL și se adaugă deja oferta pentru tine.
>> Audiența: Se adaugă întotdeauna citate în jurul valorii de orice ai pus inch
>> LUCIANO Arango: Da.
Deci problema cu care este ca -
Voi arunca o privire la -
>> Audiența: Cum se dobândesc instrucțiunea SQL?
Sau cred ca ar putea fi cum ar fi citat selectați.
>> LUCIANO Arango: Da, aveți nevoie de citate bune pentru SQL.
>> Audiența: Nu, dar serverul nu-l pentru tine.
>> LUCIANO Arango: Aceste citate mici chiar aici, aceste citate mici?
>> Audienta: Da.
>> LUCIANO Arango: Da.
Problema este că puteți comentați ultimul -
OK, deci ce pot face eu pot comenta out - așa că haideți să aruncăm o privire la - mă lași
deschide un fișier de editare de text.
Lasă-mă să edita această chiar aici direct.
OK.
Poate voi vedea că în mod clar?
Ce pot face eu pot comenta în ultima.
Acest lucru va comentați ultima.
Și apoi voi pune o aici, pune toate lucrurile rău intenționat aici.
>> Astfel încât utilizatorul este de fapt introducerea, corect?
Utilizatorul nu este introducerea lucrurile, nu?
Aceasta este ceea ce am de gând să intrare ca persoana încercarea de a obține în interiorul.
Am de gând să pună în -
asta e un semn citat.
E doar ondulate din greșeală.
Și apoi ce codul este de gând să facă -
îmi pare rău, am de gând să iau asta.
Ce cod este de gând să faceți este să se va adăuga primul
ghilimele aici.
Și se va adăuga ultima ghilimele, de asemenea.
>> Și este, de asemenea, de gând să adăugați ultima, ultima ghilimele.
Dar eu sunt comentând aceste citat marchează, astfel încât acestea să nu alerga.
Și eu sunt de finisare acest citat marca pe aici.
Ai înțeles?
Te-ai pierdut?
Nu pot comenta ultima cotație marca, și avea grijă de
primul ghilimele.
>> Audiența: Si termina doar primul.
>> LUCIANO Arango: Da.
Și tocmai termina primul.
Da, ai dreptate.
Asta e ceea ce pot face.
Da.
Orice alte intrebari de genul asta?
Asta este o întrebare mare.
Nu, da, poate.
Din fericire, voi va fel de face mai mult sens atunci când studiezi SQL și
lucruri de genul asta.
Dar asigurați-vă că -
păstra aceste instrumente în ceas.
Ne pare rău, aceste instrumente de aici.
Aceste instrumente sunt foarte bune.
Dacă cineva are întrebări, puteți, de asemenea, mi e-mail.
Acest lucru este de e-mail meu normal.
Și acest lucru este de e-mail meu de lucru, care este atunci când lucrez la SEAS.
>> OK, mulțumesc.
Mulțumesc, băieți.
Tu esti bine să plec.
Nu trebuie să stai aici.
Nu bate.
Asta-i ciudat.
OK, mulțumesc, băieți.