28
los geht’s … 1 14.05.2013

SQL Injection Pr sentation - tiedev.de · BSI-Quartalsbericht 4/2010 Die gefährlichsten Schwachstellen in Webauftritten Häufig wurden SQL-Injection(Weiterleitung von SQL-Befehlen

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

los geht’s …

1

14.05.2013

Agenda erläutern

2

14.05.2013

„Warum jetzt zuhören?“

14.05.2013

3

BSI-Quartalsbericht 4/2010Die gefährlichsten Schwachstellen in WebauftrittenHäufig wurden SQL-Injection (Weiterleitung von SQL-Befehlen an die Datenbank der Webanwendung) […] beobachtet.

CWE Top 25 � Platz 2Weakness Prevalence HighConsequences Data loss, Security bypassRemediation Cost LowEase of Detection EasyAttack Frequency OftenAttacker Awareness High

CWE = Common Weakness Enumeration„A Community-Developed Dictionary of Software Weakness Types“

BSI = Bundesamt für Sicherheit in der Informationstechnik

---

BSI: gefährlichste Schwachstellen, Q4/10 (https://www.bsi.bund.de/ContentBSI/Presse/Pressemitteilungen/Presse2011/Quart

14.05.2013

4

alslagebericht_04_2010_11032011.html)Platz 2! (http://cwe.mitre.org/top25/index.html)Einstufung der CWE (http://cwe.mitre.org/top25/index.html#CWE-89)CWE -> http://cwe.mitre.org/index.html

14.05.2013

4

6 Schlagzeilen!

24.05.2011 - Sonys nicht endender Alptraum jap. und griech. Seite via SQL-Injection(http://www.golem.de/1105/83688.html)

12.04.2011 - Barracuda Networks durch SQl-Injection-Lücke in PHP Script(http://www.heise.de/security/meldung/Datendiebstahl-bei-Netzwerk-Sicherheitsfirma-1226365.html)

28.03.2011 - MySQL.com Schnittstelle(http://www.heise.de/security/meldung/MySQL-Site-angeblich-gehackt-via-SQL-Injection-1216091.html)

16.02.2011 - HBGary und Anonymous(http://www.heise.de/security/meldung/Hintergruende-zum-Einbruch-bei-US-Sicherheitsfirma-1191238.html)

08.06.2010 - Masseninfektion über SQL-Injection [+100.000 Seiten!] (http://www.golem.de/showhigh2.php?file=/1006/75698.html&wort[]=sql&wort[]=injection, http://blog.sucuri.net/2010/06/mass-infection-of-iisasp-sites-robint-us.html, http://blogs-optimieren.de/1811/kompromittierte-adserver-das-bsi-warnt/)

14.05.2013

5

07.02.2009 - kaspersky.com hacked(http://www.gulli.com/news/kaspersky-com-angeblich-durch-2009-02-08/, http://blog.rstcenter.com/2009/02/07/usakasperskycom-hacked-full-database-acces-sql-injection/)

14.12.2006 - StudiVZ-Lücke(http://www.sajonara.de/2006/12/14/studivz-neue-sicherheitslucke-durch-sql-injection-auf-und-wieder-zu/)

14.05.2013

5

nun zu „Was ist das eigentlich?“

14.05.2013

6

ganz platt gesagt … so siehts aus

nur 2 Voraussetzungen� Auflistung bekannter Vertreter

14.05.2013

7

„Was ist mit SQL-Injection möglich?“

14.05.2013

8

Authentication Bypass (unerlaubter Login)Informationsdiebstahl (unberechtigte Informationen erlangen)Denial of Service (Server außer Gefecht setzen)Datenmanipulation (Daten unberechtigt verändern)Übernahme des Servers

14.05.2013

9

Authentication Bypass=> Einloggen ohne Kenntnis von Zugangsdaten

PHP_GET => Übergabeparameter aus Formular

1. pass immer true2. auskommentieren (Ausbruch aus ‘ )

14.05.2013

10

1. Kundentabelle (langweilig!)2. Tabelle mit Logins

Kunden-Detail-Seite mit ID-Übergabe

fetter Code injected

UNION SELECT- gleiche Parameterzahl- Datentypen übereinstimmend= gar nicht so einfach

=> Resultat (wenn Ausgabe sichtbar!)

auch mit INSERT? => ja, über INNER SELECT

14.05.2013

11

Viel Last = kein Service

Idealfall bei Suche über viele Datensätze

Last erzeugen:- aufwendige Funktionsaufrufe- direkter shutdown (batched / stacked query)

14.05.2013

12

einfach mal alles löschen

oder alle Datensätze manipulieren

oder gleich eine Tabelle

oder einen Benutzer mit Adminrechten

14.05.2013

13

nicht ganz so einfachabhängig von vielen Parametern

Dateien auslesen wie im Penetrations-Test=> Zugangsdaten gewinnen

14.05.2013

14

Prinzip nun klar … folgendes muss noch erwähnt werden!

14.05.2013

15

Punkte erläutern.

14.05.2013

16

ist natürlich aufwendiger

Conditional ResponsesQueryergebnis sichtbar1 mathematische Operationenid = 4 geht auch id = 3+12 stringverknüpfung3 AND 1=1 und AND 1=0

Conditional Errorskein Queryergebnis/Fehlermeldung sichtbarAnwendung reagiert andersCASE WHEN Fehler auslösen oder nichtFehler z.B. div/0rantasten

Time Delaysdie Webseite macht keinen muksda ist die Zeit unser FreundCASE WHEN mit Denail of Service

14.05.2013

17

Out-of-Band Channelingalternativer Rückkanal:HTTP Request Funktiongar DB Verbindungsfunktionsehr DB und Konfigurationsspezifisch

14.05.2013

17

gibt es auch

14.05.2013

18

DBMS herausbekommen für detaillierter Angriffe.

blind in Kombi mit CASE WHEN

14.05.2013

19

Ziel: Informationen extrahieren

Voraus: Query mit Ausgabe und Fehlermeldungen

1 bereits gezeigt2 probierenUNION SELEC null –Anzahl: ORDER BY X3 auch probieren‚test‘, null, 1 … etc.4 nicht alles in der Query wird auch gezeigt5 Versionsinfo ausgeben6 System gezielt angreifen

14.05.2013

20

nun mal was, was man dagegen machen kann!

14.05.2013

21

Abwehrmaßnahmen sind einfach!

ALLE Benutzereingaben überprüfen (Framework nutzen!)Rechte kleinhaltenkeine FehlerausgabeSicherheitslücken im DBMS beseitigen

14.05.2013

22

„Geht das auch wirklich?“

Browser: ChromeProxy: WebScarab (OWASP)Ziel: WebGoat (OWASP)=> Virtuelle Machine

OWASP= Open Web Application Securtiy Projecttransparente non-profit, open community

14.05.2013

23

Quellen…

14.05.2013

24

Ende.

14.05.2013

25