LUCIANO ARANGO: OK, jongens. Mijn naam is Luciano Arango. Ik ben een tweedejaars in Adams House. En we gaan praten over internetbeveiliging actieve verdediging. Dus ik werk voor de Office of Information Veiligheid in SEAS. En in de zomer, geïnterneerd ik op SeguraTec, die een informatie was beveiligingsbedrijf dat geserveerd voor de Bank of Columbia. Dat is vooral waar ik geleerd wat ik tot dusver heb geleerd. En dus een deel van het materiaal dat we gaan over vandaag, we hebben niet echt over gesproken in de klas. Maar we zullen binnenkort. Het zal zijn zoals SQL, JavaScript. En we hebben niet echt weg over. Dus ik kan sorteren vlucht doorheen, en u misschien niet weet dat sommige dingen. Maar al snel zul je het leren. En het zal allemaal zinvol. Ook een ander ding - blijven ethische. Sommige van de dingen die je leert, je zou kunnen gebruiken in niet-ethische manieren. Als het van jou is, zeker proberen. Ik zeker motiveren jullie om uw eigen servers te proberen, proberen gaan binnen hen. Kijk of je ze kan doordringen, als je kunt krijgen in hen. Maar niet iedereen anders is. Cops hou niet echt van de grappen en het geheel, plaatsen we deze hier. We waren rond rommelen. Ze krijgen echt boos. Dus ga dan naar deze website. Ik heb het hier geopend. Dit is een website, en het heeft een heleboel voorbeelden. Wat er gebeurt is dat het eerste voorbeeld is een soort van het gaan naar een stuk gemakkelijker dan het laatste voorbeeld in een zin dat het eerste voorbeeld is volledig onzeker. En de laatste is een soort van wat een normale web security persoon zou doen. Maar je kunt nog steeds sorteren van rond dat. En we gaan focussen op een en twee voorbeelden een en twee. OK. Laten we beginnen met cross-site scripting. De JavaScript wordt uitgevoerd op de browser van de klant. Het is een programmeertaal die je gebruikt te lopen op de browser van de klant zo je hoeft niet naar de website te updaten en ga terug naar de server. Je hebt het lopen. Bijvoorbeeld, Facebook, hoef je niet naar de website voor nieuwe status herladen updates op de proppen komen. Deze maakt gebruik van JavaScript te genereren al deze dingen. Dus we kunnen injecteren kwaadaardige JavaScript in de websites. En op die manier, wanneer we een link naar iemand, konden we soort sturen met een deel van de code die we willen. Er aanhoudende en niet-persistente JavaScript - persistente en niet-persistente cross-site scripting, bedoel ik. En het verschil dat persistente is JavaScript dat zal zijn opgeslagen op de website. En niet-persistente zullen JavaScript die eigenlijk maar een keer gebeuren. Dus laten we eens kijken naar een voorbeeld echt snel. OK. Dus deze website, eenvoudige, niets gebeurt hier. En we gaan proberen om Steek enkele webbrowser. Dus de manier waarop we beginnen met het schrijven van JavaScript is beginnen we met het begin script. En we sluiten het met script. We gaan gewoon naar een bericht te zetten - Ik zal je laten zien - alert. Alert is een functie die JavaScript gebruikt om iets weer. Dus laten we het proberen echt snel. Ik ga om te gaan, alert hello. Nou, ik vergat te zetten - OK. Dus dat is simpel. We zetten JavaScript op een website, en het kwam. En het soort gebeurt alleen op onze website, toch? Dus het lijkt alsof het niet een probleem, toch? Ik bedoel, hoe kan je gebruiken dit kwaadwillig? Dus de manier waarop hackers doen dit is echt simpel. Ze gaan om het te grijpen. Ze kunnen deze link en stuur hem naar je. Als ik deze link je nu klaar voor verzending, en je open te stellen, gaat het om zeggen, hallo, zeggen dat mijn website je vertelt hello. En dus als ik iets een zeggen beetje slimmer, als ik trek een JavaScript-functie ik soort van al schreef - maar als je er naar kijkt, ga ik overheen voordat ik het schreef. Dus we gaan naar een time-out in te stellen. We gaan wachten een paar seconden. In feite, we gaan wachten, als Ik me niet vergis, vijf seconden. Dit gaat in milliseconden. En dan wat we gaan doen, is dat we gaan om te waarschuwen dat de login- Time-out terug te loggen En we gaan naar de locatie te veranderen naar een andere locatie. Dus als ik stuur deze website naar iemand, ze zullen worden rondsnuffelen, kalm. Er gebeurt niets. En in vijf seconden, gaat het te zeggen, uw login time-out. Zoom loggen Zodra ze op OK klikt, ga ik breng ze naar een andere website. Vermoedelijk, de website gaat zijn vergelijkbaar met de website die ze waren vóór. En ze gaan loggen hun geloofsbrieven in mijn website in plaats van hun website. En zo kan ik mensen stuur een e-mail met deze link. Ik zeg, oh, hier is een link. Dit is een bank, bijvoorbeeld. Ik zeg, hier, gaan op deze link. En zodra ze sturen, ze zijn gaat rond te browsen. Ik kan wachten tot 15 seconden, 20 seconden, en dan pop dat u weer inloggen tekenen weer op. Jullie kunnen proberen met veel meer dingen. Het is ingewikkeld, omdat jullie gezien hebben geen JavaScript, dus je zou niet weten dat sommige functies. Maar alles wat je hoeft te doen is start met script, eindigen met script. En je kon alles te stoppen in het midden. Alert is een functie, wacht. Window locatie neemt u naar een nieuwe locatie. Maar je kunt zoveel meer doen. En het idee is dus dat we dat uit. Als ik naar voorbeeld van twee, en ik zet in dit dezelfde code, het is niet gaan werken. Dus het is het afdrukken van alles uit omdat wat deze website oorspronkelijk doet is als ik hier iets, het zal het uit te printen hier. Dus het is niet iets uit te drukken. Dit voorbeeld is eigenlijk controleert om te zien of script is er. Dus ja, ga je gang. Vraag me. PUBLIEK: Is het niet verzenden een GET of POST verzoek? LUCIANO ARANGO: Yeah. ze zijn het verzenden van een GET-aanvraag. PUBLIEK: het is? LUCIANO ARANGO: Yeah. Ook browsers bericht verzoeken. Maar ik probeer te krijgen verzoeken tonen zodat we kunnen zien wat er eigenlijk aan de hand. En dus als we kijken naar deze code - dus het is niet meer. En als we een kijkje nemen op deze code, het gaat om in voorbeeld twee. Wat deze persoon doet, de persoon belast deze browser - open te stellen, OK - is het vervangen van het woord script. Dit is PHP, die jullie misschien nog een beetje gezien. Hij is gewoon het vervangen van de woord script met de naam. Dus maar als ik ga je gang en gewoon in - als ik pak mijn code weer, en ik ga om het te wijzigen maar een klein beetje. In plaats van het script, ik ga veranderen het voor script met een hoofdletter R. En we gaan om te zien of deze code werkt. Zodat het niet uitprinten, dat is een goed teken. En hopelijk in twee seconden, het gaat om pop-up. Uw login timed out. OK. Dat is goed. Dus controleren op script zou niet per se. De persoon - het kan ook controleren op script hoofdletters, script kleine letters, str geval vergelijken, zorg ervoor dat ze hetzelfde. Maar de hacker kan nog steeds een soort van wat te doen we deden in Vigenere toen we verhuisden terug een paar personages, vooruit. En het kan uitzoeken hoe je script te zetten terug naar binnen zodat het kan injecteren dat script. Dus wat u wilt gebruiken is htmlspecialchars te bescherming van uw website. En wat dit doet is het maakt ervoor dat wat je in - bijvoorbeeld, offertes of dit groter of kleiner dan - wordt vervangen door iets die niet - laat me hier te zoomen - de werkelijke ampersand. Het zal vervangen die speciale HTML tekens die we zullen zien wanneer we het over - oh, dit gaat me terug te nemen naar - deze tekens hier. Deze betekenen dat iets komt eraan. Voor HTML, dat begin beugel vertelt ons dat er iets HTML gerelateerde komt. En we willen om zich te ontdoen van dat. We willen niet in een HTML zetten website.k We willen niet dat de gebruiker in staat zijn om iets in hun website te plaatsen dat hun website kunnen beïnvloeden, zoals script of HTML of iets dergelijks. Wat belangrijk is dat je ontsmetten van de input van de gebruiker. Zodat de gebruikers kunnen worden ingevoerd veel dingen. Hij kan het invoeren van een heleboel dingen te proberen om uw browser te verleiden tot nog het uitvoeren van dit script code. Wat u wilt doen is niet alleen kijken voor script, maar kijk voor alles dat zou kunnen zijn kwaadaardig. En htmlspecialchars zal dat doen voor u, zodat u niet hoeft zorgen over te maken. Maar probeer niet te doen door jezelf soort van met uw eigen code. Is iedereen duidelijk XSS? OK. Laten we naar SQL-injectie. Dus SQL-injectie is waarschijnlijk de nummer een kwetsbaarheid in verschillende websites. Ik bedoel, een goed voorbeeld - Ik was gewoon onderzoek verst voor dit ding. En ik vond dit geweldige artikel, waar Ik zag dat Harvard werd geschonden, werd gehackt. En ik vroeg me af, goed, hoe zou ze dat doen? Harvard is de meest ontzagwekkende, meest veilig universiteit ooit. Rechts? Nou, om de servers overtreden, de hackers gebruikte een techniek genaamd SQL-injectie. Dus dit gebeurt op een dagelijkse basis. Mensen vergeten om rekening te houden voor SQL-injectie. Harvard doet. Ik denk dat het hier staat, Princeton, Stanford, Cornell. Dus hoe kunnen we - dus wat is dit SQL injectie dat brengt al deze mensen beneden? OK. Dus SQL is een programmeertaal die we gebruiken om toegang te krijgen tot databases. Wat we doen is dat we te selecteren - dus wat nu dit leest select is alles van de tafel. SQL, verandert het in deze databases dat tafels vol met informatie. Dus selecteer alles van gebruikers waar de naam is gebruikersnaam. Rechts? Eenvoudig genoeg. Het idee van SQL-injectie is dat we Steek een aantal kwaadaardige code die zou truc de server in het runnen van iets anders dan wat het oorspronkelijk liep. Dus laten we zeggen voor de gebruikersnaam, we in of 1 is gelijk aan 1. Dus hebben we in 1 of gelijk aan 1. De manier waarop het nu leest zal worden geko van de gebruikers, alles van gebruikers - dit is alles - waar naam gebruikersnaam, maar username is of 1 is gelijk aan 1. Dus de naam is niets of 1 is gelijk aan 1. 1 gelijk aan 1 is altijd waar. Dus dit zal altijd informatie terug van de gebruikers. OK. We hoeven niet te hebben de juiste gebruikersnaam. We kunnen gewoon alles wat we willen, en het zal informatie terug die we nodig hebben. Laten we eens kijken naar een ander voorbeeld. Als we alles hebben selecteren van een gebruiker, waar naam DROP TABLE gebruikers - dus wat denk je dat dit zal doen als ik in de gebruikersnaam als DROP TABLE gebruikers? Iemand een idee? Ja. PUBLIEK: Het gaat om te vertellen aan alle tafels dumpen. LUCIANO ARANGO: Het gaat ons vertellen om alles in de website te dumpen, alles in de database. En wat mensen gebruiken deze voor - zo Ik ga je laten zien jongens. Ik uitgeschakeld laten vallen van de tabellen want ik heb je niet wilt jongens om mijn tafels vallen. Laten we eens een kijkje op deze. Dus dit trekt gewoon de informatie voor een bepaalde persoon. Dus hoe kunnen we weten of dit beïnvloed door SQL-injectie. We gaan echt snel te controleren als we iets kunnen zetten - laat me deze code te kopiëren. Ik ga om te gaan over het in een seconde. Ik ga wortel zetten en 1 gelijk is aan 1. Dit hier, dit procent teken 23 - wat het werkelijk is, als ik kijk hier bij - de manier waarop HTML neemt in aantal, als je neem een ​​kijkje op toen ik in een ruimte hier - als ik de ruimte iets te hier, verandert het naar een procent 2. Doen jullie dit zien hier toen ik in een ruimte? De manier waarop het werkt is dat je kunt alleen stuur ASCII-waarden via HTML. Zo vervangt, bijvoorbeeld, een ruimte met 20 procent. Ik weet niet of jullie hebben eerder gezien dat. Het vervangt een hashtag met 23 procent. We hebben een hashtag aan het einde van of verklaring, zodat we kunnen zeggen de database uitcommentariëren vergeten dit laatste puntkomma aan het einde. We willen dat het niet over nadenken. We willen gewoon dat het alles draaien dat we op voorhand en commentaar dat uit. Laten we eens een kijkje nemen op het. Dus als ik iets verkeerd gezegd - laten we zeggen bijvoorbeeld, heb ik 2 gelijken 1, het maakt me niets geven. Toen ik in 1 is gelijk aan 1, en het doet iets terug, dit vertelt mij dat Dit is kwetsbaar een SQL-injectie. Ik weet nu dat wat Ik heb na deze - en bijvoorbeeld verwijderen van tabellen of iets dergelijks zal zeker werken. Ik weet dat het kwetsbaar voor SQL-injectie omdat ik weet dat onder de motorkap, het is laat ik doe het 1 is gelijk aan 1 ding. OK? En als we kijken naar deze andere, nummer twee en nummer drie, het is gaan om een ​​beetje meer te doen controleren onder de motorkap van wat het is. Zodat iedereen de druppel staat al iets of geprobeerd? Doen jullie soort nog krijgen SQL? Omdat ik weet dat jullie nog niet het nog niet gezien, dus het is een soort van verwarrend voor jullie. Laten we eens een kijkje nemen. Dus wat is de manier om SQLI voorkomen? OK. Dus dit is echt belangrijk, want je jongens willen absoluut voorkomen dit in uw websites. Zo niet, dan zijn al je vrienden gaan je uitlachen als ze vallen allemaal uw tabellen. Dus het idee is dat je de SQL repareren op een bepaalde manier, terwijl u match wat de gebruiker ingangen met een bepaalde string. Dus de manier waarop dit werkt is dat je bereiden de database. U selecteert de naam, kleur en calorieën van een database genaamd fruit. En dan waar calorieën is minder dan, en we zetten een vraagteken er zeggen dat we gaan invoeren iets in een tweede. En kleur is gelijk, en we zetten een vraag mark zeggen we gaan ingang iets in een tweede ook. OK? En dan voeren we het, zetten in 150 en rood. En dit zal controleren om ervoor te ervoor dat deze twee - deze array zal controleren of deze twee een geheel getal en dat dit een tekenreeks. Dan gaan we, en we halen alle, plaatsen we het in het rood. Dat betekent dat we halen allemaal. Het betekent dat we eigenlijk de SQL-code statement en zet het terug in het rood. Hier doen we hetzelfde, maar we doe hetzelfde voor geel. En we halen allemaal. En zo niet mogelijk dat de gebruiker van de mogelijkheid om input iets dat is niet wat we gespecificeerd, een string of een geheel getal, bijvoorbeeld. Ik was eerder over vertrouwen op anderen. Als jullie beginnen met uw project, u bent zeker gaat gebruiken bootstrap of iets dergelijks. Hebben jullie ooit gebruikt Wordpress? Waarschijnlijk heb je jongens hebben gebruikt Wordpress het meest waarschijnlijk. Dus het probleem met van andere mensen dingen - Ik ga gewoon naar Google echt snel Wordpress kwetsbaarheid. Als ik trek dit nu meteen - Ik heb letterlijk een twee tweede Google. We kunnen zien dat Wordpress - dit is gedateerd in september '12. 26 wordt bijgewerkt. De standaardconfiguratie van Wordpress voor 3.6 niet voorkomen dat deze bepaalde uploads, die macht het gemakkelijker maken voor cross-site scripting aanvallen. Dus snel een verhaal, als we eenmaal bezig waren met - dus ik was, in de zomer, het werken een stage. En we werkten met een soort van als een grote credit card maatschappij. En ze vertrouwen op iets genaamd - Ik weet niet of jullie ooit gespeeld met een product genaamd Joomla. Joomla is een product dat wordt gebruikt om controle - soort vergelijkbaar Wordpress, gebruikt om websites te bouwen. Dus moesten ze hun website werken aan Joomla. Dit is eigenlijk een creditcard bedrijf in Colombia. Ik neem je mee naar hun website echt snel. Dus Joomla gebruikt ze. En ze hadden niet Joomla bijgewerkt de nieuwste aanwinst. En dus toen we nemen een kijkje op hun code, waren we in staat om daadwerkelijk gaan in hun code en stelen alle credit card informatie die ze hadden, alle credit card nummers, de namen, de adressen. En dit was gewoon - en hun code was perfect in orde. Ze hadden grote code. Het was allemaal beveiliging. Ze checkte alle databases. Zij zorgde ervoor dat cross-site scripting was prima. Maar ze iets dat niet gebruikt bijgewerkt, dat was niet veilig. En dat leidde hen naar - dus jullie zeker gaan andere gebruiken code, kaders van mensen van andere mensen de opbouw van uw website. Zorg ervoor dat ze veilig omdat soms is het je niet, degene die een fout maakt. Maar iemand anders een fout maakt, en dan vallen je vanwege dat. Wachtwoorden en PII. Dus wachtwoorden. OK. Laten we eens een kijkje nemen op wachtwoorden echt snel. OK. Kunt u mij vertellen dat iedereen maakt gebruik van veilige - Ik ben hier in de hoop iedereen maakt gebruik van veilige wachtwoorden. Ik ben gewoon te laten dat in als een aanname. Dus jullie zeker gaan opslaan van wachtwoorden voor uw websites. Je gaat zoiets maken een login of iets dergelijks. Wat belangrijk is om niet te slaan wachtwoorden in platte tekst. Dit is uiterst belangrijk. Je wilt niet op te slaan een wachtwoord in platte tekst. En je zeker niet echt willen op te slaan in een one way hash. Dus wat een one way hash is dat wanneer je het genereren van een woord, als je dit zetten woord in een hash-functie, zal het genereren terug een soort van cryptische bericht of cryptische set sleutels. Ik zal je laten zien een voorbeeld. Ik ga ze woord wachtwoord1 hash. Dus MD5 Hash gaat me terug een soort van rare informatie. Het probleem is dat mensen die er die graag in websites om te gaan al bedacht sorteren van alle md5 hashes. Wat ze hebben is dat ze zitten op hun computers en ze hash elke enkel mogelijk woord daar tot ze kregen een soort van wat dit is. Als ik dit op te zoeken - Ik pakte deze hash. Als ik deze hash van - als ik in een website, en ik vind deze hash omdat ik om de databanken, en ik zoek het op, iemand al dacht dat het uit voor mij. Yeah. Dus mensen gingen zitten, en wat md5 hash die je in, ze gaan terug te keren naar je iets dat is een woord. Als ik hash ander woord, zoals - Ik weet het niet - trees2. Ik wil niet teleurgesteld worden door mijn Google-zoekopdrachten. Daar is het, trees2. Dus veel websites nog steeds gebruik van md5 hash. Ze zeggen: oh, het is veilig. We zijn niet op te slaan in platte tekst. We hebben dit md5 hash. En alles wat ik moet doen is gewoon Google het nummer. Ik heb niet eens om mezelf te berekenen. Ik kan Google het, en iemand al deed het voor mij. Hier is een aantal van hen. Hier is een bos van wachtwoorden. Dus zeker niet md5 hash gebruiken, omdat alles wat je hoeft te doen is Google het. Dus wat wil je in plaats daarvan gebruiken? OK. Iets genaamd zouten. Dus wat zouten is - doen jullie nog toen we waren praten over willekeurige in - Ik weet niet zeker wat PSET het was - werd er PSET of vier? We hadden het over het vinden van de naald in de hooiberg. En in de PSET, zei dat je zou kunnen eigenlijk uitzoeken wat willekeurig genereert omdat iemand al liep willekeurig een miljoen keer en net soort vormden wat ze genereren. Wat u wilt doen is zetten in een ingang. Dus dat is wat zouten soort is. Ze al bedacht wat zouten terug voor elk werk. Dus wat zouten doet is je in een zout. Je zet in een bepaald woord. En het zal dat woord hash afhankelijk op wat je hier ingelast. Dus als ik hash vergeten een met deze zin, het gaat om hash anders als ik hash wachtwoord1 met een andere zin. Het geeft het soort ergens aan start de hashing beginnen. Dus het is een stuk moeilijker te berekenen, maar je kan nog steeds berekenen, vooral als je een slechte zout te gebruiken. Mensen hebben al ook bedacht gemeenschappelijke zouten en bedacht wat dat is. Willekeurig zouten zijn beter, maar de beste manier is om te gebruiken iets genaamd crypte. En wat crypte kunt u doen - dus deze functies zijn al gebouwd voor u. Veel mensen vergeten dat, of ze vergeten om het te gebruiken. Maar als ik kijk omhoog crypte PHP, crypte al geeft een hash string voor mij. En het eigenlijk zouten het vele malen en hashes het vele malen. Dus we hoeven dit niet te doen. Dus alles wat je hoeft te doen is stuur het in crypte. En het zal een grote hash maken zonder u zich zorgen te maken over zout of iets. Want als je te zout, je moet om te onthouden wat zout je gebruikt want zo niet, kun je niet krijgen uw wachtwoord terug zonder de zout dat u gebruikt. OK. En ook persoonlijke identificeerbare gegevens. Dus de sociale zekerheid, credit card - dat is vrij duidelijk. Maar soms mensen vergeten de manier waarop het werken is, hoeveel informatie heb je eigenlijk moet wat een persoon te vinden? Iemand deed een studie over dit een weg terug. En het was, als je een volledige naam, kun je niet vinden iemand die gemakkelijk. Maar wat als je een volledige naam en hun geboortedatum? Is dat voldoende te identificeren iemand in het bijzonder? Wat als je hun naam en hebben de adres dat ze leven? Is dat genoeg om iemand te vinden? En dat is wanneer ze vragen, wat is persoonlijke identificeerbare informatie, en wat moet je zorgen te maken over niet weggeven? Als je weggeeft persoonlijk identificeerbare informatie die iemand geeft, je zou kunnen aangeklaagd. En we zeker niet willen dat. Dus als je het zetten van uw website uit, en je hebt een echt cool ontwerp, hopelijk u gemaakt een geweldig afstudeerproject. Elke je soort wilt zet het daar. U wilt ervoor zorgen dat wat je neemt van de gebruiker, als het persoonlijke identificeerbare informatie, u willen ervoor zorgen dat je er heel voorzichtig mee. Shell injectie. OK. Shell injectie om de indringer te toegang krijgen tot uw werkelijke commandoregel in uw server. En dus is hij in staat om code uit te voeren dat je niet kan controleren. Laten we een voorbeeld van deze mooie reeks hier. Als we weer in de website, ik ben in te gaan op code-injectie te gaan. Dus wat dit doet is - het is ook wat we waren kijken voor. We laten de gebruiker te zetten in welke hij wil, en het zal uitprinten wat je wilt. Dus ik ga een gesprek in. Wat dit doet is - het zal beginnen met het aaneenschakelen. Dus het zal laat me lopen wat het bevel van de persoon running vóór en mijn bevel. En ik ben het draaien van een command systeem. En deze laatste strings zijn - herinneren wat ik sprak met jullie over, terwijl je moet coderen in een URL werkwijze. Als ik run deze nu - Ik zal je laten zien hier - je zult zien dat ik eindigde tot het uitvoeren van een opdracht. Dit is eigenlijk de werkelijke server dat mijn website loopt op. Dus we willen dat niet, want ik kan lopen - deze server is niet van mij. Dus ik wil niet te verknoeien zijn zuster, server Marcus. Maar je kunt meer opdrachten uitvoeren die gevaarlijk zijn. En mogelijk, zou je kunnen verwijderen bestanden, mappen verwijderen. Ik kan een bepaalde map of verwijderen Ik wilde, maar ik wil niet dat doen Marcus. Hij is een aardige vent. Hij liet me zijn server lenen. Dus ik ga om hem te laten korting op de goede. Dus wat we niet willen gebruiken - we doen niet willen eval of systeem te gebruiken. Eval of systeem stelt ons in staat om maken deze system calls. Eval middelen te evalueren. Systeem betekent wat ik liep. Het is iets draaien in het systeem. Maar we kunnen deze dingen te verbieden in PHP zodat we ze niet gebruiken. En het uploaden van bestanden. Ik was van plan om een ​​geweldige doen ding met het uploaden van bestanden. Maar zoals ik zei toch, mijn dossier upload ding werkt niet. Als ik een bestand nu uploaden - als ik een bestand te uploaden, en het is een foto - heb je een upload ding dat is een foto. Dat is prima. Er gebeurt niets. Maar als je een upload bestand, hebben voorbeeld, en de gebruiker daadwerkelijk uploads een PHP-bestand of een exe-bestand of iets als dat, dan kun je mogelijk hebben een probleem. Dit werd voor het werken. Helaas voor mij, het is niet meer. Als ik bijvoorbeeld dit bestand uploaden, ben ik niet krijgen toestemming om te uploaden het bestand door de server niet in de mijne. Dus de man is echt slim. Zodat we niet willen - Ik ga jullie laten zien - OK, dit zijn enkele echt cool gereedschap. Dus deze - gaan in - als jullie hebben Firefox - hopelijk je doet. Er zijn twee add-ons genaamd SQL Inject Me and Cross-Site Script Me. Openen ze zo weinig kant balken aan de zijkanten. En als ik naar CS60 bijvoorbeeld - dus wat het doet is het lijkt van alle formulieren die - hopelijk zal ik niet krijgen in de problemen voor. Maar OK. Hier is het pin-systeem. Dus toen ik op zoek gaan naar gaten in het systeem, het eerste wat ik doe is het openen van deze mooie kleine tool op de zijkant. En ik ga formulieren testen met automatische aanvallen. En dus wat dit doet is het langzaam opent een stelletje browsers. Hier is een bos van browsers. En het probeert elke combinatie van cross-site scripting dat mogelijk is, indien zie je aan de kant. En het zal me een resultaat geven soort van wat het antwoord is. Alle passeren. Uiteraard, ze allemaal passeren. Ik bedoel, ze zijn echt slim mensen daar. Maar als ik te lopen - Ik heb keer eerder toen ik dit run had op afstudeerprojecten van studenten. Ik heb gewoon run SQL Inject Me met alle verschillende aanvallen. En het probeert om SQL inject deze pin server. Dus als we naar beneden scrollen, voor Bijvoorbeeld, het zegt - Dit is goed als het terugkeert. Dus het getest wat bepaalde waarden. En de server heeft een code die was negatief. Verwijder tijdelijk. Dit is goed. Het probeert al deze proeven. Dus je kon gewoon lopen - Ik wou dat ik kon een website echte vondst snel dat zou me laten - misschien is de CS50 winkel. Wow, dit gaat duren veel te lang. Ik laat de eerste test niet meteen een einde aan. Dus het is klagen. Dit zijn dus drie dingen. Deze tools zijn gratis. U kunt ze downloaden en lopen ze op uw website, en het zal u vertellen of je cross-site scripting, als je SQL, als je iets van dergelijke. Ik ben soort van verprutsen. Wat belangrijk is - OK, dus nooit de gebruiker vertrouwen. Wat de gebruiker ingangen aan u, maken ervoor dat je het ontsmetten, het reinigen, u controleren of de juiste dingen, dat het geeft je wat je wilt dat hij je geven. Hier kun je bekijken op welke kaders dat u daadwerkelijk gebruikt. - Als je iets als bootstrap gebruiken Ik weet dat jullie gaat gebruiken bootstrap want hij gaat om te gaan Over deze binnenkort in de klas - en Wordpress of iets dergelijks, normaal dit kan worden gehackt. En dan heb je niet eens weet. Je bent gewoon het runnen van uw website. En het is volledig veilig. En je gaat naar beneden. Dus ik ben vissen echt vroeg. Maar ik wil Pentest Labs bedanken. Ik ga jullie iets laten zien riep Pentest Labs. Als jullie echt geïnteresseerd bent in wat veiligheid eigenlijk is, is er een website genaamd Pentest Labs als jullie gaan naar het nu. Oh, nou, dat is het niet. Ik ga gewoon om het uit te voeren als dit. Google vertelt me ​​het antwoord. OK. En het leert gebruiken je - dus het zegt, leren web penetratie het testen van de juiste manier. Het leert je - hopelijk, je bent een ethische persoon. Maar het leert je hoe je kunt kijken naar hoe je kunt krijgen binnen websites. En als je leert hoe je kunt binnen te komen websites, kunt u leren hoe u jezelf te beschermen tegen het krijgen van binnen websites. Laat me in te zoomen omdat jullie misschien kijken niet naar dit recht. Van SQL-injectie om de schaal, zodat soort van hoe ik kan krijgen van SQL injectie om de schaal. En u downloadt deze virtuele machine. En de virtuele machine al komt met de website die u bent ga het proberen. U downloadt deze PDF. En het zal u regel voor regel wat je moet doen, wat je controleren. Dit is wat een aanvaller daadwerkelijk doet om in een website te krijgen. En sommige van dit spul is ingewikkeld. Ik wou dat ik kon gaan over meer dingen met jullie. Maar ik ben bang dat jullie hebben niet echt - dit is wat ik ging met jullie, web testen voor penetratie testen. Weet niet echt wat SQL is en wat - Carl Jackson's seminar is geweldig. Jullie niet sorteren weten van wat dit is. Maar als je naar deze website, en je downloaden deze tutorials en deze PDF's, kunt u een kijkje nemen op soort te nemen wat het gebied van veiligheid echt in penetratie testen, zien hoe u kunt krijgen binnen websites en beschermen zelf van. Dus als ik een super snel overzicht, het zal voorkomen dat cross-site scripting. U wilt htmlspecialchars elk gebruik keer dat de gebruiker ingangen iets. Voorkom SQL-injectie. Als je dat doet, ben je al beter af dan Harvard was toen ze geschonden. En zorg ervoor dat uw wachtwoorden niet in platte tekst. Zorg ervoor dat je niet alleen een manier hash hen, maar dat je crypte gebruiken, de PHP functie die ik liet jullie. Op die manier moet je goed zijn. Ook als uw vrienden u laten, lopen SQL Inject Me op hun websites. Run cross-site scripting op hun websites. En je zult veel van deze websites te kunnen zien een ton van kwetsbaarheden. Het is ongelooflijk hoeveel mensen vergeten om hun databases te ontsmetten of te maken zeker wat het invoeren van de persoon is geen script code. OK. Ik soort eindigde heel vroeg. Maar als iemand vragen heeft over iets, kan je me neerschieten een vraag. Yeah. Go, go. Publiek: Ik wil gewoon om te vragen, kunt u zien hoe het bestand uit te leggen uploaden precies werken. LUCIANO ARANGO: Yeah. Dus laat ik je het bestand uploaden echt snel. Dus het bestand te uploaden - het probleem wit het bestand uploaden nu is dat - Ik ga naar de code, zodat jullie openen zie de code achter de schermen. En het is het uploaden. Hier is een code voor de file uploader. We proberen in te gaan directory hier. En we proberen om, zodra we de ingang van de bestand, isset bestand - dus wanneer er een bestand in FILES, die afbeelding, dan we proberen om het hier te verplaatsen. We grijpen het bestand hier. De methode is POST, type, plaatje of bestand. En dat we dit bestand verzenden. En dan als we het krijgen, dus zodra bestand heeft een beeld, we proberen om het te verzenden naar deze map. Het probleem is dat de website niet me te laten gaan naar deze map, omdat het niet wil dat ik terug te gaan. Het is niet dat ik ga - Ik moet gaan - dus hier uploaden. Hier beelden. Ik moet helemaal terug te gaan naar de begin en zet het in daar en dan gaan en zet het in de map. Dus als ik liep een terminal venster, en ik wilde een bestand te verplaatsen - [Onverstaanbaar] kan het zien. Als ik wilde een bestand te verplaatsen, ik heb aan de bestandsnaam te zetten en vervolgens de volledige pad dat ik wil sturen naar. En dan is de server niet me te laten terug te gaan. En dus is het niet te laten me naar dat bestand. Maar normaal gesproken - dus er is een code voor uploaden van een bestand. Dus normaal wat zal gebeuren is dat de persoon is niet te controleren of mijn dossier eindigt met. jpeg, dus ik zou willen controleren. Laat ik een voorbeeld opent ook echt snel. OK. Deze persoon rechts - dus bijvoorbeeld twee is het controleren indien preg_match - hier is het hier - om ervoor te zorgen dat eindigt met PHP, dat is goed. Dit is goed. Maar er is een echte grote probleem met deze. Dit is goed. Maar als ik een bestand genaamd zetten myfavoritepicture.php.jpeg, ik kon nog mogelijk te ontdoen van de jpeg en uitvoeren it.k Dat PHP gevaarlijk. Je wilt niet dat de persoon in staat code uitvoeren op uw website. Maar dan. Jpeg laat het door te geven. Het idee is wat je echt wilt doen is geen bestanden, A. Maar, OK, neem wat je echt wilt doen is ervoor te zorgen dat je leest over de hele wereld. En er is niets. Php in. Er is geen. Php in de hele bestand naam. Publiek: Maar je kon gezet. jpeg op het einde. De servers draaien nog steeds de code. LUCIANO ARANGO: Nee, het zal niet die aan het begin. Je moet teruggaan en proberen om te zien als je kunt - Publiek: Dus moeten we - OK, gewoon een andere set die inhoudt dat - LUCIANO ARANGO: Yeah. Publiek: OK. LUCIANO ARANGO: Yeah. OK. Andere vragen? OK. Ik ga dit overlaten en sorteren van proberen om te zien of jullie kunnen - de anderen zijn een beetje meer gecompliceerd, omdat ze vereisen veel meer kennis van SQL dan de beginnende kennis van web SQL is en wat JavaScript is. Maar ik ga proberen om dit vol te houden, en hopelijk jullie zullen leren over deze en proberen om een ​​kijkje te nemen op wat u kunt doen en hoeveel voorbeelden kunt u door te krijgen. Iemand een andere hebben vragen over het? Ga je gang. Ja, schieten, schieten. Ja, ga je gang. Ga je gang. Publiek: OK. Dus ik hoorde over hoe Magic Quotes zijn niet veilig genoeg. LUCIANO ARANGO: Wat - Magic Quotes? PUBLIEK: Ja. Dus het voegt - dus wanneer u ingang iets, het voegt altijd quotes. LUCIANO ARANGO: Yeah. Yeah. OK. PUBLIEK: En dan ik dacht dat werkte, maar toen zocht ik het op. En het zei het is niet goed. Maar ik ben niet zeker waarom. LUCIANO ARANGO: Yeah. PUBLIEK: Gebruik geen Magic Quotes, want het is niet veilig. LUCIANO ARANGO: OK. So Magic Quotes is wanneer u SQL invoegen en het voegt al de offerte voor u. Publiek: Het voegt altijd quotes rond wat je zet inch LUCIANO ARANGO: Yeah. Dus het probleem met dat is dat - Ik neem een ​​kijkje te nemen - Publiek: Hoe werkt het verwerven de SQL-instructie? Of ik denk dat het zou kunnen zijn als citaat te selecteren. LUCIANO ARANGO: Ja, moet je goede quotes voor de SQL. PUBLIEK: Nee, maar de server doet het voor je. LUCIANO ARANGO: Deze kleine citaten hier, deze kleine quotes? PUBLIEK: Ja. LUCIANO ARANGO: Yeah. Het probleem is dat je kunt commentaar uit de laatste - OK, dus wat ik kan doen is ik kan geen commentaar uit - dus laten we eens een kijkje nemen op - laat me open een tekst te bewerken bestand. Laat me dit gewoon bewerken hier direct. OK. Kunnen jullie zien dat duidelijk? Wat ik kan doen is ik kan geen commentaar uit de laatste. Dit zal een toelichting geven op de laatste. En dan zal ik er hier een te zetten, zet alle kwaadaardige dingen hier. Dus de gebruiker is eigenlijk invoeren, toch? De gebruiker is niet het invoeren de dingen, toch? Dit is wat ik ga ingang als de persoon die probeert om binnen te komen. Ik ga in te zetten - dat is een aanhalingsteken. Het is gewoon kronkelende per ongeluk. En wat de code is gaan doen - sorry, ik ga dit meenemen. Wat de code is gaan doen, is het gaat om de eerste te voegen aanhalingstekens hier. En het gaat om de laatste toe te voegen aanhalingsteken ook. En het is ook nog toevoegen de laatste, laatste aanhalingsteken. Maar ik commentaar deze offerte markeert, zodat ze niet lopen. En ik ben afwerking dit citaat markeer dan hier. Begrijp je? Ben je verdwaald? Ik kan de laatste notering comment mark, en zorgen voor de eerste aanhalingsteken. PUBLIEK: En net afwerking de eerste. LUCIANO ARANGO: Yeah. En net eindigen de eerste. Ja, dat klopt. Dat is wat ik kan doen. Yeah. Andere vragen als dat? Dat is een grote vraag. Nee, ja, misschien. Hopelijk zal jullie soort te maken meer zin wanneer u SQL en studie dat soort dingen. Maar zorg ervoor dat je - houden deze tools in te kijken. Sorry, deze tools dan hier. Deze tools zijn geweldig. Als iemand vragen heeft, je kunt me ook mailen. Dit is mijn gewone e-mail. En dit is mijn werk e-mail, die is als ik werk bij SEAS. OK, bedankt. Bedankt, jongens. Je bent goed om te gaan. Je hoeft hier niet te blijven. Niet klappen. Dat is raar. OK, bedankt, jongens.