sql injection pr sentation - tiedev.de · bsi-quartalsbericht 4/2010 die gefährlichsten...
TRANSCRIPT
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
ganz platt gesagt … so siehts aus
nur 2 Voraussetzungen� Auflistung bekannter Vertreter
14.05.2013
7
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
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
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
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