>> LUCIANO Arango: OK, folkens.
Mitt navn er Luciano Arango.
Jeg er en sophomore i Adams House.
Og vi kommer til å snakke om websikkerhet aktiv forsvar.
Så jeg jobber for Office of Information Sikkerhet i SEAS.
Og i løpet av sommeren, internert jeg på SeguraTec, som var en informasjon
vaktselskap som tjente for Bank of Columbia.
Det er stort sett der jeg lærte hva jeg har lært så langt.
>> Og så noe av materialet som vi er kommer til å gå over i dag, ikke har vi
egentlig snakket om i klassen.
Men vi vil snart.
Det kommer til å være som SQL, Javascript.
Og vi har egentlig gått over det.
Så jeg kan sortere på flukt gjennom det, og du kan ikke vite noen ting.
Men snart vil du lære det.
Og det vil gi mening.
Også en annen ting -
holde etisk.
Noen av de tingene som du lærer, du kunne bruke i ikke-etiske måter.
>> Hvis det er din, definitivt prøve.
Jeg definitivt motivere dere å prøve dine egne servere, prøve
kommer inni dem.
Se om du kan trenge dem, hvis du kan få inni dem.
Men ikke andres.
Politimenn har egentlig ikke liker vitser og hele, setter vi dette her.
Vi var messing rundt.
De får virkelig sint.
>> Så ta turen over til denne nettsiden.
Jeg har det åpnet rett her.
Dette er en nettside, og det har en haug med eksempler.
Hva som skjer er at det første eksempelet er liksom kommer til å bli mye enklere
enn det siste eksempel i en forstand at det første eksempelet
er helt usikkert.
Og den siste er liksom hva en normal web sikkerhet person ville gjøre.
Men du kan fortsatt slag av komme seg rundt det.
Og vi kommer til å fokusere på ett og to, en og to eksempler.
>> OK.
La oss starte med cross-site scripting.
Javascript kjøres på klientens nettleser.
Det er et programmeringsspråk som du bruker å kjøre på klientens nettleser så
du trenger ikke å oppdatere nettsiden og gå tilbake til serveren.
Du har den i gang.
For eksempel Facebook, har du ikke å laste nettsiden for ny status
oppdateringer for å komme opp.
Det er ved hjelp av Javascript for å generere alle disse tingene.
Så vi kan injisere ondsinnet Java inn i nettsteder.
Og på den måten, når vi sender en link til noen, vi kunne liksom sende den med
noen av koden som vi ønsker.
>> Det er vedvarende og ikke-persistent Java -
vedvarende og ikke-vedvarende cross-site scripting, mener jeg.
Og den forskjell at vedvarende er Javascript som vil være
lagret på nettsiden.
Og ikke-vedvarende vil være Java som faktisk vil bare skje én gang.
Så la oss se på et eksempel virkelig rask.
>> OK.
Så dette nettstedet, enkel, ingenting skjer her.
Og vi kommer til å prøve å sette noen Javascript.
Så måten vi begynner å skrive Java er vi begynne med begynnelsen script.
Og vi lukker den med manuset.
Vi er rett og slett kommer til å sette en melding -
Jeg skal vise deg -
alert.
Alert er en funksjon som Java bruker til å vise noe.
Så la oss prøve det virkelig rask.
Jeg kommer til å gå, våken hallo.
Vel, jeg glemte å sette -
OK.
Så det er enkelt.
>> Vi legger Javascript på en nettside, og det kom opp.
Og det liksom bare skjer på nettsiden vår, ikke sant?
Så det virker som det ikke er et problem, ikke sant?
Jeg mener, hvordan kan du bruke dette skadelig?
Så måten at hackere gjøre dette er veldig enkelt.
De kommer til å ta tak i det.
De kan sende denne linken til deg.
Hvis jeg skal sende denne linken til deg akkurat nå, og du åpner den opp, kommer det til å
si, hallo, å si at min hjemmeside forteller deg god dag.
>> Og så hvis jeg skulle si noe litt smartere, hvis jeg trekke opp en
Javascript-funksjonen jeg kind av allerede skrev -
men hvis du ser på det, vil jeg gå Over det før jeg skrev det.
Så vi kommer til å sette en timeout.
Vi kommer til å vente på et par sekunder.
Faktisk, vi kommer til å vente på, hvis Jeg ikke tar feil, fem sekunder.
Dette går i millisekunder.
Og hva skal vi gjøre da er vi er kommer til å varsle at innlogging
tidsavbrudd for å logge inn igjen
Og vi kommer til å endre plasseringen til et annet sted.
>> Så hvis jeg sender dette nettstedet til noen, de kommer til å være
surfer rundt, rolig.
Ingenting skjer.
Og i fem sekunder, det kommer å si, påloggingen timet ut.
Vennligst logge på igjen
Når de klikker på OK, kommer jeg til å ta dem til en annen nettside.
Antagelig er nettsiden kommer til å være lik den nettsiden som
de var i før.
Og de kommer til å logge sin legitimasjon til hjemmesiden min i stedet for
deres hjemmeside.
>> Og så jeg kan sende folk en e-post med denne linken.
Jeg sier, oh, her er en link.
Dette er en bank, for eksempel.
Jeg sier, her, gå på denne linken.
Og når de sender det, er de kommer til å være surfer rundt.
Jeg kan vente i 15 sekunder, 20 sekunder, og deretter pop som kan logge på igjen
logger på igjen.
Dere kan prøve det med mange flere ting.
Det er komplisert fordi dere har ikke sett Javascript, slik at du kanskje
ikke vet enkelte funksjoner.
Men alt du trenger å gjøre er å starte med manus, ender med manuset.
Og du kan sette noe i midten.
>> Alert er en funksjon, må du vente.
Vindu plassering tar deg til et nytt sted.
Men du kan gjøre så mye mer.
Og så tanken er at vi ta det av.
Hvis jeg går til eksempel to, og jeg satt i denne samme koden, er det
ikke kommer til å fungere.
Så det å skrive alt ut fordi hva denne nettsiden opprinnelig
gjør er hvis jeg legger noe her, det vil skrive den ut her.
Så det er ikke å skrive noe ut.
Dette eksempelet er faktisk sjekker for å se om skriptet er der.
Så ja, gå videre.
Spør meg.
>> PUBLIKUM: Er ikke sende en får eller poste forespørsel?
>> LUCIANO Arango: Yeah. de er sende en GET-forespørsel.
>> PUBLIKUM: Det er?
>> LUCIANO Arango: Yeah.
Også nettlesere bruker POST-forespørsler.
Men jeg prøver å vise få forespørsler slik at vi kan se hva som er
faktisk skjer.
Og så hvis vi ser på denne koden - så er det ikke fungerer lenger.
Og hvis vi tar en titt på denne koden, det kommer til å være i eksempel to.
Hva denne personen gjør, personen ansvarlig for denne nettleseren -
åpne opp, OK -
er å erstatte ordet script.
Dette er PHP, som dere kanskje har sett litt av ennå.
>> Han bare erstatte Ordet script med navn.
Så men hvis jeg går videre og bare sette i -
hvis jeg hente min kode igjen, og jeg kommer å endre det bare en liten bit.
I stedet for manus, kommer jeg til å endre det for script med en kapital R. Og
vi kommer til å se om denne koden fungerer.
Så det ikke skrive det ut, som er et godt tegn.
Og forhåpentligvis i to sekunder, det kommer til å dukke opp.
>> Logg inn ditt timet ut.
OK.
Alt i orden.
Så sjekker for script kanskje ikke nødvendigvis fungere.
Personen -
det kan også sjekke for manus store bokstaver, script små bokstaver, str saken
sammenligne, sørg for at de er de samme.
Men hackeren kan fortsatt gjøre liksom hva vi gjorde i Vigenère da vi flyttet
tilbake et par tegn, bevege seg fremover.
Og det kan finne ut hvordan å sette script tilbake i det så det kan injisere
skriptet.
>> Så hva du ønsker å bruke er htmlspecialchars til
beskytte ditt nettsted.
Og hva dette gjør er det som gjør sikker på at det du legger i -
for eksempel, sitater eller dette større enn eller mindre enn -
er erstattet med noe som ikke vil være -
la meg zoome inn her -
selve tegnet.
Det vil erstatte de spesielle HTML tegn på at vi får se når vi er
snakker om -
oh, dette kommer til å ta meg tilbake til -
disse tegnene rett her.
>> Disse bety at noe kommer.
For HTML, som begynner brakett forteller oss at noe
HTML relatert kommer.
Og vi ønsker å bli kvitt det.
Vi ønsker ikke å sette HTML inn i en website.k Vi ønsker ikke at brukeren skal
stand til å sette noe på deres hjemmeside som kan påvirke deres hjemmeside, som
skript eller HTML eller noe sånt.
Det viktigste er at du rense brukerundersøkelser.
>> Slik at brukerne kan legge inn mange ting.
Han kan legge inn en haug med ting for å prøve å lure nettleseren din til fortsatt
kjører denne skriptkode.
Hva du ønsker å gjøre er å ikke bare se for manus, men se etter alt
som kan være skadelig.
Og htmlspecialchars vil gjøre det for deg, slik at du ikke trenger
å bekymre deg for det.
Men ikke prøv å gjøre selv liksom med din egen kode.
Er alle klare på XSS?
>> OK.
La oss gå til SQL-injeksjon.
Så SQL-injeksjon er trolig den nummer én sårbarhet
i forskjellige nettsteder.
Jeg mener, et godt eksempel -
Jeg ble bare forske lengst for denne tingen.
Og jeg fant denne awesome artikkelen, der Jeg så at Harvard ble brutt,
ble hacket.
Og jeg lurte på, vel, hvordan skulle de gjøre det?
Harvard er den råeste, mest sikre universitetet noensinne.
Høyre?
Vel, å bryte serverne, hackere benyttet en
teknikk som kalles SQL-injeksjon.
>> Så dette skjer på en dag til dag basis.
Folk glemmer å ta hensyn for SQL-injeksjon.
Harvard gjør.
Jeg tror det står her, Princeton, Stanford, Cornell.
Så hvordan skal vi - så hva er dette SQL injeksjon som er å bringe alle disse
folk ned?
OK.
Så SQL er et programmeringsspråk som vi bruker for å få tilgang til databaser.
Hva vi gjør er vi velge -
så hva dette leser akkurat nå er å velge alt fra bordet.
>> SQL, endrer det inn i disse databasene som har tabeller som er full av informasjon.
Så velger du alt fra brukere der navnet er brukernavn.
Høyre?
Enkelt nok.
Ideen om SQL-injeksjon er at vi sette noen ondsinnet kode som ville
lure serveren til å kjøre noe annerledes enn hva det
opprinnelig var i gang.
Så la oss si for brukernavn, vi satt i, eller en lik en.
Så vi satt i, eller en lik en.
Måten det vil lese nå vil være å velge fra brukere, alt fra
brukere - dette er alt -
der navn er brukernavn, men Brukernavnet er eller en lik en.
>> Så navn er ingenting eller en lik en.
1 er lik 1 er alltid sant.
Så dette vil alltid returnere informasjon fra brukerne.
OK.
Vi trenger ikke å ha riktig brukernavn.
Vi kan bare ha noe som vi ønsker, og det vil returnere informasjon
at vi trenger.
La oss se på et annet eksempel.
>> Hvis vi har å velge alt fra brukeren, der navn er DROP TABLE brukere -
så hva tror du dette vil gjøre hvis jeg legger inn brukernavnet
som DROP TABLE brukere?
Alle som har en idé?
Ja.
>> PUBLIKUM: Det kommer til å fortelle det å dumpe alle tabellene.
>> LUCIANO Arango: Det kommer til å fortelle oss å dumpe alt på nettstedet,
alt i databasen.
Og hva folk bruker dette for - så Jeg kommer til å vise dere.
Jeg deaktivert slippe tabellene fordi jeg ikke vil at du
gutta å slippe mine tabeller.
La oss ta en titt på denne.
Så dette bare trekker opp den informasjonen for en bestemt person.
Så hvordan vet vi om dette er påvirket av SQL-injeksjon.
Vi kommer til å sjekke virkelig rask hvis vi kan sette noe -
la meg kopiere denne koden.
Jeg kommer til å gå over det i et sekund.
Jeg kommer til å sette rot og en lik en.
>> Denne retten her, dette prosenttegn 23 -
hva det egentlig er, hvis jeg se her på -
hvordan HTML tar i tall, hvis du ta en titt på når jeg satt i et rom
her - hvis jeg skulle plass noe her, endrer det til en prosent to.
Har dere se dette her når jeg satt i et rom?
Måten det fungerer på er at du bare kan sende ASCII-verdier gjennom HTML.
Så det erstatter, f.eks en plass med prosent 20.
Jeg vet ikke om dere har sett det før.
>> Den erstatter en hashtag med prosent 23.
Vi trenger en hashtag på slutten av eller setningen slik at vi kan fortelle
database for å glemme å kommentere ut denne siste semikolon ved enden.
Vi vil at det skal ikke tenke på det.
Vi vil bare det å kjøre alt at vi har på forhånd og
kommentere det ut.
La oss ta en titt på det.
>> Så hvis jeg skulle sette noe galt - la oss si for eksempel, satte jeg to lik
En, er det ikke gir meg noe.
Da jeg satt i en lik en, og det gjør returnere noe, forteller dette meg at
Dette er sårbart overfor en SQL-injeksjon.
Jeg vet nå at uansett Jeg legger etter dette -
og for eksempel slette tabeller eller noe sånt
vil definitivt fungere.
Jeg vet at det er utsatt for SQL-injeksjon fordi jeg vet at
under panseret, er det å la meg til å gjøre det en lik en ting.
OK?
>> Og hvis vi ser på disse andre, nummer to og nummer tre, er det
kommer til å gjøre litt mer av kontroll under
panseret på hva det er.
Så hvem som helst aktivere dråpe noe ennå, eller prøvd?
Har dere liksom få SQL ennå?
Fordi jeg vet at dere har ikke sett den ennå, så det er litt av
forvirrende for dere.
La oss ta en titt.
Så hva er den måten å hindre SQLi?
OK.
Så dette er veldig viktig fordi du Gutta vil definitivt å hindre
dette i dine nettsteder.
>> Hvis ikke, blir alle dine venner kommer til å gjøre narr av deg når de slippe alt
tabellene.
Så ideen er at du reparere SQL på en bestemt måte, mens du matche
hva brukeren innganger med en bestemt streng.
Så hvordan dette fungerer er at du klar databasen.
Du velger navn, farge og kalorier fra en database som kalles frukt.
Og så hvor kalorier er mindre enn, og vi setter et spørsmålstegn der
sier vi skal innspill noe i et sekund.
>> Og fargen er lik, og vi satt et spørsmåls mark sier vi skal
inngang noe i et sekund, så vel.
OK?
Og da vi utføre det, sette i 150 og rød.
Og dette vil du kontrollere sikker på at disse to -
denne matrisen vil kontrollere at disse to er et helt tall, og
at dette er en streng.
Så vi går, og vi hente alle, satte vi den i rødt.
Det betyr at vi henter alle.
Det betyr at vi faktisk kjøre SQL uttalelse og sette den tilbake i rødt.
Her gjør vi det samme, men vi gjøre det samme for gult.
Og vi hente alt.
>> Og på denne måten, hindrer vi at brukeren fra å være i stand til innspill noe
det er ikke hva vi har angitt, en streng eller et helt tall, f.eks.
Jeg snakket tidligere om å stole på andre.
Når dere starter prosjektet ditt, er du mest definitivt kommer til å bruke
bootstrap eller noe lignende.
Har dere noen gang brukt Wordpress?
Sannsynligvis dere har brukt Wordpress mest sannsynlig.
Så problemet med å bruke andres ting -
Jeg skal bare Google virkelig rask Wordpress sårbarhet.
>> Hvis jeg trekker dette opp akkurat nå -
Jeg bokstavelig talt gjorde en to andre Google.
Vi kan se at Wordpress -
dette er datert som i september '12.
26 er oppdatert.
Standardkonfigurasjonen av Wordpress før 3.6 er ikke til hinder disse
visse opplasting, noe som kan gjøre det enklere for
cross-site scripting-angrep.
Så en rask historie, når vi arbeider med - så jeg var i sommer, jobber en
internship.
Og vi jobbet med liksom som en stor kredittkortselskapet.
>> Og de er avhengige av noe som kalles -
Jeg vet ikke om dere noen gang spilt med et produkt som heter Joomla.
Joomla er et produkt som brukes til å kontroll - liksom lik
Wordpress, som brukes til å bygge nettsteder.
Så de hadde deres hjemmeside jobber med Joomla.
Dette er faktisk et kredittkort selskapet i Colombia.
Jeg skal ta deg med til deres nettside virkelig rask.
>> Så brukte de Joomla.
Og de hadde ikke oppdatert Joomla til det nyeste tilskuddet.
Og så når vi tok en titt på koden sin, kunne vi faktisk
gå inn koden sin og stjele alle kredittkortinformasjon som de hadde,
alle kredittkortnumre, navnene, adressene.
Og dette var bare -
og deres kode var helt greit.
De hadde stor kode.
Det var all sikkerhet.
De sjekket alle databasene.
De sørget for cross-site scripting var fint.
>> Men de brukte noe som ikke var oppdatert, det var ikke sikker.
Og slik som førte dem til - så dere er definitivt kommer til å bruke andre
folks kode, andres rammer å bygge opp ditt nettsted.
Pass på at de er sikre fordi noen ganger er det ikke, den som
gjør en feil.
Men noen andre gjør en feil, og så du faller ned på grunn av det.
>> Passord og PII.
Så passord.
OK.
La oss ta en titt på passord virkelig rask.
OK.
Vennligst fortell meg at alle bruker sikker -
Jeg håper alle her bruker sikre passord.
Jeg bare la det inn som en forutsetning.
Så dere er definitivt kommer til å lagre passord for nettsteder.
Du kommer til å gjøre noe sånt en innlogging eller noe sånt.
Det viktigste er å ikke oppbevare passord i klartekst.
Dette er ekstremt viktig.
Du ønsker ikke å lagre et passord i klartekst.
>> Og du definitivt ikke egentlig ønsker å lagre den i en enveis hash.
Så hva en enveis hash er at når du generere et ord, når du setter dette
ord i en hash-funksjon, vil det generere tilbake noen form for kryptisk
melding eller kryptisk sett med nøkler.
Jeg skal vise deg et eksempel.
Jeg kommer til hasj de ord password1.
Så MD5-hash kommer til å returnere meg en slags rare informasjon.
>> Problemet er at folk der ute som liker å gå inn i nettsteder har
allerede funnet ut liksom av alle MD5 hashes.
Det de gjorde er de satte seg på sin datamaskiner, og de utydeliggjorte hvert
eneste mulige ord ut der til de fikk liksom hva dette er.
Hvis jeg skulle se dette opp -
Jeg bare tok dette hash.
Hvis jeg får denne hash fra -
hvis jeg går inn i en nettside, og jeg synes denne hash fordi jeg får til
databaser, og jeg ser det opp, noen allerede funnet det ut for meg.
>> Yeah.
Så folk satte seg ned, og uansett md5 hash som du putter i, de kommer til å
tilbake til deg noe som er et ord.
Hvis jeg hasj et annet ord, som -
Jeg vet ikke -
trees2.
Jeg ønsker ikke å være skuffet av mine Google-søk.
Det er det, trees2.
Så en rekke nettsteder fortsatt bruke md5 hash.
De sier, oh, det er sikkert.
Vi er ikke lagring i klartekst.
Vi har denne md5 hash.
Og alt jeg har å gjøre er bare Google nummeret.
>> Jeg trenger ikke engang å beregne meg selv.
Jeg kan bare Google det, og noen allerede gjorde det for meg.
Her er en haug av dem.
Her er en haug med passord.
Så definitivt ikke bruker MD5-hash, fordi alt du trenger å
gjøre er å google det.
Så hva vil du bruke i stedet?
OK.
Noe som kalles salting.
Så hva salting er -
husker dere gjør når vi var snakker om tilfeldige -
Jeg er ikke sikker på hva PSett det var -
ble det PSett der eller fire?
>> Vi snakket om å finne nålen i høystakken.
Og i PSett, det sa at du kunne faktisk finne ut hva tilfeldig
genererer fordi noen allerede kjørte tilfeldige en million ganger og bare
liksom dannet hva de genererer.
Hva du ønsker å gjøre er satt i en inngang.
Så det er hva salting slags er.
De har allerede funnet ut hva salting kommer tilbake etter hvert arbeid.
>> Så hva salting gjør er du putter i et salt.
Du setter inn et bestemt ord.
Og det vil hash at ord avhengig på hva du putter i her.
Så hvis jeg hash passord man med dette setning, det kommer til hasj
annerledes hvis jeg hash password1 med et annet punkt.
Det liksom gir den et sted til starte for hashing å begynne.
Så det er mye vanskeligere å beregne, men du kan likevel beregne det, spesielt
hvis du bruker en dårlig salt.
>> Folk har allerede også funnet ut vanlige salter og funnet ut
hva det er.
Tilfeldige salter er mye bedre, men den beste måten er å bruke
noe som heter krypten.
Og hva krypten lar deg do - slik at disse funksjonene
allerede bygget for deg.
Mange glemmer det, eller de glemmer å bruke det.
Men hvis jeg ser opp krypten PHP, krypten allerede returnerer en hash strengen for meg.
Og det faktisk salter den mange ganger og hashes det mange ganger.
>> Så vi trenger ikke å gjøre dette.
Så alt du trenger å gjøre er send det inn i krypten.
Og det vil skape en stor hash uten at du trenger å bekymre deg for salt
eller noe.
Fordi hvis du skulle salt det, må du å huske hva salt du brukte
fordi hvis ikke, kan du ikke få passord tilbake uten
salt som du brukte.
OK.
>> Og også personlig identifiserende informasjon.
Så personnummer, kredittkort - det er ganske åpenbart.
Men noen ganger folk glemmer hvordan det verkene er, hvor mye informasjon trenger du
faktisk trenger å finne noen en person?
Noen gjorde en studie om dette en vei tilbake.
Og det var som, hvis du har et fullt navn, kan du ikke finne
noen som enkelt.
Men hva hvis du har et fullt navn og deres fødselsdato?
Er det nok til å identifisere noen spesielt?
>> Hva hvis du har deres navn og gateadressen som de bor på?
Er det nok å finne noen?
Og det er når de stiller spørsmål, hva er personlig identifiserbar informasjon, og
hva skal du bry deg om ikke gi bort?
Hvis du gir fra deg personlig identifiserbar informasjon som noen gir deg,
du potensielt kan få stevnet.
Og vi definitivt ikke ønsker det.
>> Så når du setter ditt nettsted ut, og du har en veldig kul
design, forhåpentligvis du har gjort en kjempeflott endelige prosjektet.
Noen får lyst til å lagt det ut.
Du ønsker å være sikker på at uansett hva du tar fra brukeren, hvis det er
personlig identifiserbar informasjon, du ønsker å sørge for at du blir virkelig
forsiktig med det.
>> Shell injeksjon.
OK.
Shell-injeksjon kan inntrengeren til få tilgang til din faktiske kommandolinje
på serveren din.
Og så er han i stand til å kjøre kode at du ikke kan kontrollere.
La oss ta et eksempel på dette vakker streng her.
Hvis vi går inn på nettsiden igjen, jeg kommer til å gå inn kode injeksjon.
Så hva dette betyr er -
det er også det vi var se på før.
Vi lar brukeren sette i uansett han ønsker, og det vil skrive ut
hva du vil.
>> Så jeg kommer til å sette en samtale.
Hva dette er -
det vil begynne ved å lenke sammen.
Så det vil la meg kjøre uansett kommandoen personens løping
før og min kommando.
Og jeg kjører en systemkommando.
Og disse siste strengene er - husk hva jeg snakket med dere om,
mens du har å kode den i en URL-metoden.
Hvis jeg kjører dette nå -
Jeg skal vise deg over her -
vil du se at jeg endte opp med å kjøre en kommando.
>> Dette er faktisk selve serveren at nettstedet mitt kjører på.
Så vi ikke ønsker det, fordi jeg kan kjøre -
denne serveren er ikke min.
Så jeg ønsker ikke å rote opp sin søster, Marcus server.
Men du kan kjøre flere kommandoer som er farlig.
Og potensielt, kan du slette filer, fjerne kataloger.
Jeg kan fjerne en bestemt katalog hvis Jeg ville, men jeg ønsker ikke
å gjøre det til Marcus.
Han er en fin fyr.
Han lot meg låne hans server.
Så jeg kommer til å la ham off på god en.
>> Så det vi ikke ønsker å bruke - vi gjør ikke ønsker å bruke eval eller system.
Eval eller system tillater oss å gjøre disse systemkall.
Eval midler evaluere.
System betyr hva jeg løp.
Det drives noe i systemet.
Men vi kan forby disse tingene i PHP, slik at vi ikke bruker dem.
Og filopplasting.
Jeg hadde tenkt til å gjøre en kjempe ting med filopplasting.
Men som jeg fortalte dere, min fil opplasting ting ikke fungerer.
Hvis jeg skulle laste opp en fil akkurat nå -
hvis jeg skulle laste opp en fil, og det er et bilde -
du har en opplasting ting det er et bilde.
Det er fint.
Ingenting skjer.
>> Men hvis du har en opplasting fil, for eksempel, og brukeren faktisk opplastninger
en PHP-fil eller en exe fil eller noe sånn, så du kan potensielt
har et problem.
Dette var i arbeid før.
Dessverre for meg, det er ikke fungerer lenger.
Hvis jeg for eksempel laste opp denne filen, er jeg ikke får tillatelse til å laste opp
filen på grunn av serveren ikke å være mine.
Så fyren er virkelig smart.
>> Så vi ikke vil -
Jeg kommer til å vise dere -
OK, dette er noen virkelig kule verktøy.
Så disse -
gå inn - hvis dere har Firefox - forhåpentligvis du gjør.
Det er to add-ons som kalles SQL Injiser Me and Cross-Site Script Me.
De åpner opp så lite side stripene på sidene.
Og hvis jeg skulle gå til CS60 for eksempel -
så hva den gjør er det ser ut for alle skjemaene som -
forhåpentligvis, jeg vil ikke få i trøbbel for dette.
>> Men OK.
Her er pin-systemet.
Så når jeg begynner å lete etter hull i systemet, er det første jeg gjør
åpne opp denne vakre lille Verktøyet på siden.
Og jeg kommer til å teste skjemaer med auto-angrep.
Og så hva dette betyr er det vil sakte åpne opp en haug med nettlesere.
Her er en haug med nettlesere.
Og det prøver hver enkelt kombinasjon av cross-site scripting
at det muligens er, hvis du ser på siden.
>> Og det vil gi meg et resultat liksom hva svaret er.
Alle passere.
Selvsagt de alle passerer.
Jeg mener, de er virkelig smart folk der oppe.
Men hvis jeg skulle kjøre -
Jeg har hatt ganger før når jeg kjører dette på studentenes endelige prosjekter.
Jeg rett og slett kjøre SQL Sprøyt meg med alle forskjellige angrep.
Og det prøver å SQL injisere denne pinnen server.
Så hvis vi bla nedover, for eksempel, sier det -
dette er bra hvis den returnerer.
>> Så det testet noen visse verdier.
Og serveren returnerte kode som var negativ.
Fjern midlertidig.
Dette er bra.
Den forsøkte alle disse testene.
Så du kan bare kjøre -
Jeg skulle ønske jeg kunne finne en nettside real rask som ville la meg -
kanskje CS50 butikken.
>> Wow, dette kommer til å ta altfor lang.
Jeg skal la den første testen ikke ferdig riktig.
Så det har klaget.
Så disse er tre ting.
Disse verktøyene er gratis.
Du kan laste dem ned og kjøre dem på nettstedet ditt, og det vil fortelle deg om
du har cross-site scripting, hvis du har SQL, hvis du har
noe lignende.
Jeg er liksom rote opp.
>> Hva er viktig -
OK, så aldri stole på brukeren.
Uansett hva de bruker innganger til deg, gjør sikker på at du rense den, du rense den,
du se etter de riktige tingene, at det er å gi deg det du
vil at han skal gi deg.
Alltid være oppdatert på hva som rammer at du faktisk bruker.
Hvis du bruker noe sånt som bootstrap -
Jeg vet at dere kommer til å bruke bootstrap fordi han kommer til å gå
løpet av dette snart i klassen -
og Wordpress eller noe sånt, normalt dette kunne bli hacket.
>> Og da har du ikke engang vet.
Du bare kjører ditt nettsted.
Og det er helt sikkert.
Og du går ned.
Så jeg fisker veldig tidlig.
Men jeg ønsker å takke Pentest Labs.
Jeg skal vise dere noe kalt Pentest Labs.
Hvis dere er virkelig interessert i hva sikkerhet egentlig er, er det en
nettside som heter Pentest Labs hvis dere går til det akkurat nå.
Oh, vel, det er ikke det.
Jeg kommer bare til å kjøre det som dette.
Google forteller meg svaret.
>> OK.
Og det lærer bruker du - så det sier, lære web penetrasjon
teste den rette måten.
Den lærer deg -
forhåpentligvis, du er en etisk person.
Men det lærer deg hvordan du kan se på hvordan du kan få inne nettsteder.
Og hvis du lære hvordan du kan få inne nettsteder, kan du lære hvordan du
beskytte deg fra å få inne nettsteder.
La meg zoome inn fordi kanskje dere ikke ser på denne retten.
>> Fra SQL-injeksjon til Shell, så liksom hvordan jeg kan få fra SQL
injeksjon til Shell.
Og du laste ned denne virtuelle maskinen.
Og den virtuelle maskinen allerede kommer med nettsiden som du er
kommer til å prøve den på.
Du laster ned denne PDF.
Og det vil vise deg linje for linje hva du trenger å gjøre, hva du sjekke.
Dette er hva en angriper faktisk gjør for å få inne en nettside.
>> Og noen av disse tingene er komplisert.
Jeg skulle ønske jeg kunne gå over mer ting med dere.
Men jeg er redd for at dere har egentlig ikke -
dette er hva jeg gikk over med dere, web tester
for penetrasjonstesting.
Vet egentlig ikke vet hva SQL er og hva -
Carl Jacksons seminar er awesome også.
Dere vet ikke liksom av hva dette er.
Men hvis du går til dette nettstedet, og du laste ned disse tutorials og disse
PDF-filer, kan du ta en titt på liksom hva området sikkerhet virkelig
i penetrasjonstesting, se hvordan du kan få inne nettsteder og beskytte
selv fra det.
>> Så hvis jeg gjør en super rask oversikt, det vil bli forebygge cross-site scripting.
Du ønsker å bruke htmlspecialchars hver gang brukeren innganger noe.
Hindre SQL-injeksjon.
Hvis du gjør det, er du allerede bedre enn Harvard var
når de fikk brutt.
Og sørg for at passordene dine er ikke i klartekst.
Pass på at du ikke bare én måte hash dem, men at du bruker krypten, PHP
funksjon som jeg viste dere.
På den måten, bør du være god.
>> Også, hvis vennene dine la deg, løpe SQL Sprøyt meg på sine nettsider.
Kjør cross-site scripting på sine nettsider.
Og du vil se mye av disse nettstedene har massevis av sårbarheter.
Det er utrolig hvor mye folk glemmer å rense sine databaser eller å gjøre
sikker på hva personens innrykker er ikke skriptkode.
OK.
Jeg slags endte veldig tidlig.
Men hvis noen har noen spørsmål om noe, kan du skyte meg et spørsmål.
Yeah.
Gå, gå.
>> PUBLIKUM: Jeg vil bare spørre, kan du forklare hvordan filen
laste opp nøyaktig verk.
>> LUCIANO Arango: Yeah.
Så la meg vise deg filen laste opp virkelig rask.
Så filopplasting -
problemet vidd filopplasting akkurat nå er at -
Jeg kommer til å åpne kode så dere se koden bak kulissene.
Og det er å laste opp.
Her er en kode for filopplasteren.
>> Vi prøver å gå inn i dette katalog over her.
Og vi prøver å, når vi innspill fil, isset fil - så når det er en
fil i FILES, det bildet, da vi prøver å flytte den her.
Vi hente filen over her.
Metoden er POST, type, bilde, fil.
Og vi sender denne filen.
Og så når vi får det, så når fil har et bilde, prøver vi å sende den
til denne katalogen.
>> Problemet er at nettsiden er ikke la meg gå til denne katalogen,
fordi det vil ikke ha meg til å gå tilbake.
Det vil ikke ha meg til å gå -
Jeg må gå - så her er opplasting.
Her er bildene.
Jeg må gå hele veien tilbake til begynner og sette den inn der og da
gå og sette det inn i katalogen.
Så hvis jeg kjører et terminalvindu, og jeg ønsket å flytte en fil -
[Uhørbart]
kan se det.
Hvis jeg ønsket å flytte en fil, har jeg å sette filnavnet og deretter
fullstendige banen jeg vil sende den til.
>> Og så serveren er ikke la meg gå tilbake.
Og så det er ikke slik at meg med å få til denne filen.
Men normalt -
så det er en kode for å laste opp en fil.
Så normalt hva som vil skje er at person er ikke sjekker om filen min
slutter med. jpeg, så jeg ønsker å sjekke.
La meg åpne et eksempel for virkelig rask.
>> OK.
Denne personen rett -
så eksempel to er å sjekke hvis preg_match -
her er det over her -
å sørge for at slutter med PHP, som er bra.
Dette er bra.
Men det er en virkelig stor Problemet med dette.
Dette er bra.
Men hvis jeg skulle sette en fil som heter myfavoritepicture.php.jpeg, jeg kunne
fortsatt potensielt bli kvitt den jpeg og kjøre it.k At PHP er farlig.
Du ønsker ikke at personen skal kunne å kjøre kode på din nettside.
>> Men så. Jpeg lar det passere.
Ideen er hva du virkelig ønsker å gjøre ikke ta filer, A. Men, OK, hva
du virkelig ønsker å gjøre er å sørge for at du leser over hele verden.
Og det er ingenting. Php i det.
Det er ingen. Php i hele filnavnet.
>> PUBLIKUM: Men du kunne satt. jpeg på slutten.
Serverne fortsatt kjøre koden.
>> LUCIANO Arango: Nei, det vil det ikke kjøre i begynnelsen.
Du må gå tilbake og prøve for å se om du kan -
>> PUBLIKUM: Så vi må -
OK, bare et annet sett som innebærer -
>> LUCIANO Arango: Yeah.
>> PUBLIKUM: OK.
>> LUCIANO Arango: Yeah.
OK.
Eventuelle andre spørsmål?
OK.
Jeg kommer til å forlate dette opp og sortere av prøver for å se om dere kan -
de andre er litt mer kompliserte, fordi de krever mye
mer kunnskap om SQL enn bare begynner kunnskaper om web SQL er og
hva Javascript er.
Men jeg kommer til å prøve å holde dette opp, og forhåpentligvis dere vil lære
om dette og prøve å ta en titt på hva du kan gjøre og hvor mange eksempler
du kan komme gjennom.
>> Noen som har noen andre spørsmål om det?
Gå fremover.
Ja, skyt, skyt.
Ja, fortsett.
Gå fremover.
>> PUBLIKUM: OK.
Så jeg hørte om hvordan magi Quotes er ikke sikre nok.
>> LUCIANO Arango: Hva -
Magiske Quotes?
>> PUBLIKUM: Yeah.
Så det legger - så når du innspill noe, legger det alltid sitater.
>> LUCIANO Arango: Yeah.
Yeah.
OK.
>> PUBLIKUM: Og da jeg selv som fungerte, men da jeg søkte det opp.
Og det sa det er ikke bra.
Men jeg er ikke sikker på hvorfor.
>> LUCIANO Arango: Yeah.
>> PUBLIKUM: Ikke bruk Magiske Quotes, fordi det er ikke sikkert.
>> LUCIANO Arango: OK.
Så Magiske Quotes er når du setter SQL og det legger allerede sitatet for deg.
>> PUBLIKUM: Det legger alltid sitater rundt hva du putter i.
>> LUCIANO Arango: Yeah.
Så problemet med det er at -
Jeg skal ta en titt på -
>> PUBLIKUM: Hvordan det erverve SQL-setningen?
Eller jeg antar det kan være like tilbud velge.
>> LUCIANO Arango: Ja, trenger du gode sitater for SQL.
>> PUBLIKUM: Nei, men serveren gjør det for deg.
>> LUCIANO Arango: Disse små sitater akkurat her, disse små sitater?
>> PUBLIKUM: Yeah.
>> LUCIANO Arango: Yeah.
Problemet er at du kan kommentere ut den siste -
OK, så hva jeg kan gjøre er at jeg kan kommentere ut - så la oss ta en titt på - la meg
åpne en tekstredigering fil.
La meg bare redigere dette akkurat her direkte.
OK.
Kan dere se at klart?
Det jeg kan gjøre er at jeg kan kommentere ut den siste.
Dette vil kommentere ut den siste.
Og så vil jeg sette en her, legger all ondsinnet ting her.
>> Slik at brukeren er faktisk innrykker, ikke sant?
Brukeren er ikke å legge inn de tingene, ikke sant?
Dette er hva jeg kommer til innspill som personen prøver å komme inn.
Jeg kommer til å sette i -
det er ett anførselstegn.
Det er bare snirklete ved en feiltakelse.
Og så hva koden er tenkt å gjøre -
sorry, jeg kommer til å ta ut dette.
Hva koden skal gjøre er det kommer til å legge den første
anførselstegn her.
Og det kommer til å legge den siste anførselstegn også.
>> Og det er også tenkt å legge den siste, siste anførselstegn.
Men jeg kommenterer disse sitat markerer seg, slik at de ikke kjøres.
Og jeg etterbehandling dette sitatet markere over her.
Forstår du?
Er du mistet?
Jeg kan kommentere den siste sitatet mark, og ta vare på den
første anførselstegn.
>> PUBLIKUM: Og akkurat ferdig den første.
>> LUCIANO Arango: Yeah.
Og nettopp ferdig med den første.
Ja, det er riktig.
Det er hva jeg kan gjøre.
Yeah.
Eventuelle andre spørsmål som det?
Det er et stort spørsmål.
Nei, ja, kanskje.
Forhåpentligvis vil dere liksom gjøre mer fornuftig når du studerer SQL og
ting som det.
Men sørg for at du -
holde disse verktøyene i ur.
Beklager, disse verktøyene enn her.
Disse verktøyene er stor.
Hvis noen har noen spørsmål, du kan også sende meg.
Dette er min vanlige e-post.
Og dette er mitt arbeid e-post, som er når jeg jobber på SEAS.
>> OK, takk.
Takk, gutter.
Du er flink til å gå.
Du trenger ikke å bo her.
Ikke klapp.
Det er rart.
OK, takk, folkens.