>> LUCIANO ARANGO: OK, gutter.
Mit navn er Luciano Arango.
Jeg er en sophomore i Adams House.
Og vi kommer til at tale om web sikkerhed aktivt forsvar.
Så jeg arbejder for Office of Information Sikkerhed i SEAS.
Og i løbet af sommeren, jeg interneret på SeguraTec, som var en information
vagtselskab, der tjente for Bank of Columbia.
Det er for det meste hvor jeg lærte hvad jeg har lært indtil nu.
>> Og så noget af det materiale, som vi kommer til at gå over i dag, har vi ikke
virkelig talt om i klassen.
Men vi vil snart.
Det kommer til at være som SQL, JavaScript.
Og vi har ikke rigtig gået over det.
Så kan sortere Jeg søgning igennem det, og du måske ikke kender nogle ting.
Men snart vil du lære det.
Og det hele vil give mening.
Også en anden ting -
forblive etiske.
Nogle af de ting, du lærer, kan du kunne bruge i ikke-etiske måder.
>> Hvis det er din, helt sikkert prøve.
Jeg absolut motivere jer at prøve dine egne servere, så prøv
går inde i dem.
Se om du kan trænge dem, hvis du kan få inde i dem.
Men ikke nogen andens.
Politiet kan ikke rigtig lide vittigheder og det hele, vi sætter denne her.
Vi var rode rundt.
De får virkelig vred.
>> Så hovedet over til denne hjemmeside.
Jeg har det åbnede lige her.
Dette er en hjemmeside, og det har en masse eksempler.
Hvad sker er, at det første eksempel er slags kommer til at være en hel del lettere
end det sidste eksempel i en vis forstand at det første eksempel
er fuldstændig usikker.
Og den sidste er en slags, hvad en normal web sikkerhed person ville gøre.
Men du kan stadig sortere af få omkring det.
Og vi kommer til at fokusere på en og to eksempler et og to.
>> OK.
Lad os starte med cross-site scripting.
JavaScript køres på kundens browser.
Det er et programmeringssprog, som du bruger til at køre på kundens browser, så
du behøver ikke at opdatere hjemmesiden og gå tilbage til serveren.
Du har det kører.
For eksempel Facebook, behøver du ikke at genindlæse hjemmesiden for nye status
opdateringer til at komme op.
Det er ved hjælp af JavaScript til at generere alle disse ting.
Så vi kan injicere skadelig JavaScript ind i hjemmesider.
Og på den måde, når vi sender et link til nogen, kunne vi slags sende det med
nogle af koden, som vi ønsker.
>> Der er vedholdende og ikke-vedvarende JavaScript -
vedholdende og ikke-vedvarende cross-site scripting, mener jeg.
Og den forskel, at vedvarende er JavaScript, der vil være
gemt på hjemmesiden.
Og ikke-vedvarende vil være JavaScript der vil faktisk bare ske én gang.
Så lad os se på et eksempel virkelig hurtig.
>> OK.
Så denne hjemmeside, enkel, sker der ikke noget her.
Og vi vil forsøge at indsætte nogle JavaScript.
Så den måde, vi begynder at skrive JavaScript er vi starter med begyndelsen script.
Og vi lukker den med script.
Vi er simpelthen kommer til at sætte en besked -
Jeg vil vise dig -
alarm.
Alert er en funktion, JavaScript bruger til at vise noget.
Så lad os prøve det rigtig hurtig.
Jeg har tænkt mig at gå, alarm hej.
Nå, jeg glemte at sætte -
OK.
Så det er simpelt.
>> Vi lægger JavaScript på en hjemmeside, og det kom op.
Og det slags kun sker på vores hjemmeside, right?
Så det ser ud som om det ikke er et problem, right?
Jeg mener, hvordan kunne du bruge dette skadeligt?
Så den måde, at hackere gøre dette er meget simpelt.
De kommer til at få fat i det.
De kan sende dette link til dig.
Hvis jeg sender dette link til dig lige nu, og du åbner det op, går det til
sige, hej, siger, at min hjemmeside fortæller dig hej.
>> Og så hvis jeg skulle sige noget lidt smartere, hvis jeg trækker op en
JavaScript-funktionen Jeg slags af allerede skrev -
men hvis man ser på det, vil jeg gå Over det, før jeg skrev det.
Så vi kommer til at sætte en timeout.
Vi kommer til at vente på et par sekunder.
Faktisk, vi kommer til at vente på, hvis Jeg ikke tager fejl fem sekunder.
Dette går i millisekunder.
Og så hvad vi vil gøre, er at vi er kommer til at advare, at logon
timeout for at logge ind igen
Og vi kommer til at ændre den placering til en anden placering.
>> Så hvis jeg sender dette websted til nogen, de kommer til at være
surfe rundt, rolig.
Der sker ikke noget.
Og fem sekunder, går det at sige, dit login timeout.
Du skal logge ind igen
Når de klikker på OK, vil jeg tage dem til en anden hjemmeside.
Formentlig er hjemmesiden kommer til at svare til det websted,
de var i før.
Og de kommer til at logge deres legitimationsoplysninger til min hjemmeside i stedet for
deres hjemmeside.
>> Og så jeg kan sende folk en e-mail med dette link.
Jeg siger, åh, her er et link.
Dette er en bank, for eksempel.
Jeg siger, her, gå på dette link.
Og når de sender det, de er kommer til at surfe rundt.
Jeg kan vente i 15 sekunder, 20 sekunder og derefter pop, at du logge tilbage i
underskrive igen.
Du fyre kan prøve det med en masse flere ting.
Det er kompliceret, fordi du fyre har ikke set JavaScript, så du kan
ikke kender nogle funktioner.
Men alt hvad du skal gøre er at starte med script, ender med script.
Og du kan sætte noget i midten.
>> Alert er en funktion, vent.
Vindue placering tager dig til en ny placering.
Men du kan gøre så meget mere.
Og så er ideen, at vi tager den fra.
Hvis jeg går til eksempel to, og jeg sat i samme kode, er det
ikke kommer til at fungere.
Så det er at udskrive alt ud, fordi hvad dette website oprindelig
gør, er, hvis jeg sætte noget her, det vil printe det ud lige her.
Så det er ikke udskrives noget ud.
Dette eksempel er faktisk kontrol for at se om script er der.
Så ja, gå videre.
Spørg mig.
>> PUBLIKUM: Er ikke sende a få eller sende anmodning?
>> LUCIANO ARANGO: Ja. de er sende en GET-anmodning.
>> PUBLIKUM: Det er?
>> LUCIANO ARANGO: Ja.
Også browsere bruger post-anmodninger.
Men jeg forsøger at vise får anmodninger så vi kan se, hvad der er
faktisk foregår.
Og så hvis vi ser på denne kode - så det fungerer ikke længere.
Og hvis vi tager et kig på denne kode, det kommer til at være i eksempel to.
Hvad denne person gør, er den person ansvaret for denne browser -
åbne op, OK -
erstatter ordet script.
Det er PHP, som du fyre måske har set en lille smule af endnu.
>> Han er bare at erstatte Ordet script med navn.
Så men hvis jeg går videre og bare sætte i -
hvis jeg fat i min kode igen, og jeg har tænkt mig at ændre det bare en lille smule.
I stedet for script, jeg kommer til at ændre det for script med en kapital R. And
vi kommer til at se, om denne kode virker.
Så det ikke printe det ud, hvilket er et godt tegn.
Og forhåbentlig i to sekunder mere, det kommer til at dukke op.
>> Dit login timeout.
OK.
Det er ok.
Så kontrollerer for script måske ikke nødvendigvis arbejde.
Den person -
det kan også tjekke for script store bogstaver, script små bogstaver, str. sag
sammenligne, sørg for at de er den samme.
Men hackeren kan stadig gøre slags hvad vi gjorde i Vigenere da vi flyttede
tilbage et par karakterer, bevæge sig fremad.
Og det kan finde ud af at sætte script tilbage i der, så det kan injicere
at script.
>> Så hvad du vil bruge er htmlspecialchars til
beskytte dit websted.
Og hvad det betyder er det gør sikker på, at hvad du putter i -
for eksempel, citater eller dette større eller mindre end -
erstattes med noget der vil ikke være -
lad mig zoome ind her -
selve tegnet.
Det vil erstatte de særlige HTML tegn, som vi vil se, når vi er
taler om -
åh, det kommer til at tage mig tilbage til -
disse tegn lige her.
>> Disse betyde, at noget er på vej.
For HTML, der begynder beslag fortæller os, at noget
HTML relaterede kommer.
Og vi ønsker at slippe af med det.
Vi ønsker ikke at sætte HTML ind i en website.k Vi ønsker ikke, at brugeren
stand til at sætte noget i deres hjemmeside der kan påvirke deres hjemmeside, ligesom
script eller HTML eller noget lignende.
Hvad der er vigtigt er, at du rense brugerens input.
>> Så brugerne kan indtaste mange ting.
Han kan indtaste en masse ting at prøve at narre din browser i stadig
kører dette script kode.
Hvad du ønsker at gøre, er ikke bare se for scriptet, men se for alt
der kunne være skadelig.
Og htmlspecialchars vil gøre det for dig, så du ikke behøver
at bekymre sig om det.
Men du skal ikke forsøge at gøre ved dig selv slags med din egen kode.
Er alle klar på XSS?
>> OK.
Lad os gå til SQL-injektion.
Så SQL-injektion er nok den nummer et sårbarhed
i forskellige hjemmesider.
Jeg mener, et godt eksempel -
Jeg var bare forske længst for denne ting.
Og jeg fandt denne awesome artikel, hvor Jeg så, at Harvard er blevet tilsidesat,
blev hacket.
Og jeg tænkte, ja, hvordan ville de gøre det?
Harvard er den mest awesome, mest sikre universitet nogensinde.
Right?
Nå, bryder de servere, hackere brugte en
teknik kaldet SQL-injektion.
>> Så det sker på en dag til dag basis.
Mennesker glemmer at tage hensyn til for SQL-injektion.
Harvard gør.
Jeg tror, ​​det siger her, Princeton, Stanford, Cornell.
Så hvordan gør vi - så hvad er denne SQL injektion, der bringer alle disse
folk ned?
OK.
Så SQL er et programmeringssprog, der vi bruger til at få adgang til databaser.
Hvad vi gør, er at vi vælger -
så hvad det lyder lige nu, er at vælge alt fra tabellen.
>> SQL, det ændrer i disse databaser der har tabeller fuld af oplysninger.
Så vælg alt fra brugere hvor navnet er brugernavnet.
Right?
Simpelt nok.
Ideen med SQL-injektion er, at vi indsætte nogle ondsindet kode, der ville
narre serveren til at køre noget anderledes end hvad det
oprindeligt kørte.
Så lad os sige om brugernavn, vi sætter i eller 1 er lig med 1.
Så vi sætter i eller 1 er lig med 1.
Den måde, det vil læse nu vil være at vælge fra brugerne, alt fra
brugere - dette er alt -
hvor navn er brugernavn, men brugernavn er eller 1 er lig med 1.
>> Så navn er ingenting eller 1 er lig med 1.
1 er lig med 1 er altid sandt.
Så dette vil altid returnere oplysninger fra brugerne.
OK.
Vi behøver ikke at have den rigtige brugernavn.
Vi kan bare have noget, som vi vil, og det vil returnere oplysninger
at vi har brug for.
Lad os se på et andet eksempel.
>> Hvis vi har at vælge alt fra brugeren, hvor navn er DROP TABLE brugere -
så hvad gør du tror, ​​det vil gøre, hvis jeg sætter i brugernavnet
som DROP TABLE brugere?
Nogen der har en idé?
Ja.
>> PUBLIKUM: Det kommer til at fortælle det at dumpe alle tabeller.
>> LUCIANO ARANGO: Det kommer til at fortælle os at dumpe alt på hjemmesiden,
alt i databasen.
Og hvad folk bruger det til - så Jeg har tænkt mig at vise jer.
Jeg deaktiveret droppe tabellerne fordi jeg ikke vil have dig
fyrene at droppe mine tabeller.
Lad os tage et kig på dette.
Så dette blot trækker op oplysninger for en bestemt person.
Så hvordan kan vi vide, om dette er påvirket af SQL-injektion.
Vi kommer til at tjekke hurtig hvis vi kan sætte noget -
lad mig kopiere denne kode.
Jeg har tænkt mig at gå over det i en anden.
Jeg har tænkt mig at sætte rod og 1 er lig med 1.
>> Denne ret her, det procenttegn 23 -
hvad det egentlig er, hvis jeg se lige her på -
den måde, HTML tager i tal, hvis du tage et kig på når jeg sætter i et rum
her - hvis jeg var til rummet noget her, skifter det til en procent 2.
Har du fyre ser dette lige her når jeg sætter i et rum?
Den måde det virker er, at du kun kan sende ASCII værdier gennem HTML.
Så det erstatter, for eksempel, et rum med procent 20.
Jeg ved ikke, hvis du fyre har set det før.
>> Den erstatter et hashtag med procent 23.
Vi har brug for et hashtag i slutningen af ​​eller sætningen, så vi kan fortælle
database til at glemme at udkommentere denne sidste semikolon i slutningen.
Vi ønsker, at det ikke tænke over.
Vi skal bare have det til at køre alt at vi har i forvejen, og
kommentere det ud.
Lad os tage et kig på det.
>> Så hvis jeg skulle sætte noget forkert - lad os sige for eksempel, jeg sætte 2 ligeværdige
1, betyder det ikke give mig noget.
Når jeg sætter i 1 er lig med 1, og det gør returnere noget, det fortæller mig, at
dette er sårbar over for en SQL-injektion.
Jeg ved nu, at uanset hvad Jeg sætter efter dette -
og for eksempel slette tabeller eller sådan noget
vil helt sikkert arbejde.
Jeg ved, det er sårbar over for SQL-injektion fordi jeg ved, at
under hætten, er det at lade mig gøre det 1 er lig med 1 ting.
OK?
>> Og hvis vi ser på disse andre dem, nummer to og nummer tre, er det
kommer til at gøre en lille smule mere kontrollere under
hætte af, hvad det er.
Så enhver mulighed drop noget endnu eller prøvet?
Har du fyre slags få SQL endnu?
Fordi jeg kender jer ikke har set det endnu, så det er lidt
forvirrende for jer.
Lad os tage et kig.
Så hvad er den måde at forhindre SQLI?
OK.
Så det er virkelig vigtigt, fordi du fyre helt sikkert ønsker at undgå
dette i dine hjemmesider.
>> Hvis ikke, er alle dine venner går til gøre det sjovt for dig, når de falder alle
dine tabeller.
Så ideen er, at du reparere SQL på en bestemt måde, mens du matche
hvad brugeren indgange med en bestemt streng.
Så den måde det virker er du forberede databasen.
Du vælger navnet, farven og kalorier fra en database kaldet frugt.
Og så hvor kalorier er mindre end, og vi sætter et spørgsmålstegn der
sige, at vi kommer til at indtaste noget i en anden.
>> Og farve er lig med, og vi stillede et spørgsmål mark siger vi kommer til at
input noget i en anden så godt.
OK?
Og så skal vi udføre det, at sætte i 150 og rød.
Og det vil tjekke for at sikker på, at disse to -
dette array vil kontrollere, at disse to er et helt tal, og
at dette er en streng.
Så går vi, og vi henter alt, vi sætte det i rødt.
Det betyder, at vi henter alle.
Det betyder, at vi faktisk udføre SQL erklæring og sætte det tilbage i rødt.
Her gør vi det samme, men vi gøre det samme for gul.
Og vi hente alle.
>> Og på denne måde forhindrer vi brugeren fra at være i stand til at indtaste noget
det er ikke, hvad vi angivet, en streng eller et helt tal, for eksempel.
Jeg talte tidligere om afhængige af andre.
Når du fyre starter dit projekt, er du absolut vil bruge
bootstrap eller noget lignende.
Har du fyre nogensinde brugt Wordpress?
Sandsynligvis du fyre har brugt Wordpress mest sandsynlige.
Så problemet med at bruge andre folks ting -
Jeg skal bare gå til Google virkelig hurtig Wordpress sårbarhed.
>> Hvis jeg trække dette op lige nu -
Jeg bogstaveligt talt gjorde to sekunders Google.
Vi kan se, at Wordpress -
dette er dateret i september '12.
26 er opdateret.
Standardkonfigurationen for Wordpress før 3.6 ikke forhindrer disse
visse uploads, hvilket kan gøre det lettere for
cross-site scripting angreb.
Så en hurtig historie, når vi arbejdede med - så jeg var i sommer, der arbejder en
praktikken.
Og vi arbejdede med en slags som et stort kreditkortselskab.
>> Og de er afhængige af noget, der hedder -
Jeg ved ikke, hvis du fyre nogensinde har spillet med et produkt kaldet Joomla.
Joomla er et produkt, der anvendes til kontrol - slags ligner
Wordpress, der anvendes til at bygge websites.
Så de havde deres hjemmeside arbejder på Joomla.
Dette er faktisk et kreditkort selskab i Colombia.
Jeg tager dig til deres website hurtigt.
>> Så de brugte Joomla.
Og de havde ikke opdateret Joomla til den nyeste tilføjelse.
Og så når vi var at tage et kig på deres kode, kunne vi faktisk
gå inde i deres kode og stjæle alle de kreditkortoplysninger, at de havde,
alle de numre kreditkort, navne, adresser.
Og det var netop -
og deres kode var helt fint.
De havde stor kode.
Det var alt sikkerhed.
De tjekkede alle databaser.
De sørgede for cross-site scripting var fint.
>> Men de brugte noget, der ikke var opdateret, det var ikke sikker.
Og så førte dem til - så du fyre er helt sikkert vil bruge andre
folks kode, andre folks rammer at opbygge din hjemmeside.
Sørg for, at de er sikker, fordi nogle gange er det ikke dig, den ene, der
laver en fejl.
Men nogen laver en fejl, og så du falder ned på grund af det.
>> Adgangskoder og PII.
Så adgangskoder.
OK.
Lad os tage et kig på passwords virkelig hurtig.
OK.
Fortæl mig, at alle bruger sikker -
Jeg håber alle her bruger sikre passwords.
Jeg er bare at lade det i som en antagelse.
Så du fyre er helt sikkert vil opbevare adgangskoder til dine hjemmesider.
Du kommer til at gøre noget lignende et login eller noget lignende.
Hvad der er vigtigt er at ikke opbevares adgangskoder i almindelig tekst.
Dette er yderst vigtigt.
Du behøver ikke ønsker at gemme en adgangskode som almindelig tekst.
>> Og du absolut ikke virkelig ønsker at gemme det i en ensrettet hash.
Så hvad en envejs hash er, at når du generere et ord, når du lægger denne
ord i en hash-funktion, vil det generere tilbage en slags kryptisk
besked eller kryptiske sæt nøgler.
Jeg vil vise dig et eksempel.
Jeg har tænkt mig at hash de ord password1.
Så MD5 Hash vil vende mig en slags underlige oplysninger.
>> Problemet er, at folk derude der kan lide at gå ind i hjemmesider har
allerede regnet ud, sortere af alle MD5 hashes.
Hvad de gjorde er, at de satte sig på deres computere, og de hashed hver
enkelt mulig ordet derude indtil de fik en slags, hvad det er.
Hvis jeg skulle se dette op -
Jeg bare greb denne hash.
Hvis jeg får denne hash fra -
hvis jeg går ind i en hjemmeside, og jeg finder denne hash, fordi jeg kommer til
databaser og jeg slå det op, nogen allerede regnet det ud for mig.
>> Ja.
Så folk satte sig ned, og hvad md5 hash, du lægger i, er de vil
vende tilbage til dig noget der er et ord.
Hvis jeg hash et andet ord, som -
Jeg ved det ikke -
trees2.
Jeg ønsker ikke at blive skuffet af min Google-søgninger.
Der er det, trees2.
Så en masse hjemmesider stadig bruge md5 hash.
De siger, åh, det er sikkert.
Vi er ikke lagring i almindelig tekst.
Vi har denne md5 hash.
Og alt hvad jeg skal gøre er bare Google nummeret.
>> Jeg behøver ikke engang at beregne selv.
Jeg kan bare google det, og nogen allerede gjorde det for mig.
Her er en flok af dem.
Her er en flok af passwords.
Så absolut ikke bruge md5 hash, fordi alt hvad du skal
gøre, er at Google det.
Så hvad gør du ønsker at bruge i stedet?
OK.
Noget, der hedder saltning.
Så hvad saltning er -
tror du fyre huske, da vi var taler om tilfældige i -
Jeg er ikke sikker på, hvad PSET det var -
blev det PSET der eller fire?
>> Vi talte om at finde nålen i høstakken.
Og i PSET, siges det, at man kunne faktisk regne ud, hvad tilfældig
genererer fordi nogen allerede har løb tilfældige en million gange og kun
slags dannet hvad de genererer.
Hvad du ønsker at gøre, er sat i en indgang.
Så det er, hvad saltning slags er.
De har allerede regnet ud, hvad saltning vender tilbage for hvert arbejde.
>> Så hvad saltning gør, er du sætter en salt.
Du lægger i et bestemt ord.
Og det vil hash ordet afhængigt på hvad du putter i her.
Så hvis jeg Hash Password ét med dette sætning, går det at hash
anderledes, hvis jeg hash password1 med en anden sætning.
Det giver den slags sted at starte for hashing at begynde.
Så det er meget sværere at beregne, men du stadig kan beregne det, især
hvis du bruger en dårlig salt.
>> Folk har allerede også regnet ud fælles salte og regnet ud
hvad det er.
Tilfældige salte er meget bedre, men den bedste måde er at bruge
noget, der hedder krypt.
Og hvad krypt giver dig mulighed for at har - så er disse funktioner
allerede bygget for dig.
Mange mennesker glemmer det, eller de glemmer at bruge den.
Men hvis jeg ser op krypt PHP, crypt allerede returnerer en hash streng for mig.
Og det faktisk salte, det mange gange og hashes det mange gange.
>> Så vi behøver ikke at gøre dette.
Så alt du skal gøre er at sende det i krypten.
Og det vil skabe en stor hash uden du skulle bekymre sig om salt
eller noget.
Fordi hvis du skulle salt det, du har at huske, hvad salt du har brugt
fordi hvis ikke, kan du ikke få din adgangskode tilbage uden
salt, som du brugte.
OK.
>> Og også personlig identificerende information.
Så social sikkerhed, kreditkort - det er temmelig indlysende.
Men nogle gange folk glemmer den måde, det værker er, hvor meget information gør du
faktisk nødt til at finde nogle én person?
Nogen gjorde en undersøgelse om dette en vej tilbage.
Og det var ligesom, hvis du har fulde navn, kan du ikke finde
nogen, der nemt.
Men hvad nu hvis du har et fuldt navn og deres fødselsdato?
Er det nok til at identificere nogen specielt?
>> Hvad hvis du har deres navn og adresse, som de lever på?
Er det nok til at finde nogen?
Og det er, når de sætter spørgsmålstegn ved, hvad der er personlige identificerbare oplysninger, og
hvad skal du bekymre dig om ikke at give væk?
Hvis du giver væk personlig identificerbare oplysninger om, at nogen giver dig,
du potentielt kunne blive sagsøgt.
Og vi absolut ikke ønsker det.
>> Så når du lægger din hjemmeside ud, og du har en virkelig cool
design, forhåbentlig du har lavet en awesome afgangsprojekt.
Enhver du slags ønsker at sætte det derude.
Du ønsker at sikre, at uanset hvad du tager fra brugeren, hvis det er
personlige identificerbare oplysninger, du ønsker at sikre, at du bliver virkelig
forsigtig med det.
>> Shell injektion.
OK.
Shell injektion tillader ubuden gæst til få adgang til din faktiske kommandolinje
i din server.
Og så er han i stand til at køre kode at du ikke kan kontrollere.
Lad os tage et eksempel på dette perlerækken lige her.
Hvis vi går ind på hjemmesiden igen, jeg er gå i kodeindlægning.
Så hvad det gør, er -
det er også, hvad vi var kigge på før.
Vi lader brugeren sætte i uanset han vil, og det vil udskrive
hvad du vil.
>> Så jeg har tænkt mig at sætte et opkald.
Hvad dette gør, er -
vil det begynde ved at sammenkæde.
Så det vil lade mig køre, hvad befale personens kørende
før og min kommando.
Og jeg kører et system kommando.
Og disse sidste strenge er - husk hvad jeg talte til jer om,
mens du er nødt til at indkode det i en URL-metode.
Hvis jeg køre dette nu -
Jeg vil vise dig herovre -
du vil se, at jeg endte op at køre en kommando.
>> Dette er faktisk den egentlige server at min hjemmeside kører på.
Så vi vil ikke have det, fordi jeg kan køre -
denne server er ikke min.
Så jeg ønsker ikke at rod op hans søster, Marcus server.
Men du kan køre flere kommandoer der er farlige.
Og potentielt, kan du slette filer, fjerne mapper.
Jeg kan fjerne en bestemt mappe, hvis Jeg ville, men jeg ønsker ikke
at gøre det til Marcus.
Han er en fin fyr.
Han lod mig låne hans server.
Så jeg har tænkt mig at lade ham off på den gode.
>> Så det, vi ikke ønsker at bruge - det gør vi ikke ønsker at bruge eval eller systemet.
Eval eller system gør det muligt for os at gøre disse systemet opkald.
Eval midler evaluere.
Systemet betyder, hvad jeg løb.
Det køres noget i systemet.
Men vi kan forbyde disse ting i PHP, så vi ikke bruger dem.
Og fil upload.
Jeg skulle til at gøre en awesome ting med fil upload.
Men som jeg sagde til jer, min fil upload ting fungerer ikke.
Hvis jeg skulle uploade en fil lige nu -
hvis jeg skulle uploade en fil, og det er et billede -
du har en upload ting det er et billede.
Det er fint.
Sker der intet.
>> Men hvis du har en upload-fil, for eksempel, og brugeren rent faktisk uploads
en PHP-fil eller en exe-fil eller noget lignende, så kunne du potentielt
har et problem.
Dette arbejdede før.
Desværre for mig, det er ikke fungerer længere.
Hvis jeg for eksempel uploade denne fil, er jeg ikke at få tilladelse til at uploade
filen på grund serveren ikke er mine.
Så fyr er virkelig smart.
>> Så vi ønsker ikke at -
Jeg har tænkt mig at vise jer -
OK, det er nogle virkelig cool værktøjer.
Så disse -
gå ind i - hvis du fyre har Firefox - forhåbentlig du gør.
Der er to tilføjelser kaldet SQL Inject Mig og Cross-Site Script Me.
De åbner op så lidt side bjælker på siderne.
Og hvis jeg skulle gå til CS60 for eksempel -
så hvad det gør, er det ser for alle de formularer, -
forhåbentlig jeg ikke få i problemer for dette.
>> Men OK.
Her er stift system.
Så når jeg begynder at lede efter huller i systemet, den første ting jeg gør, er
åbne op for denne smukke lille værktøj på side.
Og jeg har tænkt mig at teste formularer med auto-angreb.
Og så hvad det gør, er det langsomt åbne op for en flok af browsere.
Her er en flok af browsere.
Og det forsøger hver enkelt kombination af cross-site scripting
at der muligvis vil sige, hvis du ser på siden.
>> Og det vil give mig et resultat slags hvad svaret er.
Alle passere.
Det er klart, at de alle passere.
Jeg mener, de er rigtig smart folk deroppe.
Men hvis jeg skulle køre -
Jeg har haft gange før, når jeg kører denne de studerendes afgangsprojekter.
Jeg blot køre SQL Sprøjt Mig med alle de forskellige angreb.
Og det forsøger at SQL injicere denne pin-server.
Så hvis vi rulle ned, for eksempel, det siger -
dette er godt, hvis det vender tilbage.
>> Så det testede nogle bestemte værdier.
Og serveren returnerede en kode, der var negativ.
Fjern midlertidigt.
Det er godt.
Det forsøger alle disse tests.
Så du kan bare køre -
Jeg ville ønske jeg kunne finde en hjemmeside reel hurtigt, at ville lade mig -
det CS50 butikken måske.
>> Wow, det kommer til at tage alt for lang tid.
Jeg vil lade den første test ikke afslutte højre.
Så det er højlydt.
Så disse tre ting.
Disse værktøjer er gratis.
Du kan downloade dem og køre dem på din hjemmeside, og det vil fortælle dig, hvis
du har cross-site scripting, hvis du har SQL, hvis du har
noget lignende.
Jeg slags rode op.
>> Hvad der er vigtigt -
OK, så aldrig har tillid til brugeren.
Hvad brugeren input til dig, så du sørge for at rense det, du rense det,
du kontrollere, om de rigtige ting, at det er at give dig, hvad du
vil have ham til at give dig.
Altid være opdateret på, hvad rammer at du rent faktisk bruger.
Hvis du bruger noget som bootstrap -
Jeg ved, du fyre vil bruge bootstrap fordi han kommer til at gå
i denne snart i klassen -
og Wordpress eller noget lignende, normalt dette kunne blive hacket.
>> Og så skal du ikke engang kender.
Du er bare at køre din hjemmeside.
Og det er helt sikkert.
Og du går ned.
Så jeg fisker virkelig tidligt.
Men jeg vil gerne takke Pentest Labs.
Jeg har tænkt mig at vise jer noget kaldet Pentest Labs.
Hvis du fyre er virkelig interesseret i hvad sikkerhed egentlig er, der er en
hjemmesiden hedder Pentest Labs hvis du fyre gå til det lige nu.
Åh, ja, det er ikke det.
Jeg bare at køre det på denne måde.
Google fortæller mig svaret.
>> OK.
Og det lærer at bruge dig - så det siger, lære web penetration
teste den rigtige måde.
Den lærer dig -
Forhåbentlig er du en etisk person.
Men det lærer dig, hvordan du kan se på hvordan du kan få indenfor hjemmesider.
Og hvis du lærer, hvordan du kan få inde hjemmesider, kan du lære at
beskytte dig selv fra at få inde hjemmesider.
Lad mig zoome ind, fordi du måske fyre ikke ser på denne ret.
>> Fra SQL-injektion til shell, så slags, hvordan jeg kan få fra SQL
injektion til shell.
Og du henter denne virtuelle maskine.
Og den virtuelle maskine allerede kommer med det websted, du er
kommer til at prøve det på.
Du henter denne PDF.
Og det vil vise dig linje for linje, hvad du nødt til at gøre, hvad du tjekke.
Dette er, hvad en hacker faktisk gør for at komme ind en hjemmeside.
>> Og nogle af disse ting er kompliceret.
Jeg ville ønske, jeg kunne gå over mere ting med jer.
Men jeg bange for, at du fyre har ikke rigtig -
dette er hvad jeg gik over med gutter, web tests
til penetration test.
Må ikke rigtig ved, hvad SQL er og hvad -
Carl Jacksons seminar er awesome samt.
Du fyre kender ikke sortere af hvad det er.
Men hvis du går til denne hjemmeside, og du hente disse tutorials og disse
PDF-filer, kan du tage et kig på slags hvad området sikkerhed virkelig
i penetration test, se hvordan du kan få inde hjemmesider og beskytte
dig selv fra det.
>> Så hvis jeg laver en super hurtigt overblik Det vil være at forhindre cross-site scripting.
Du ønsker at bruge htmlspecialchars hver gang brugeren indgange noget.
Forhindre SQL-injektion.
Hvis du gør det, du allerede bedre stillet end Harvard var
da de blev overtrådt.
Og sørg for dine adgangskoder ikke er i almindelig tekst.
Sørg for at du ikke kun én måde hash dem, men at du bruger krypt, PHP
funktion, som jeg viste jer.
På den måde, skal du være god.
>> Også, hvis dine venner lader dig køre SQL Sprøjt mig på deres hjemmesider.
Kør cross-site scripting på deres hjemmesider.
Og du vil se en masse af disse hjemmesider har et væld af sårbarheder.
Det er utroligt, hvor meget folk glemmer at rense deres databaser eller gøre
sikker på, hvad personens indlæser er ikke script kode.
OK.
Jeg slags endte virkelig tidligt.
Men hvis nogen har spørgsmål om noget, kan du skyde mig et spørgsmål.
Ja.
Go, go.
>> PUBLIKUM: Jeg vil bare spørge, kan du forklare hvordan filen
uploade nøjagtig værker.
>> LUCIANO ARANGO: Ja.
Så lad mig vise dig filen uploade virkelig hurtig.
Så fil upload -
problemet wit fil upload lige nu er, at -
Jeg har tænkt mig at åbne kode, så du fyre se koden bag kulisserne.
Og det er at uploade.
Her er en kode til filoverførsel.
>> Vi forsøger at gå ind i dette bibliotek herovre.
Og vi prøver at, når vi input fil, isset fil - så når der er en
fil i FILES, at billedet, så vi forsøger at flytte det her.
Vi Grib fil herovre.
Metoden er POST, type, billede, fil.
Og vi sender denne fil.
Og så når vi får det, så når filen har et billede, vi forsøger at sende det
til denne mappe.
>> Problemet er, at hjemmesiden ikke er at lade mig gå til denne mappe,
fordi det ikke vil have mig til at gå tilbage.
Det behøver ikke have mig til at gå -
Jeg nødt til at gå - så her er upload.
Her er billeder.
Jeg er nødt til at gå hele vejen tilbage til begynder og sætte det i der og derefter
gå og sætte det ind i mappen.
Så hvis jeg kørte en terminal vindue, og jeg ønskede at flytte en fil -
[Uhørligt]
kan se det.
Hvis jeg ønskede at flytte en fil, jeg har at sætte filnavnet og derefter
fuldstændige sti jeg ønsker at sende det til.
>> Og så serveren er ikke at lade mig gå tilbage.
Og så er det ikke at lade mig komme til denne fil.
Men normalt -
så der er en kode til uploade en fil.
Så normalt hvad der vil ske, er, at person, er ikke at kontrollere, om min fil
slutter med. jpeg, så jeg ønsker at kontrollere.
Lad mig åbne et eksempel for hurtigt.
>> OK.
Denne person ret -
så eksempel to er at kontrollere hvis preg_match -
her er det herovre -
at sørge for, der ender med PHP, hvilket er godt.
Det er godt.
Men der er en rigtig stor Problemet med dette.
Det er godt.
Men hvis jeg skulle sætte en fil kaldet myfavoritepicture.php.jpeg, jeg kunne
stadig potentielt slippe af jpeg og køre it.k at PHP er farligt.
Du ønsker ikke den person at være i stand at køre kode på din hjemmeside.
>> Men da. Jpeg lader det passere.
Ideen er, hvad du virkelig ønsker at gøre ikke tage filer, A., men OK, hvad
du virkelig ønsker at gøre, er at sørge for, at du læser over hele verden.
Og der er intet. PHP i det.
Der er ingen. Php i Hele filnavn.
>> PUBLIKUM: Men du kunne sætte. jpeg på enden.
Serverne stadig køre koden.
>> LUCIANO ARANGO: Nej, det vil ikke køres i begyndelsen.
Du er nødt til at gå tilbage og prøve for at se, hvis du kan -
>> PUBLIKUM: Så vi er nødt til -
OK, bare et andet sæt, der involverer -
>> LUCIANO ARANGO: Ja.
>> PUBLIKUM: OK.
>> LUCIANO ARANGO: Ja.
OK.
Andre spørgsmål?
OK.
Jeg har tænkt mig at forlade dette op og sortere af prøve at se, hvis du fyre kan -
de andre er en lille smule mere kompliceret, fordi de kræver meget
mere viden om SQL end blot begyndende kendskab til web SQL er og
hvad JavaScript er.
Men jeg har tænkt mig at forsøge at holde dette op, og forhåbentlig jer vil lære
om dette og forsøge at tage et kig på hvad du kan gøre, og hvor mange eksempler
du kan komme igennem.
>> Nogen der har nogen anden spørgsmål om det?
Værsgo.
Ja, skyde, skyde.
Ja, gå videre.
Værsgo.
>> PUBLIKUM: OK.
Så jeg hørt om, hvordan Magic Quotes er ikke sikker nok.
>> LUCIANO ARANGO: Hvad -
Magic Quotes?
>> PUBLIKUM: Ja.
Så det tilføjer - så når du indtaster noget, er det altid tilføjer citater.
>> LUCIANO ARANGO: Ja.
Ja.
OK.
>> PUBLIKUM: Og så er jeg selv, der arbejdede, men da jeg søgte det op.
Og det sagde, det er ikke godt.
Men jeg er ikke sikker på, hvorfor.
>> LUCIANO ARANGO: Ja.
>> PUBLIKUM: Brug ikke Magic Citater, fordi det ikke er sikkert.
>> LUCIANO ARANGO: OK.
Så Magic Citater er, når du indsætter SQL og det allerede tilføjer citatet for dig.
>> PUBLIKUM: Det tilføjer altid citater omkring hvad du lægger i.
>> LUCIANO ARANGO: Ja.
Så problemet med det er, at -
Jeg vil tage et kig på -
>> PUBLIKUM: Hvordan erhverver SQL-sætningen?
Eller jeg tror det kunne være ligesom citat vælger.
>> LUCIANO ARANGO: Ja, du har brug for gode citater til SQL.
>> PUBLIKUM: Nej, men serveren gør det for dig.
>> LUCIANO ARANGO: Disse små citater lige her, disse små citater?
>> PUBLIKUM: Ja.
>> LUCIANO ARANGO: Ja.
Problemet er, at du kan udkommentere den sidste -
OK, så hvad jeg kan gøre, er at jeg kan kommentere ud - så lad os tage et kig på - lad mig
åbne en tekstredigering fil.
Lad mig blot redigere denne lige her direkte.
OK.
Kan du fyre se, at klart?
Hvad jeg kan gøre, er at jeg kan kommentere den sidste.
Dette vil udkommentere den sidste.
Og så vil jeg man sætte her, sætte alle ondsindede ting her.
>> Så brugeren er faktisk indtastning, right?
Brugeren er ikke indtastning de ting, right?
Dette er hvad jeg har tænkt mig at input den person, der forsøger at komme ind.
Jeg har tænkt mig at sætte i -
det er en anførselstegn.
Det er bare bølgede ved en fejltagelse.
Og hvad så koden kommer til at gøre -
undskyld, jeg har tænkt mig at tage det ud.
Hvad koden kommer til at gøre, er det kommer til at tilføje den første
anførselstegn her.
Og det kommer til at tilføje den sidste anførselstegn så godt.
>> Og det er også kommer til at tilføje den sidste, sidste anførselstegn.
Men jeg kommentere disse tilbud markerer, så de ikke køre.
Og jeg efterbehandling dette citat markere herovre.
Forstår du?
Er du faret vild?
Jeg kan kommentere det sidste citat mark, og tage sig af
første anførselstegn.
>> PUBLIKUM: Og netop slut den første.
>> LUCIANO ARANGO: Ja.
Og bare afslutte første.
Ja, det er rigtigt.
Det er, hvad jeg kan gøre.
Ja.
Alle andre spørgsmål som det?
Det er et godt spørgsmål.
Nej, ja, måske.
Forhåbentlig vil du fyre slags gøre mere mening, når man studerer SQL og
ting som.
Men sørg for at du -
holde disse værktøjer i vagt.
Desværre, disse værktøjer herovre.
Disse værktøjer er stor.
Hvis nogen har spørgsmål, du kan også maile mig.
Dette er min normale e-mail.
Og det er mit arbejde e-mail, som er, når jeg arbejder på SEAS.
>> OK, tak.
Tak, gutter.
Du er god til at gå.
Du behøver ikke at bo her.
Ikke klapper.
Det er underligt.
OK, tak, gutter.