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



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

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

Hva skjer i OWASP? OWASP. The OWASP Foundation. Kåre Presttun Chapter Lead Mnemonic as kaare@mnemonic.no

Sikkerhet og tilgangskontroll i RDBMS-er

Hva skjer i OWASP? OWASP. The OWASP Foundation. Kåre Presttun Chapter Lead mnemonic as kaare@mnemonic.no

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

Sikkerhet i Pindena Påmeldingssystem

PERSONVERN, GDPR OG COREPUBLISH

Hva skjer i Open Web Application Security Project (OWASP)?

Kapittel 11. Databasesikkerhet

Sikkerhet i Pindena Påmeldingssystem

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Applikasjonsutvikling med databaser

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

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

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

OWASP Norway, 24.april Ståle Pettersen

HØGSKOLEN I SØR-TRØNDELAG

Leveringsguiden. tjeneste for henting av informasjon om Postens transportprodukter. Versjonshistorikk: nummer 30.mars à jour.

Sikkerhet i Pindena Påmeldingssystem

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

Eksamen i Internetteknologi Fagkode: ITE1526

Tilkobling og Triggere

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

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

Eksamen i Internetteknologi Fagkode: IVA1379

Bruke SQL fra Python. Med Psycopg2

WordPress.com: Enkel bruksanvisning for blogging

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

NCE TOURISM FJORD NORWAY. FJORDNETT INTERNETTFORUM 2012 Bergen, 12./13. juni 2012

En bedre verden med AJAX

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

Funksjonskravene er delt opp i to deler, krav til spillsekvens og generelle funksjonskrav.

TDT4237 Programvaresikkerhet Exercise 2. Kristian Ekle Stian Hegerland Hagen Thomas Gautvedt Tale Prestmo Martin Rechsteiner Marthe Øynes

Lotus Traveler - Manual for installasjon

Testsituasjon Resultat Kommentar. Fungerer som det skal!

Sikkerhet og internett

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

Søkemotoroptimalisering. Lenker/ popularitet. Tekster/innhold. Plattform/webarkitektur. SEO pyramiden

Programvare som installeres Følgende tre programmer benyttes til oppgraderingen og kan lastes ned fra

SQL Server guide til e-lector

MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL

En lett innføring i foreninger (JOINs) i SQL

BankID 2.0. Rune Synnevåg, Uni Pluss AS

notater Gule lapper Mine Et praktisk eksempel med objekter IT2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Innhold. Innledning... 13

VEDLEGG 1 KRAVSPESIFIKASJON

Oppdatering av person/studentforekomster i FS mot folkeregisteret

1. Introduksjon til Oracle Express Edition

Databaser kort intro. Tom Heine Nätt

praktiske eksempler DOM Document Object Model DOM og Høst 2013 Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Implementering av database og tjeneste

Beskrivelse for hvordan en kan digitalisere og importere musikk inn i Variations på TEST server EINER.UIB.NO (for installasjonen 17.

Nyheter i remote support platform 3.1

GraphQL. Hva, hvorfor, hvordan

Hvordan levere en video på en oppgave

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

Intentor Helpdesk - Installasjon Step #3: Microsoft Reporting Services

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

Feilmelding Årsak Løsning

ORDBMS og OODBMS i praksis

Elektroniske sjekklister

MySQL. Historikk. Nedlasting og installasjon

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

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

Om verktøyet. Installering av MySQL Migration Toolkit. Installer toolkitet. Brukerveiledning til Intelligent Converters MySQL Migration Toolkit

S y s t e m d o k u m e n t a s j o n

Bachelorprosjekt 2015

Utvikle en prototype for en digital versjon av helsekort for gravide. Programvareleverandør av ehelse-løsninger for helsevesenet

Nyheter i remote support platform 3.0

DecisionMaker Frequent error codes (valid from version 7.x and up)

Konsulent-ID: 2225 Curriculum vitae

InfoRed Publisering. - produktbeskrivelse. TalkPool WebServices Postboks Åneby

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Verktøy for å håndtere siteringer og referanser i masteroppgaven. Citation and reference tools for your master thesis. Citations and references

Second Order ODE's (2P) Young Won Lim 7/1/14

Kravspesifikasjon. Forord

Trådløsnett med. Wireless network. MacOSX 10.5 Leopard. with MacOSX 10.5 Leopard

Båtforening på nett. Produktrapport

Effektiv sikkerhetstesting av webapplikasjoner med rikt innhold

6105 Windows Server og datanett

Bachelorprosjekt 2015

Installasjonsveiledning

6105 Windows Server og datanett

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

Java Database Connectivity (JDBC) Norvald H. Ryeng

Kravspesifikasjon eksamen - personlig

Forord. Testdokumentasjon

Hvordan publisere bilder i galleriet til Norsk lundehund klubb

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Controller Brukerstøttedatabase Ottar Holstad/Cantor 09.

Oppgave 1 (Opprett en database og en tabell)

Produktdokumentasjon. Madison Møbler Administrasjonsside og Nettbutikk

Citation and reference tools for your master thesis

Innføring i bruk av CGI4VB

Presentasjon. Kristian Hewlett- Packard

Sikkerhetstesting i ISTQB(?) perspektiv Bergen 5. april Innhold

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Entobutikk 2.PRODUKTRAPPORT VÅR 2011

Huldt & Lillevik Ansattportal. Installere systemet

Transkript:

Når data krysser grenser Erlend Oftedal, BEKK Knut Vidar Siem, Objectware Communities in Action 10. mai 2010 Copyright The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation http://www.owasp.org

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

Data krysser grenser når den kommer inn i eller forlater applikasjonen når den forlater et språk og går over i et annet språks kontekst OWASP 3

Når data krysser grenser må vi passe oss Innholdet har ikke alltid samme betydning Encoding Kontrolltegn/metategn OWASP 4

En webapplikasjoner er polyglot Java? C#? Ruby? HTML? Javascript? SQL? LDAP? Xpath? XML? OWASP 5

Eksempler på kryssing av grenser Applikasjon til bakenforliggende systemer Java til SQL C# til LDAP Ruby til XPath Applikasjon til browser C# til HTML Java til javascript Ruby til JSON OWASP 6

Grensevakt Når vi krysser en grense må vi være på vakt Tilsynelatende like grenser skal nemlig ikke alltid behandles på samme måte OWASP 7

Cross Site Scripting.. også kjent som XSS Ukritisk behandling av (inn)data resulterer i kjøring av skadelig JavaScript i HTTP-responsen Muliggjør blant annet: stjeling av sesjoner phishing endring av innhold på sider utnyttelse av klientsårbarheter OWASP 8

Cross Site Scripting (illustrert #1) 0. request (got session) 2. request (href) 3. response (with script) nettbank.no/search.action?searchterms=javazone nettbank.no/search.action?searchterms=<script>...</script> OWASP

Cross Site Scripting (illustrert #2) OWASP 10

Cross Site Scripting - Eksempel Søkefelt Bruker søker på: test HTML:...<input type="text" value="test">... Bruker søker på: test HTML:...<input type="text" value="test"">... Bruker søker på: test ><script>alert( XSS );</script>< HTML:...<input type="text" value="test"><script>alert("xss");</script><"">... Test Test XSS );</script>< OWASP 11

Demo OWASP 12

Hva gjør vi for å unngå dette da? Svaret man får er ofte enten Valider all input! Encode all output! Ingen av svarene er direkte feil, men OWASP 13

Inputvalidering er ikke nok Hvordan validerer man rik input? En kommentar på stackoverflow OWASP 14

Man kan klare seg med outputencoding, men Man må encode riktig I HTML finnes det seks forskjellige områder 1. Mellom tagger 2. HTML attributt-verdier 3. Javascript variabler 4. CSS 5. URLer (<a href= >) 6. Alle andre steder (kommentarer, attributtnavn, tagnavn osv.) Disse må håndteres på forskjellig måte! OWASP 15

Eksempel på problematikken OWASP 16

Demo av kontekstproblematikk OWASP 17

Hvordan gjør man det riktig? 1. Mellom tagger Vanlig HTML escaping ( < blir til < osv.) 2. HTML-attributter Escape alle ikke-alfanumeriske tegn med &#xhh; 3. Javascript-variabler Escape alle ikke-alfanumeriske tegn med \xhh 4. CSS Escape alle ikke-alfanumeriske tegn med \xhh OWASP 18

Hvordan gjør man det riktig? 5. URL-er Bruk URL-encoding (%HH) 6. Alle andre steder Unngå å legge data her med mindre du har en VELDIG god HTML-vasker (for eksempel OWASP AntiSamy) http://www.owasp.org/index.php/xss_%28cross_site_scripting%29_prevention_cheat_sheet OWASP 19

Injection attacks SQL-injection LDAP injection Xpath injection QL injection Command-line injection OWASP 20

SQL-injection Inndata brukes ukritisk i en SQL-spørring Gir angriper mulighet til å endre SQL-spørringen som kjøres mot databasen Muliggjør uautorisert tilgang til data: Lese Endre Slette OWASP 21

SQL-injection Eksempel Bruker skriver inn brukernavn og passord SQL: SELECT * FROM User WHERE Username= Test AND Password= test123 Hva skjer hvis bruker skriver inn brukernavnet? SQL: SELECT * FROM User WHERE Username= AND Password= Hvordan kan dette utnyttes? -- eller # er SQL-kommentartegn SQL: SELECT * FROM User WHERE Username= Test -- AND Password= SQL - Alternativ: SELECT * FROM User Test -- WHERE Username= OR 1 = 1 AND Password= OR 1 = 1 OWASP 22

SQL-injection - Eksempel I mange programmeringsspråk kan en SQL-spørring inneholde flere spørringer SQL tap av data: SELECT * FROM Pages WHERE PageId=9; DELETE FROM Users; -- ORDER BY Date SQL henting av uautorisert data: SELECT Title, Body FROM Forum WHERE Author= UNION ALL SELECT Username AS Title, Password AS Body FROM Users WHERE = OWASP 23

Demo OWASP 24

Hva gjør vi for å unngå dette da? Svaret man får er ofte Valider all input! Igjen dette er ikke direkte feil, men OWASP 25

Det handler om kontekst Hva gjør vi med navnet O Brian når vi gjør inputvalidering? Vi må behandle kontrolltegn i det data blir en del av en spørring Heldigvis har noen løst dette for oss OWASP 26

Prepared statements Escaper kontrolltegn for oss så lenge vi bruker dem riktig PreparedStatement updatesales = con.preparestatement("update COFFEES SET SALES =? WHERE COF_NAME LIKE? "); updatesales.setint(1, 75); updatesales.setstring(2, "Colombian"); updatesales.executeupdate(); PreparedStatement updatesales = con.preparestatement("update COFFEES SET SALES =? WHERE COF_NAME LIKE \"" + coffeename + "\""); updatesales.setint(1, 75); updatesales.executeupdate(); OWASP 27

Generelt om injection angrep Escaping må gjøres i det man bytter kontekst Sjekk om det finnes ferdige bibliotek som løser problemet OWASP ESAPI har et encoding/escaping-bibliotek og finnes for flere plattformer (.NET, Java ++) Hvis du skal escape selv Få med alle kontrolltegn Husk at escapetegnet i seg selv er et kontroll tegn escapes til \ \ escapes til \\\ OWASP 28

Spørsmål? [xkcd.com] Bli med i OWASP Norway og lær mer om sikkerhet i webapplikasjoner. Det er gratis å være med! http://www.owasp.org/index.php/norway OWASP 29