LUCIANO Arango: OK, guys. My naam is Luciano Arango. Ek is 'n stage in Adams House. En ons gaan om te praat oor Web Security aktiewe verdediging. So ek werk vir die Kantoor van Inligting Sekuriteit in SEAS. En oor die somer, ek geïnterneer by SeguraTec, wat 'n inligting sekuriteitsmaatskappy wat gedien vir die Bank van Columbia. Dit is meestal waar ek geleer wat ek tot dusver geleer het. En so 'n paar van die materiaal wat ons is gaan om te gaan oor vandag, ons het nie regtig gepraat oor in die klas. Maar ons sal binnekort. Dit gaan wees soos SQL, JavaScript. En ons het nie regtig gaan oor dit. So ek kan soort van vlug deur dit, en jy dalk nie weet 'n paar dinge. Maar gou, sal jy dit leer. En dit sal alles sin maak. Ook 'n ander ding - bly etiese. Sommige van die dinge wat jy leer, jy kan gebruik in 'n nie-etiese maniere. As dit is joune, beslis probeer. Ek het beslis motiveer julle jou eie bedieners om te probeer, probeer gaan binne-in hulle. Sien as jy hulle kan deurdring, As jy kan kry in hulle. Maar dit is nie iemand anders is. Polisie het nie regtig wil nie die grappies en die hele, ons sit hierdie hier. Ons was rond. Hulle kry baie kwaad. So kop bo aan hierdie webwerf. Ek het dit oopgemaak hier. Dit is 'n webwerf, en dit het 'n klomp van die voorbeelde. Wat gebeur is dat die eerste voorbeeld is 'n soort van gaan na 'n baie makliker as die laaste voorbeeld in 'n sin dat die eerste voorbeeld is heeltemal onseker. En die laaste een is 'n soort van wat 'n normale web sekuriteit persoon sou doen. Maar jy kan nog steeds soort van kry rondom dit. En ons gaan fokus op een en twee, voorbeelde een en twee. OK. Kom ons begin met kruis-site scripting. Die JavaScript is loop op die kliënt se leser. Dit is 'n programmeertaal wat jy gebruik uit te voer op die leser van die kliënt se so jy hoef nie die webwerf te werk en terug na die bediener gaan. Jy moet dit hardloop. Byvoorbeeld, Facebook, het jy nie die webwerf vir 'n nuwe status op te laai updates te kom. Dit is met behulp van JavaScript te genereer al hierdie dinge. So kan ons spuit kwaadwillige JavaScript in die webtuistes. En op die manier, wanneer ons stuur 'n skakel na iemand, kan ons soort van stuur dit met sommige van die kode wat ons wil hê. Daar is aanhoudende en nie-aanhoudende JavaScript - aanhoudende en nie-aanhoudende kruis-site script, ek bedoel. En die verskil is dat die aanhoudende is JavaScript dit sal wees gestoor word op die webwerf. En nie-aanhoudende sal wees JavaScript wat eintlik net een keer gebeur. So laat ons kyk na 'n voorbeeld ware vinnig. OK. So hierdie webwerf, eenvoudige, niks gebeur hier. En ons gaan om te probeer om voeg 'n paar JavaScript. So het die manier waarop ons begin skryf JavaScript is ons begin met die begin script. En ons het dit sluit met script. Ons is net gaan om 'n boodskap oor te dra - Ek sal jou wys - waarskuwing. Alert is 'n funksie wat JavaScript gebruik om iets te vertoon. So laat ons probeer om dit ware vinnig. Ek gaan om te gaan, wakker hallo. Wel, ek het vergeet om te sit - OK. So dit is eenvoudig. Ons het JavaScript op 'n webwerf, en dit opgekom. En dit soort van gebeur net op ons webwerf, reg? So dit lyk soos dit is nie 'n probleem, reg? Ek bedoel, hoe kan jy hierdie kwaadwillig? So die manier waarop hackers doen dit is regtig eenvoudig. Hulle gaan dit aan te gryp. Hulle kan hierdie skakel aan u stuur. As ek hierdie skakel na julle stuur nou, en jy dit oopmaak, gaan dit sê hallo te sê dat my webwerf is wat jy vertel hallo. En so as ek iets te sê 'n bietjie slimmer, as ek trek 'n JavaScript-funksie wat ek soort van al geskryf - Maar as jy kyk na dit, sal ek gaan Oor dit voordat ek dit geskryf het. So ons gaan 'n timeout te stel. Ons gaan om te wag vir 'n paar sekondes. In werklikheid, ons gaan om te wag vir, indien Ek is nie misgis nie, vyf sekondes. Dit gaan in millisekondes. En dan wat ons gaan doen, is om ons gaan waarsku dat die aanmelding uitgetel terug om aan te meld En ons gaan die plek om te verander na 'n ander plek. So as ek stuur hierdie webwerf aan iemand, hulle gaan wees op om kalm. Niks gebeur. En in vyf sekondes, gaan dit om te sê, jou inskrywing uitgetel. Meld weer in Sodra hulle kliek OK, ek gaan om te neem hulle na 'n ander webwerf. Vermoedelik is die webwerf gaan wees soortgelyk aan die webwerf wat hulle was voor. En hulle gaan om aan te meld hul geloofsbriewe in my webwerf plaas van hul webwerf. En so kan ek mense stuur 'n e-pos met die skakel. Ek sê, o, hier is 'n skakel. Dit is 'n bank, byvoorbeeld. Ek sê, hier, gaan op hierdie skakel. En nadat hulle dit stuur, hulle is gaan word om op. Ek kan nie wag vir 15 sekondes, 20 sekondes, en dan pop die teken asseblief terug in terug teken. Julle kan probeer om dit met 'n baie meer dinge. Dit is ingewikkeld omdat jy ouens nie gesien het nie JavaScript, so jy kan nie weet dat sommige funksies. Maar al wat jy hoef te doen is om te begin met script, eindig met script. En jy kan enigiets sit in die middel. Alert is 'n funksie, wag vir. Venster plek neem jou na 'n nuwe plek. Maar jy kan soveel meer doen. En so het die idee is dat ons dat af. As ek gaan byvoorbeeld twee, en ek sit in dieselfde kode, dit is gaan nie werk nie. So dit is die druk om alles uit, want wat hierdie webwerf oorspronklik doen word as ek iets hier, dit sal druk dit uit hier. So dit is nie die druk iets uit. Hierdie voorbeeld is eintlik te keur om te sien of script is daar. So ja, gaan voort. Vra my. Publiek: Is dit nie die stuur 'n kry of pos versoek? LUCIANO Arango: Ja. hulle stuur 'n get versoek. Publiek: Dit is? LUCIANO Arango: Ja. Ook blaaiers gebruik post versoeke. Maar ek probeer kry versoeke te wys sodat ons kan sien wat eintlik aan die gang. En so, as ons kyk na die kode - so dit is nie werk nie. En as ons 'n blik op die kode, dit gaan wees in byvoorbeeld twee. Wat hierdie persoon doen, moet die persoon in beheer van die leser - oop te maak, OK - is die vervanging van die woord script. Dit is PHP, wat julle mag het 'n bietjie van gesien het nie. Hy is net die vervanging van die woord script met die naam. So egter as ek gaan voort en net sit in - As ek gryp my kode weer, en ek gaan om dit te verander net 'n bietjie. In plaas van die script, ek gaan om te verander dit script met 'n kapitaal R. En ons gaan om te sien of hierdie kode werk. So dit het nie druk dit uit, wat is 'n goeie teken. En hopelik in twee sekondes, dit gaan opduik. Jou inskrywing uitgetel. OK. Dit is alles reg. So kontrole vir script sou nie noodwendig werk nie. Die persoon - dit kan ook gaan vir script hoofletters, script klein, str geval vergelyk, maak seker dat hulle dieselfde. Maar die hacker kan nog steeds soort wat doen ons het in Vigenere toe ons verhuis terug 'n paar karakters, vorentoe beweeg. En dit kan uitvind hoe om script te sit terug in daar sodat dit kan spuit dat script. So, wat jy wil gebruik is htmlspecialchars te Beveilig jou webwerf. En wat dit beteken is dit maak seker dat dit wat jy sit in - byvoorbeeld, kwotasies of hierdie groter as of minder is as - vervang met iets wat sal wees nie - laat my zoom in hier - die werklike ampersand. Dit sal die spesiale HTML vervang karakters wat ons sal sien wanneer ons praat oor - O, dit gaan my terug te neem na - hierdie karakters hier. Hierdie dui dat daar iets kom. Vir HTML, wat begin bracket vertel ons dat daar iets HTML verwante kom. En ons wil om ontslae te raak van daardie. Ons wil nie HTML te sit in 'n website.k Ons wil nie die gebruiker te wees staat is om iets te sit in hul webwerf wat kan hul webwerf raak, soos script of HTML of iets soos dit. Wat belangrik is, is dat jy ontsmet die toevoer van die gebruiker. So kan die gebruikers insette baie dinge. Hy kan insette 'n klomp van die dinge te probeer die leser te mislei nog steeds loop van hierdie script kode. Wat jy wil doen, is nie net kyk vir script, maar kyk vir alles dat kwaadwillige kan wees. En htmlspecialchars sal doen wat vir jou, sodat jy nie het nie te bekommer nie. Maar probeer om nie te doen deur jouself soort met jou eie kode. Is almal duidelik XSS? OK. Kom ons gaan na SQL-inspuiting. So SQL-inspuiting is waarskynlik die nommer een kwesbaarheid in verskillende webtuistes. Ek bedoel, 'n goeie voorbeeld - Ek was net navorsing verste vir hierdie ding. En ek het gevind dat hierdie awesome artikel, waar Ek het gesien dat Harvard is oortree, was gekap. En ek het gewonder, goed, hoe sou hulle dit doen? Harvard is die mees awesome, die meeste verseker universiteit ooit. Reg? Wel, die bedieners te verbreek, die hackers gebruik om 'n tegniek genoem SQL-inspuiting. So dit gebeur op 'n dag-tot-dag basis. Mense vergeet ag te neem vir SQL-inspuiting. Harvard doen. Ek dink dit sê hier, Princeton, Stanford, Cornell. So hoe weet ons - so wat is die SQL inspuiting wat bring al hierdie mense af? OK. So SQL is 'n programmeertaal wat gebruik ons ​​databasisse om toegang te verkry. Wat ons doen is ons kies - So, wat hierdie lees nou is kies alles van die tafel. SQL, verander dit in hierdie databasisse wat tafels vol inligting. So kies alles van gebruikers waar die naam is gebruikersnaam. Reg? Eenvoudig genoeg. Die idee van die SQL-inspuiting is dat ons voeg 'n paar kwaadwillige kode wat sou mislei die bediener in hardloop iets anders as wat dit oorspronklik hardloop. So kom ons sê vir gebruikersnaam, ons sit in of 1 is gelyk aan 1. So het ons in of 1 is gelyk aan 1. Die manier waarop dit sal nou lees, sal kies wees van die gebruikers, alles van gebruikers - dit is alles - waar naam is rekening, maar gebruikersnaam is of 1 is gelyk aan 1. So naam is niks of 1 is gelyk aan 1. 1 is gelyk aan 1 is altyd waar. So dit sal altyd inligting terug van die gebruikers. OK. Ons hoef nie te hê die regte gebruikersnaam. Ons kan net iets wat ons wil hê, en dit sal inligting terug wat ons nodig het. Kom ons kyk na nog 'n voorbeeld. As ons kies om alles van die gebruiker, waar naam is DROP TABLE gebruikers - So, wat dink jy wil doen as ek in die rekening as DROP TABLE gebruikers? Enigiemand het 'n idee? Ja. Publiek: Dit gaan vertel dit al die tafels te stort. LUCIANO Arango: Dit gaan om ons te vertel alles in die webwerf te stort, alles in die databasis. En wat die mense gebruik vir - so Ek gaan om te wys julle. Ek afgeskakel die weglating van die tafels want ek wil nie hê jy ouens my tabelle te verwyder nie. Kom ons neem 'n blik op hierdie. So dit trek eenvoudig die inligting vir 'n sekere persoon. So hoe weet ons as dit geraak word deur SQL-inspuiting. Ons gaan regtig vinnig om te kyk As ons iets kan sit - Laat my hierdie kode. Ek gaan om te gaan oor dit in 'n tweede. Ek gaan om wortel te sit en 1 is gelyk aan 1. Hierdie reg hier, hierdie persent teken 23 - wat dit regtig is, as ek kyk reg hier by - die manier HTML neem in getalle, as jy 'n blik op wanneer ek sit in 'n ruimte hier - as ek na die ruimte om iets Hier is dit verander dit na 'n persent 2. Moenie julle sien dit hier toe ek sit in 'n ruimte? Die manier waarop dit werk, is dat jy kan net stuur ASCII waardes HTML. So dit vervang, byvoorbeeld, 'n ruimte met 20 persent. Ek weet nie of julle het gesien dat voor. Dit vervang 'n hashtag met persent 23. Ons moet 'n hashtag aan die einde van of stelling sodat ons kan vertel van die databasis te vergeet om kommentaar te lewer uit hierdie laaste kommapunt aan die einde. Ons wil dit nie dink nie. Ons wil net dit alles te hardloop dat ons vooraf en kommentaar wat uit. Kom ons neem 'n blik op dit. So as ek iets verkeerd te sit - Kom ons sê byvoorbeeld, ek het 2 gelykes 1, beteken dit nie my niks te gee. Toe ek in 1 is gelyk aan 1, en dit nie terug iets, dit vertel my dat dit is kwesbaar vir 'n SQL-inspuiting. Ek weet nou dat alles wat Ek sit nadat dit - en byvoorbeeld, laat val TABELLE of iets soos dit sal beslis werk. Ek weet dit is kwesbaar vir SQL-inspuiting want ek weet dat onder die enjinkap, is dit te laat my doen die 1 is gelyk aan 1 ding. OK? En as ons kyk na die ander kinders, nommer twee en nommer drie, is dit gaan 'n bietjie meer te doen van kontrole onder die kap van wat dit is. So iemand in staat stel om die daling nog niks of probeer? Het jy ouens soort van kry SQL nog? Want ek weet julle het nie dit gesien het nie, so dit is soort van verwarrend vir julle. Kom ons neem 'n blik. So, wat is die manier waarop SQLI te voorkom? OK. So, dit is werklik belangrik, want jy ouens beslis wil om te verhoed dat dit in jou webtuistes. Indien nie, word al jou vriende gaan maak pret van julle wanneer hulle vervolg alles jou tafels. Dus is die idee is dat jy die SQL herstel in 'n sekere manier, terwyl jy ooreenstem met wat die gebruiker insette met 'n sekere string. So die manier waarop dit werk, is jy voor te berei om die databasis. Jy kies naam, kleur, en kalorieë van 'n databasis met die naam vrugte. En dan waar kalorieë minder as, en ons het 'n vraagteken daar sê ons gaan insette iets in 'n tweede. En kleur gelyk, en ons het 'n vraag merk en gesê ons gaan insette iets in 'n sekonde. OK? En dan het ons dit uit te voer, om in 150 en rooi. En dit sal seker te maak seker te maak dat hierdie twee - hierdie verskeidenheid sal seker maak dat hierdie twee is 'n heelgetal en dat dit 'n string. Dan gaan ons, en ons gaan haal al het ons sit dit in rooi. Dit beteken dat ons gaan haal nie. Dit beteken dat ons eintlik die SQL voer verklaring en sit dit terug in die rooi. Hier het ons dieselfde, maar ons doen dieselfde vir geel. En ons gaan haal nie. En op hierdie manier, ons verhoed dat die gebruiker in staat is om te insette iets dit is nie wat ons verskaf, 'n string of 'n heelgetal is, byvoorbeeld. Ek was in gesprek vroeër oor vertrou op die ander. Wanneer julle begin jou projek, is jy beslis gaan gebruik opstart of iets soortgelyks. Het jy al ooit ouens Wordpress gebruik? Waarskynlik julle ouens gebruik het om Wordpress waarskynlik. So die probleem met die gebruik ander mense se dinge - Ek gaan net na Google ware vinnige Wordpress kwesbaarheid. As ek trek dit op die oomblik - Ek het letterlik het 'n twee tweede Google. Ons kan sien dat Wordpress - hierdie is gedateer as September '12. 26 word opgedateer. Die standaard opset van Wordpress voordat 3.6 nie verhoed dat hierdie sekere oplaai, wat dalk maak dit makliker vir kruis-site scripting aanvalle. So 'n vinnige storie, een keer was ons werk met - so ek was, in die somer, werk 'n internskap. En ons werk met soort soos 'n groot kredietkaart maatskappy. En hulle staatmaak op iets genoem - Ek weet nie of julle al ooit gespeel met 'n produk, genaamd Joomla. Joomla is 'n produk wat gebruik word om te beheer - soort van soortgelyk aan Wordpress, gebruik word om webtuistes te bou. So het hulle hul webwerf werk op Joomla. Dit is eintlik 'n kredietkaart maatskappy in Colombia. Ek sal jou neem na hul webwerf ware vinnig. So het hulle gebruik Joomla. En hulle nie opgedateer het Joomla tot die nuutste toevoeging. En so toe ons neem 'n blik op hulle kode, ons was in staat om werklik gaan binne hulle kode en steel al die kredietkaart inligting wat hulle gehad het, al die kredietkaart nommers, die name, adresse. En dit was net - en hulle kode is heeltemal fyn. Hulle het 'n groot-kode. Dit was al sekuriteit. Hulle nagegaan al die databasisse. Hulle het seker gemaak dat cross-site script was fine. Maar hulle gebruik iets wat nie opgedateer, dit was nie veilig is. En sodat hulle gelei het na - sodat jy ouens gaan beslis ander te gebruik mense se kode, ander mense se raamwerke op te bou om jou webwerf. Maak seker dat hulle veilig omdat soms is dit nie jy nie, die een wat 'n fout maak. Maar iemand anders 'n fout maak, en dan moet jy val as gevolg van daardie. Wagwoorde en PII. So wagwoorde. OK. Kom ons neem 'n blik op wagwoorde ware vinnig. OK. Asseblief vir my sê dat almal gebruik veilige - Ek hoop almal hier gebruik veilige wagwoorde. Ek is net te laat dat in as 'n aanname. So julle ouens gaan beslis te stoor wagwoorde vir jou webtuistes. Jy gaan iets soos te maak 'n aanteken of iets soos dit. Wat belangrik is, is om nie te stoor wagwoorde in plain text. Dit is uiters belangrik. Jy wil nie op te slaan 'n wagwoord in gewone teks. En jy beslis wil regtig nie dit in 'n een manier hash te stoor. So, wat 'n een manier hash is dat wanneer jy genereer 'n woord, wanneer jy hierdie woord in 'n hash funksie, sal dit genereer terug 'n soort van kriptiese boodskap of kriptiese stel sleutels. Ek sal jou 'n voorbeeld wys. Ek gaan hulle woord password1 om hash. So md5 Hash gaan my om terug te keer 'n soort van vreemde inligting. Die probleem is dat mense daar buite wat daarvan hou om te gaan in webtuistes het reeds uitgepluis soort van al die MD5 hashes. Wat hulle gedoen het, is hulle gaan sit op hul rekenaars, en hulle hashed elke enkele moontlike woord daar uit totdat hulle het soort van wat dit is. As ek dit op te soek - Ek het net gegryp die hash. As ek hierdie gemors uit - As ek gaan in 'n webwerf, en ek vind hierdie gemors, want ek kry die databasisse, en ek sien dit op, iemand reeds gedink dit uit vir my. Ja. So mense gaan sit het, en wat ook al md5 hash dat jy in, gaan hulle terug te keer na jou iets Dit is 'n woord. As ek hash 'n ander woord, soos - Ek weet nie - trees2. Ek wil nie teleurgesteld wees deur my Google-soektogte. Daar is dit, trees2. So 'n baie van die webwerwe nog steeds gebruik MD5 hash. Hulle sê, o, dit is veilig. Ons is nie stoor in plain text. Ons het hierdie md5 hash. En al wat ek hoef te doen is net Google die getal. Ek het nie eens myself te bereken. Ek kan net vir Google dit, en iemand reeds dit gedoen het vir my. Hier is 'n klomp van hulle. Hier is 'n klomp van die wagwoorde. So beslis nie gebruik nie md5 hash, want al wat jy hoef te doen, is Google dit. So, wat wil jy gebruik in plaas? OK. Iets genoem sout. So, wat sout is - julle onthou toe ons praat oor ewekansige in - Ek is nie seker wat pset dit was - was dit pset daar of vier? Ons praat oor die vind van die naald in die hooimied. En in die pset, is dit gesê dat jy kan eintlik uit te vind wat lukraak genereer omdat iemand reeds gehardloop ewekansige 'n miljoen keer en net soort van gevorm wat hulle genereer. Wat jy wil doen, is sit in 'n invoer. So dit is wat sout soort is. Hulle het reeds uitgepluis het wat sout opbrengste vir elke werk. So, wat sout doen, is jy sit in 'n sout. Jy sit in 'n sekere woord. En dit sal die woord hash afhangende op wat jy sit in hier. So as ek hash wagwoord een met hierdie sin, dit gaan om hash anders as ek hash password1 met 'n ander sin. Dit gee dit soort van iewers te begin vir die hashing te begin. So dit is 'n baie moeiliker om te bereken nie, maar jy kan nog steeds bereken nie, veral as jy 'n slegte sout. Mense het reeds ook uitgepluis algemene soute en uitgepluis wat dit is. Ewekansige soute is baie beter, maar die beste manier is om te gebruik iets genoem grafkelder. En wat grafkelder kan jy nie - so hierdie funksies reeds gebou vir jou. Baie mense vergeet dat, of hulle vergeet om dit te gebruik. Maar as ek opkyk grafkelder PHP, grafkelder reeds terug 'n gemors string vir my. En dit eintlik soute dit baie keer en hashes dit baie keer. So ons het nie om dit te doen. So al wat jy hoef te doen, is stuur dit in grafkelder. En dit sal 'n groot gemors skep sonder jy hoef te bekommer oor die sout of iets nie. Want as jy was om te sout nie, het jy om te onthou wat sout wat jy gebruik want indien nie, kan jy nie jou wagwoord terug sonder die sout wat jy gebruik het. OK. En ook persoonlike identifiseerbare inligting. So sosiale sekerheid, kredietkaart - dit is redelik voor die hand liggend. Maar soms mense vergeet van die manier waarop dit werke is, hoeveel inligting jy eintlik moet 'n paar een persoon te vind? Iemand het 'n studie oor dit 'n pad terug. En dit was soos, as jy ' 'n volle naam, kan jy nie vind iemand wat maklik. Maar wat as jy 'n volle naam en die datum van geboorte? Is dit genoeg om te identifiseer iemand spesifiek? Wat as jy hulle naam en die straat adres dat hulle leef? Is dit genoeg om iemand te vind? En dis toe dat hulle die vraag, wat is persoonlike inligting, en wat moet jy bekommerd wees oor nie om weg te gee? As jy weggee persoonlike identifiseerbare inligting wat iemand wat jy gee, jy kan potensieel gedagvaar kry. En ons wil beslis nie doen nie. So wanneer jy sit jou webwerf , en jy het 'n baie cool ontwerp, hopelik gemaak 'n awesome finale projek. Enige jy soort van wil sit dit daar buite. Jy wil om seker te maak dat alles wat jy neem van die gebruiker, al is dit persoonlike inligting, wat jy wil om seker te maak jy word regtig versigtig met dit. Shell inspuiting. OK. Shell inspuiting toelaat om die indringer te toegang kry tot jou werklike command line in jou bediener. En so het hy in staat is om kode uit te voer wat jy nie kan beheer nie. Kom ons neem 'n voorbeeld van hierdie pragtige string reg hier. As ons gaan in die webwerf weer, ek is gaan om te gaan in die kode inspuiting. So, wat dit beteken is - dit is ook wat ons was kyk na voor. Ons die gebruiker sit in alles wat jy laat hy wil, en dit sal druk alles wat jy wil. So ek gaan 'n oproep te maak. Wat dit beteken is - dit sal begin deur concatenating. So sal dit laat my loop alles beveel die persoon se loop voor en my opdrag. En ek hardloop 'n stelsel opdrag. En hierdie laaste snare is - onthou wat ek gepraat met julle oor, terwyl jy het om te enkodeer dit in 'n URL-metode. As ek loop dit nou - Ek sal jou wys hier oor - Jy sal sien dat ek geëindig up hardloop 'n opdrag. Dit is eintlik die werklike bediener dat my webwerf word uitgevoer. So wil ons nie doen nie, want ek kan hardloop - Hierdie bediener is nie myne nie. So ek wil nie gemors sy suster, Marcus se bediener. Maar jy kan meer instruksies hardloop wat gevaarlik is. En potensieel, kan jy dit verwyder lêers, verwyder dopgehou. Ek kan 'n sekere Gids indien verwyder Ek wou nie, maar ek wil nie wat om te doen om Marcus. Hy is 'n mooi man. Hy laat my leen sy bediener. So ek gaan om hom te laat af op die goeie een. So wat ons wil nie te gebruik nie - ons doen nie wil eval of stelsel te gebruik. Eval of stelsel stel ons in staat om te maak hierdie stelsel oproepe. Eval middel evalueer. Stelsel beteken wat ek het. Dit loop iets in die stelsel. Maar ons kan hierdie dinge verbied in PHP sodat ons dit nie gebruik nie. En oplaai. Ek gaan 'n awesome om te doen ding met die oplaai. Maar soos ek gesê julle, my lêer oplaai ding is nie werk nie. As ek nou 'n lêer te laai - As ek 'n lêer op te laai, en dit is 'n foto - jy het 'n oplaai ding dit is 'n prentjie. Dit is fyn. Niks gebeur nie. Maar as jy 'n oplaai lêer, vir Byvoorbeeld, en die gebruiker eintlik oplaai 'n PHP-lêer of 'n exe-lêer of iets soos wat, dan kan jy potensieel het 'n probleem. Dit was voor die werk. Ongelukkig vir my is dit ' nie werk nie. As ek, byvoorbeeld, laai hierdie lêer, Ek is kry nie toestemming om op te laai die lêer as gevolg van die bediener nie myne nie. So het die man is baie slim. So ons wil nie - Ek gaan julle te wys - OK, hierdie is 'n paar regtig cool tools. So hierdie - gaan in - as jy ouens het Firefox - Hopelik sal jy doen. Daar is twee add-ons genoem SQL Inject My en cross-site Script Me. Hulle maak so min kant bars aan die kant. En as ek was om te gaan na CS60 byvoorbeeld - So, wat beteken dit is wat dit lyk vir al die vorms wat - Hopelik sal ek nie in die moeilikheid vir hierdie. Maar OK. Hier is die pen stelsel. So toe ek begin soek na gate in die stelsel, die eerste ding wat ek doen, is om oop te maak hierdie pragtige klein instrument op die kant. En ek gaan vorms te toets met outomatiese aanvalle. En ja, wat dit doen is dit stadig maak 'n klomp van die blaaiers. Hier is 'n klomp van die blaaiers. En dit is probeer elke enkele kombinasie van die kruis-site scripting dat daar moontlik is, indien wat jy sien op die kant. En dit sal my 'n gevolg soort van wat die antwoord is. Alle slaag. Dit is duidelik dat hulle almal slaag. Ek bedoel, hulle is regtig slim mense daar. Maar as ek was om te hardloop - Ek het tye gehad het toe ek loop hierdie studente se finale projekte. Ek loop net SQL Inject Me met al die verskillende aanvalle. En dit is probeer om SQL Inject hierdie pen bediener. So as ons rol af, vir Byvoorbeeld, dit sê - Dit is goed as dit terugkeer. Dus is dit 'n sekere waardes getoets. En die bediener het 'n kode wat negatief was. Verwyder tydelik. Dit is goed. Dit probeer om al hierdie toetse. So kan jy net loop - Ek wens ek kon 'n webwerf real vind vinnige wat my sou laat - Miskien is die CS50 winkel. Sjoe, dit gaan neem te lank. Ek sal dat die eerste toets nie klaar reg. So is dit kla. So het hierdie drie dinge. Hierdie gereedskap is gratis. Jy kan dit aflaai en hardloop hulle op jou webwerf, en dit sal jou vertel as jy het cross-site scripting, as jy 'SQL, as jy' iets van die wil. Ek is soort van geknoei. Wat belangrik is - OK, so nooit vertrou die gebruiker. Wat ook al die gebruiker insette vir jou, maak seker dat jy dit ontsmet, jy dit skoon, jy kyk vir die regte dinge doen, dat dit aan jou gee wat jy wil hom te gee. Altyd opgedateer word oor wat raamwerke dat jy eintlik jy gebruik. - As jy iets soos bootstrap gebruik Ek weet julle gaan gebruik opstart omdat hy gaan om te gaan oor dit binnekort in die klas - en Wordpress of iets soos dit, Normaalweg kan gekap word. En dan het jy nie eens weet nie. Jy is net die bestuur van jou webwerf. En dit is heeltemal veilig is. En jy gaan. So ek is regtig vroeg hengel. Maar ek wil Pentest Labs bedank. Ek gaan julle iets wys genoem Pentest Labs. As jy ouens is regtig geïnteresseerd in watter sekuriteit werklik is, is daar 'n webwerf met die naam Pentest Labs indien julle gaan dit nou. O, goed, dit is dit nie. Ek gaan net om dit te doen soos hierdie. Google vertel my die antwoord. OK. En dit leer gebruik om jou - sodat dit sê, leer web penetrasie die toets van die regte manier. Dit leer jy - hopelik, jy is 'n etiese persoon. Maar dit leer jou hoe jy kan kyk na hoe jy kan kry in webtuistes. En as jy leer hoe jy kan binne-in kry webwerwe, kan jy leer hoe om te om jouself te beskerm uit om binne webtuistes. Laat my zoom in, want miskien het jy ouens kyk nie na die regterkant. Van SQL-inspuiting te skil, so soort van hoe ek kan kry van SQL inspuiting te skil. En jy aflaai van hierdie virtuele masjien. En die virtuele masjien wat reeds kom met die webwerf wat jy gaan om dit te probeer op. Jy laai die PDF. En dit sal vir jou wys reël vir reël wat jy hoef te doen, wat jy kyk. Dit is wat 'n aanvaller eintlik doen om te kry in 'n webwerf. En sommige van hierdie dinge is ingewikkeld. Ek wens ek kon gaan oor meer dinge met julle. Maar ek is bekommerd dat jy ouens het nie regtig - dit is wat ek het saam met julle ouens, web toetse vir penetrasie toets. Nie regtig weet nie wat SQL is en wat - Carl Jackson se seminaar is awesome as well. Julle moenie soort weet nie van wat dit is. Maar as jy na hierdie webwerf, en jy laai hierdie lesse en hierdie PDFs, kan jy 'n blik op soort neem wat op die gebied van veiligheid werklik in penetrasie toets, sien hoe jy kan kry in webtuistes en te beskerm jouself daaruit. So as ek 'n super vinnige oorsig, dit sal verhoed word cross-site scripting. Jy wil htmlspecialchars te gebruik om elke tyd om die gebruiker insette iets. Verhoed SQL-inspuiting. As jy dit doen, is jy reeds beter daaraan toe is as Harvard was Toe hulle oortree. En maak seker dat jou wagwoorde is nie in gewone teks. Maak seker dat jy nie net een manier om hash hulle, maar dat jy grafkelder gebruik, die PHP funksie wat ek het julle ouens. Op dié manier, moet jy goed wees. Ook, as jou vriende laat, hardloop SQL Inject Me op hul webwerf. Begin cross-site scripting op hul webwerf. En jy sal 'n baie van hierdie webtuistes te sien 'n ton van probleme. Dit is ongelooflik hoe baie mense vergeet hul databasis te ontsmet of te maak seker wat die persoon se grootte kriteria is nie script kode. OK. Ek soort van werklik begin geëindig. Maar as iemand enige vrae oor enigiets, kan jy my skiet 'n vraag. Ja. Gaan, gaan. Publiek: Ek wil net vra, Kan jy verduidelik hoe die lêer laai presies werk. LUCIANO Arango: Ja. So laat ek jou wys die lêer laai ware vinnig. So het die lêer oplaai - die probleem wit die oplaai nou is dat - Ek gaan die kode oop te maak sodat julle sien die kode agter die skerms. En dit is te laai. Hier is 'n kode vir die lêer uploader. Ons probeer om te gaan in hierdie Gids oor hier. En ons probeer om, sodra ons die invoer van die lêer, isset lêer - so as daar 'n lêer in lêers, wat beeld, dan ons probeer om dit hier te beweeg. Ons gryp die lêer hier. Die metode is POST, tipe, beeld, lêer. Ons stuur hierdie lêer. En dan wanneer ons dit kry, so een keer lêer het 'n beeld, ons probeer om dit te stuur na hierdie gids. Die probleem is dat die webwerf is nie laat my gaan na hierdie gids, omdat dit nie wil hê ek moet terug te gaan. Dit wil nie vir my om te gaan - Ek het om te gaan - so hier is laai. Hier is foto's. Ek het al die pad terug na die gaan begin en sit dit in daar en dan gaan sit dit in die gids. So as ek hardloop 'n terminaal venster en ek wou 'n lêer te skuif - [Onhoorbaar] kan dit sien. As ek wou 'n lêer te skuif, het ek die lêer se naam te sit en dan die volledige pad wat ek wil om dit te stuur aan. En dan is die bediener is nie laat my terug te gaan. En so is dit nie te laat my kry om die lêer. Maar gewoonlik - so daar is 'n kode vir oplaai van 'n lêer. So gewoonlik wat sal gebeur, is dat die persoon is nie seker te maak dat my lêer eindig met. jpeg, so ek wil om te kyk. Laat my 'n voorbeeld te ware vinnige oopmaak. OK. Hierdie persoon reg - so byvoorbeeld twee is kontrole As preg_match - hier is dit hier - om seker te maak dat eindig met PHP, wat goed is. Dit is goed. Maar daar is 'n werklike groot probleem met hierdie. Dit is goed. Maar as ek 'n lêer genaamd te sit myfavoritepicture.php.jpeg, ek kon nog steeds potensieel ontslae te raak van die jpeg en hardloop it.k wat PHP se gevaarlik. Jy wil nie die persoon in staat wees om kode op jou webwerf. Maar dan. Jpeg dit laat slaag. Die idee is wat jy regtig wil doen nie lêers, A. Maar, OK, neem wat jy regtig wil doen, is om seker te maak dat jy lees oor die hele wêreld. En daar is niks. PHP dit. Daar is geen. PHP in die hele lêer naam. Publiek: maar jy kan sit. jpeg op die einde. Die bedieners nog steeds loop die kode. LUCIANO Arango: Nee, dit sal nie hardloop by die begin. Jy het om terug te gaan en probeer om te sien of jy kan - Publiek: So ons moet - OK, net nog 'n stel wat behels - LUCIANO Arango: Ja. Publiek: OK. LUCIANO Arango: Ja. OK. Enige ander vrae? OK. Ek gaan om dit te laat op en sorteer van probeer om te sien as jy ouens kan - die ander kinders is 'n bietjie meer ingewikkeld, omdat hulle baie meer kennis van SQL as net die begin kennis van web SQL is en wat JavaScript is. Maar ek gaan om te probeer om dit te hou, en hopelik julle ouens sal leer hieroor en probeer om 'n blik te neem aan wat jy kan doen en hoe baie voorbeelde kan jy kry deur. Enigeen het enige ander vrae oor dit? Gaan voort. Ja, skiet, skiet. Ja, gaan voort. Gaan voort. Publiek: OK. So het ek gehoor hoe Magic Quotes is nie genoeg beveilig. LUCIANO Arango: Wat - Magic Quotes? Publiek: Ja. So dit voeg - so wanneer jy insette iets, is dit altyd voeg aanhalings. LUCIANO Arango: Ja. Ja. OK. Publiek: En dan het ek al wat gewerk het, maar dan het ek dit ook op. En dit het gesê dit is nie goed nie. Maar ek is nie seker hoekom nie. LUCIANO Arango: Ja. Publiek: Moenie Magic Quotes gebruik, want dit is nie veilig nie. LUCIANO Arango: OK. So Magic aanhaal is wanneer jy 'SQL en dit dra reeds die kwotasie vir jou. Publiek: Dit voeg altyd aanhalings om alles wat jy sit in LUCIANO Arango: Ja. So die probleem met dit is dat - Ek neem 'n blik op - Publiek: Hoe bekom die SQL stelling? Of ek dink dit kan wees soos kwotasie kies. LUCIANO Arango: Ja, jy moet goeie kwotasies vir die SQL. Publiek: Nee, maar die bediener doen dit vir jou. LUCIANO Arango: Hierdie klein aanhalings reg hier, hierdie klein aanhalings? Publiek: Ja. LUCIANO Arango: Ja. Die probleem is dat jy kan kommentaar uit die verlede - OK, so wat ek kan doen is ek kan nie kommentaar lewer uit - so laat ons neem 'n blik op - laat my Maak 'n teks wysig lêer. Laat my net wysig hierdie hier direk. OK. Kan julle sien dat duidelik? Wat ek kan doen, is ek kan nie kommentaar lewer die laaste een. Dit sal kommentaar lewer uit die laaste een. En dan sal Ek sit een hier, sit al kwaadwillige dinge hier. Sodat die gebruiker is eintlik die skryf, reg? Die gebruiker is nie die skryf van die dinge, reg? Dit is wat ek gaan om insette as die persoon wat probeer om in te gaan. Ek gaan sit in - dit is een aanhalingstekens. Dis net kronkel deur die fout. En dan wat die kode gaan doen - Jammer, ek gaan om dit uit te neem. Wat die kode gaan doen, is om Dit gaan die eerste by te voeg aanhalingstekens hier. En dit gaan die laaste te voeg aanhalingstekens as well. En dit is ook toe te voeg die laaste, laaste aanhalingstekens. Maar ek kommentaar hierdie aanhaling punte uit, sodat hulle nie hardloop. En ek is die afwerking van hierdie kwotasie merk hier verby. Verstaan ​​jy? Is jy verloor? Ek kan die laaste aanhaling kommentaar merk, en sorg van die eerste aanhalingstekens. Publiek: En net afwerking die eerste een. LUCIANO Arango: Ja. En net klaar is met die eerste een. Ja, dit is reg. Dit is wat ek kan doen. Ja. Enige ander vrae soos wat? Dit is 'n groot vraag. Nee, ja, miskien. Hopelik, julle sal soort maak meer sin as jy SQL en bestudeer dinge soos dat. Maar maak seker dat jy - hou hierdie gereedskap in horlosie. Jammer, hierdie gereedskap hier. Hierdie gereedskap is groot. As iemand enige vrae, jy kan my ook e-pos. Dit is my gewone e-pos. En dit is my werk e-pos, wat is wanneer ek werk SEAS. OK, dankie. Dankie, ouens. Jy is goed om te gaan. Jy hoef nie om hier te bly. Moenie klap. Dit is vreemd. OK, dankie, ouens.