Web-Sicherheit

Januar 7, 2012

Erneut Massenattacken auf SQL-Injection-Schwachstellen

Filed under: Allgemein — sebastiankuebeck @ 15:08
Tags: , , , ,

Mark Hofman berichtete kürzlich auf der Webseite des Internet Storm Center (ISC), dass inzwischen mehr als eine Million Webseiten (davon zehntausende deutsche Webseiten) Opfer von automatisierten Angriffen auf SQL-Injection-Schwachstellen geworden sind. Betroffen sind offenbar ausschließlich Coldfusion-Installationen die mit dem Microsofts Internet Information Server (IIS) und SQL Server betrieben werden. Die Angreifer binden dabei Code in die Webseite ein, der Besucher auf die Domain Lilupophilupop.com umleitet, auf der Scareware angeboten wird.

Ob eine Webseite infiziert wurde, kann beispielsweise mit Hilfe von Google ermittelt werden. Liefert die Suche mit der Zeichenkette <script src="http://lilupophilupop.com/" sowie dem Parameter site samt einer verdächtigen Webadresse ein positives Ergebnis, ist diese infiziert.
Alle betroffenen Webseiten der Domäne .de lassen sich durch folgende Suche ermitteln:

  <script src="http://lilupophilupop.com/" site:de

Der Datensatz, mit dem die Webseiten manipuliert werden enthält folgenden Code, den Coldfusion offenbar ungefiltert an die Datenbank weiterleitet und so zur Ausführung bringt (siehe Mark Hoffmans Post von Anfang Dezember) …

declare+@s+varchar(4000)+set+@s=cast(0xset ansi_warnings off DECLARE @T VARCHAR(255),
@C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR select c.TABLE_NAME,c.COLUMN_NAME
from INFORMATION_SCHEMA.columns c, INFORMATION_SCHEMA.tables t where c.DATA_TYPE in
('...IN EXEC('UPDATE ['+@T+'] SET ['+@C+']=''">''">

Laut den Kommentaren ist das keine Schwachstelle im Coldfusion-Server selbst sondern es handelt sich um Schwachstellen in den Coldfusion-Skripten der betroffenen Webseiten. Mark Hofman rät, die betroffenen Seiten über die Log-Einträge zu identifizieren und die Schwachstellen dort zu beheben. Wie das geht ist beispielsweise in folgendem Artikel beschrieben: Secure your ColdFusion application against SQL injection attacks.

Massenattacken auf SQL-Injection-Schwachstellen kommen inzwischen häufig vor und keine gängige Webtechnologie bleibt von ihnen verschont (siehe LizaMoon vor einem Jahr und dieser Angriff auf ISS-Installationen aus dem Jahr 2010). Höchste Zeit also, die eigene Webseite abzusichern.

Oktober 12, 2011

Jenseits von SQL-Injection: Verschleiern und Umgehen

Filed under: Allgemein — sebastiankuebeck @ 08:29
Tags: , , , , , ,

Prathan „ZeQ3uL“ Phongthiproek und „Suphot Boonchamnan“ veröffentlichten kürzlich eine Umfangreiche Anleitung in der zahlreiche Techniken beschrieben werden, mit denen man Filtertechniken wie Web Application Firewalls (kurz WAFs) umgehen kann. Ich habe in der Vergangenheit bereits zahlreiche Techniken dieser Art vorgestellt und man möchte meinen, dass es zu diesem Thema nichts mehr fundamental Neues zu veröffentlichen gäbe, dennoch zeigt dieses Paper einige Tricks, die mir bisher noch nicht bekannt waren.

Da die WAF-Hersteller laufend versuchen, mit den Angreifern schrittzuhalten, konzentrieren sich letztere zusehends auf das Ausnützen von Eigenheiten (neudeutsch Idiosynkrasien) einzelner Datenbankprodukte, die von den meisten Filtertechniken nicht berücksichtigt werden. So kann man in MySQL-Abfragen && und || anstelle der logischen Operatoren and und or verwenden. Auch wird von den meisten Filtern das SQL-Schlüsselwort union blockiert, da dieses von Angreifern häufig dazu dazu verwendet wird, Datenbankinhalte von Tabellen anzuzeigen, die von der Webanwendung eigentlich nicht angezeigt werden sollten. Diese Einschränkung kann ein Angreifer teilweise jedoch wie folgt umgehen:

union select user, password from users // diese Abfrage wird blockiert 
1 || (select user from users where user_id = 1) = 'admin' // diese jedoch nicht

In der geänderten Version ist jetzt allerdings ein Blind-SQL-Injection-Angriff nötig, der deutlich Aufwändiger ist, als die Variante mit union, denn man muss jetzt Benutzernamen durch Versuch und Irrtum ermitteln, anstatt sie direkt auszugeben.

Das Filtern des einfachen Hochkomma (') und von Leerzeichen kann man durch Hexadezimalzahlen, die man von der MySQL in Zeichen umwandeln lässt, umgehen:

1 || substr(user,1,1) = 0x61 // oder...
1 || substr(user,1,1) = unhex(61)

Wird auch das gefiltert, hilft die Funktion CONV, Dezimalzahlen in Hexadezimalzahlen umzuwandeln, welche dann wiederum in Zeichen umgewandelt werden können:

1 || substr(user,1,1) = lower(conv(61,10,36))

Wird auch SUBSTR gefiltert, kann man sein Glück noch mit LPAD versuchen:

1 || lpad(user,7,1)

In weiteren Abschnitten werden die Techniken der „HTTP-Parameterverunreinigung“, die ich bereits in einer vorhergehenden Artikelserie beschrieben habe, übersichtlich zusammengefasst und es wird auf Schwächen einzelner WAF-Produkte eingegangen. Insgesamt ein guter, wenn auch keineswegs vollständiger Überblick über gängige WAF-Umgehungstechniken.

September 28, 2011

MySQL.com infizierte Besucher mit Schadsoftware

Filed under: Allgemein — sebastiankuebeck @ 07:08
Tags: , , , , , , ,

Bereits im März wurde die Seite MySQL.com die von MySQL, – einer Tochterfirma von Oracle – betrieben wird, Opfer eins Hackerangriffs. Das ist offenbar wieder passiert, nur diesmal infizierte die Seite am Montag die Browser ihrer Besucher mit Schadsoftware. Die Schadsoftware suchte im Browser unter anderem nach verwundbaren Java-Plugins und installierte dann einen Schädling.

Um 20 Uhr hat MySQL dann offenbar reagiert und den Server bereinigt. Die Chancen stehen auch diesmal gut, dass es eine SQL-Injection-Schwachstelle war, die es dem Hacker ermöglichte, seine Schadsoftware auf dem Server von MySQL zu installieren…

August 29, 2011

Umgehen von PHPIDS

Filed under: Allgemein — sebastiankuebeck @ 11:43
Tags: , , , , , , , , ,

Michael Brooks beschreibt in seinem kürzlich erschienenen Paper Bypassing PHPIDS 0.6.5 wie man das Intrusion Detection System (kurz IDS)  PHPIDS in der Version 0.6.5 umgeht. Er hat dieses Produkt unter anderem mit dem statischen Analysetool RIPS PHP untersucht und einige gravierende Schwachstellen gefunden.

Firewalls und IDS verfolgen generell zwei unterschiedliche Ansätze: Firewalls reduzieren die Angriffsfläche indem sie den eingehenden Netzwerkverkehr analysieren und nur das durchlassen, was explizit erlaubt ist. IDS hingegen überprüfen den Netzwerkverkehr auf Anzeichen eines Angriffs. Haben sie einen solchen erkannt, generieren sie eine Warnmeldung oder blockieren die Anfrage. Anders ausgedrückt könnte man bei einer Firewall von einem White-List-Filter sprechen, der nur das durchlässt, was ausdrücklich erlaubt ist. IDS hingegen stellen einen Black-List-Filter dar, es wird also alles durchgelassen bis auf das, was als Angriff erkannt wird. Bei Web-IDS und -Firewalls verfolgen üblicherweise beide Ansätze, weshalb diese Begriffe häufig synonym gebraucht werden, daher teilen diese Techniken auch dieselben Schwächen.

Unzureichender Schutz vor ReDoS-Angriffen kann dazu ausgenutzt werden, die Angriffserkennung komplett zu umgehen

Die erste Schwachstelle ergibt sich aus einem Mechanismus, der das IDS vor ReDoS-Angriffen schützen soll.

	    /**
	     * Make sure the value to normalize and monitor doesn't contain
	     * possibilities for a regex DoS.
	     *
	     * @param string $value the value to pre-sanitize
	     *
	     * @static
	     * @return string
	     */
	    public static function convertFromRepetition($value)
	    {
	        // remove obvios repetition patterns
	        $value = preg_replace(
	            '/(?:(.{2,})\1{32,})|(?:[+=|\-@\s]{128,})/',
	            'x',
	            $value
	        );
	        return $value;
	    }

Der regulärte Ausdruck überprüft dabei einfach, ob sich irgendein Textmuster, das zumindest zwei Zeichen enthält, mindestens 33 mal wiederholt oder Ein Zeichen der Zeichenklasse [+=|\-@\s] zumindest 128 mal wiederholt. Ist dies der Fall, wird der ganze Ausdruck durch x ersetzt, bevor die eigentliche Angriffserkennung erfolgt.

Ein Ausdruck der Form:

abababababababababababababababababababababababababababababababababa!

Wird also schlicht in folgenden umgewandelt:

x!

Das Problem dabei ist, dass diese Funktion einerseits keinen Schutz gegen ReDoS-Schwachstellen darstellt (siehe meine Artikelserie darüber) und andererseits dazu missbraucht werden kann, die gesammte nachgeschaltete Angriffserkennung zu umgehen. Man brauch ja nur die Angriffssignatur mindestens 33 mal zu wiederholen, also beispielsweise folgende Anfrage absetzten:

<script>alert(1);</script><script>alert(1);</script><script>alert(1);</script> ... (insgesamt 33 mal wiederholen)

Diese Anfrage wird nicht auf Angriffe überprüft, da sie von der Funktion convertFromRepetition einfach in x umgewandelt wird, bevor sie auf Angriffe untersucht wird. So kann das IDS natürlich keinen Angriff erkennen und die Anfrage wird unverändert an die Anwendung weitergeleitet und damit eine eventuell in der Anwendung vorhandene Cross-Site-Scripting-Schwachstelle ausgenutzt!

Selbverständlich kann man so auch SQL-Injection-Schwachstelle ausnutzen. Man braucht lediglich dafür zu sorgen, dass die Wiederholungen in einem Kommentar münden. Dann wird nur der erste Teil des Musters ausgewertet und die Wiederholungen von der Datenbank ignoriert, da sie sich ja innerhalb eines Kommentars befiden, also beispielsweise:

' union select password from mySQL.user limit 1 /*' union select password from mySQL.user limit 1 /*
... (insgesamt 33 mal wiederholen)

Auch Directory-Traversal-Angiffe funktionieren, sofern die Eingabe irgendwo in einem Nullterminierten String landet.

../../../etc/passwd%00../../../etc/passwd%00... (insgesamt 33 mal wiederholen)

Das erste Null-Teuchen sorgt dann dafür, dass alles, was dahinter kommt, ignoriert wird (siehe auch HTTP-Parameterverunreinigung, Teil 2).

Die Annahme, man könne keine Angriffe ausschließlich mit alphanumerischen Zeichen durchführen, ist falsch!

Folgende regel filtert alle Parameter aus, die keine Sonderzeichen enhalten:

        // define the pre-filter
        $prefilter = '/[^\w\s\/@!?\.]+|(?:\.\/)|(?:@@\w+)/';

        // to increase performance, only start detection if value
        // isn't alphanumeric

Die Annahme ist, dass ein erfolgreicher Angriff nicht ohne Sonderzeichen funktioniert, was prinzipiell falsch ist. Um eine SQL-Injection-Schwachstelle wie die folgende auszunutzen braucht man keine Sonderzeichen, wie eine Schwachstelle im IG-Shop beweist:

"select type_id from catalog_product where product_id = "$HTTP_GET_VARS['id']

Hier genügt die Anfrage…

http://localhost/compare_product.php?id=0 union select password from users limit 1

…um das erste Passwort auszulesen. Im Übrigens ist der Filter nicht ganz „dicht“, denn folgende Zeichen /@!?.\r\n werden problemlos durchgelassen.

Die Annahme, Benutzerdaten können nur mittels $_GET, $_POST ,$_COOKIE und $_REQUEST übergeben werden, ist ebenfalls falsch!

Neben den genannten Quellen vergaßen die Schöpfer von PHPIDS die Quelle $_SERVER zu berücksichtigen. Schließlich wird der Eintrag $_SERVER[‚PHP_SELF‘] gerne für Cross-Site-Scripting-Angriffe ausgenutzt, denn dieser Eintrga wird vom Browser gesetzt!
Gibt beispielsweise ein Skript diesen Wert ohne weitere Kodierung aus, beispielsweise um das aktuelle Skript als Formular-Aktion anzugeben…

  <form action="$_SERVER['PHP_SELF']" method ="post">

…kann der Pfad, den der Angreifer übergibt, ohne weiters wie folgt aussehen…

  http://localhost/contact/myform.php/"><script>alert(1);</script>

Das Skript übernimmt dann diesen Pfad und baut ihn ins Formular ein und das ohne dass PHPIDS etwas davon bemerkt.

Die Directory-Traversal-Schwachstelle in PHPIDS, die in dem Paper beschrieben wird, ist der aktuellen Version offenbar bereits behoben. Das Projekt hat offenbar kreative Tester als Mitglieder (siehe Projektforum), wodurch PHPIDS in Zukunft hoffentlich sicherer und Treffsicherer im Aufspüren und Abblocken von Angriffen wird. Leider liegt es in der Natur der Sache, dass man unsichere Webanwendungen mit dieser Technik nicht in allen Fällen zuverlässig schützen kann.

August 28, 2011

HTTP-Parameterverunreinigung, Teil 3

Filed under: Allgemein — sebastiankuebeck @ 06:24
Tags: , , , , , , , ,

Im ersten Teil dieser keinen Serie haben wir die Technik der HTTP-Parameterverunreinigung kennengelernt und im zweiten Teil neue Eigenheiten der HTTP-Parameterverarbeitung kennengelernt, die man unter anderem für das Umgehen von WAFs verwenden kann.

Im dritten Teil kommen wir nun endlich zu Dmitry Evteevs Blog-Post, über das ich eigentlich berichten wollte. Dmitry Evteev führt den Ansatz von Ivan Markovic noch ein Stück weiter. So erkannte er, dass ASP % (das Prozentzeichen) ignoriert, wenn die Zeichen danach keinen gültigen Zeichencode ergeben (wir erinnern uns, dass laut Spezifikation nach einem % der Zeichencode als Hexadezimalzahl kommen sollte).

  id=selec%t+@%@version--

…wird nach dieser Regel in der webanwendung wie folgt ankommen…

  Request.Params["id"] -> select @@version--

Und das ist wird in den Standardregeln von ModSecurity nicht abgefangen. Mit den erweiterten Regeln funktioniert dieser Trick nicht mehr, diese sind allerdings noch in einem experimentellen Stadium und produzieren zahlreiche False-Positives.

Ein weiteres interessantes „Feature“ von PHP ist, dass PHP Parameter, die die Zeichnkette [] beinhalten, als Array an die Anwendung übergibt.

  param[]=123 wird zu $_GET['param'] -> Array

Damit kann man unter Umständen die Logik von PHP-Skripten durcheinanderbringen und Fehlermeldungen Provozieren, die einem von aussen mehr einblick in die Webanwendung gewähren.
Angeblich hat Dmitry Evteevs bei seiner Arbeit auf den Spuren Ivan Markovics eine DoS-Schwachstelle bei der Verarbeitung von HTTP-Paremetern im Tomcat-Webserver gefunden, diese will er allerdings nicht verrarte.

August 26, 2011

HTTP-Parameterverunreinigung, Teil 1

Filed under: Allgemein — sebastiankuebeck @ 13:52
Tags: , , , , , , , ,

Luca Carettoni und Stefano diPaola präsentierten auf der OWASP EU09 in Polen erstmals eine Angriffstechnik, die sie HTTP-Parameter-Pollution, also HTTP-Parameterverunreinigung nannten. Diese Technik nutzt Eigenheiten in der Art und Weise, wie gängige Web-Technologien HTTP-Parameter interpretieren aus, um gängige Angriffstechniken für Webanwendungen zu erweitern. Varianten dieser Angriffstechnik werden gegenwärtig ständig weiterentwickelt, weshalb ich diesen Beitrag auf mehrere Teile aufteilen muss. In diesem Artikel wird die ursprüngliche Angriffstechnik und deren Grundlagen beschrieben. Diese Kenntnisse sind nötig, um weitergehende Angriffstechniken zu verstehen.

HTTP-Parameter

HTTP-Parameter sind ein optionaler Bestandteil von URLs. Eine Beispiel für eine URL mit HTTP-Parametern:

http://www.example.org/showItem?id=123&size=small

Der letzte, fett gedruckte Teil ist eine kodierte Liste von HTTP-Parametern; das Fragezeichen vor den Parametern trennt den Pfad von der Parameterliste. In diesem Fall lauten die HTTP-Parameter wie folgt:

Name Inhalt
id 123
size small

Da die Länge von URLs beschränkt ist und man Parameter mit sensiblen Daten nicht in der URL haben möchte, kann man diese Parameter auch im Body der HTTP-Anfrage mitschicken. Das kann beispielsweise wie folgt aussehen:

POST showItem HTTP/1.1
Host: www.example.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 17

id=123&size=small

Kodierung von HTTP-Parametern

Die Kodierung der Parameter – auch URL-Kodierung genannt – ist in beidem Fällen dieselbe. Kurz zusammengefasst besteht eine Parameterliste (oft auch Query String genannt) aus Wertepaaren, die durch ein & oder ein ; getrennt sind. Die beiden Teile jedes Paars werden durch ein = getrennt.

Die URL-Kodierung kennt drei Klassen von Zeichen: Reservierte und nicht reservierte. Die nicht reservierten können ohne Codierung in den Parametern vorkommen, die Reservierten müssen mittels der Prozentdarstellung (siehe nächster Absatz) kodiert werden.

Nicht reservierte Zeichen: a,b,...z, A,B,...Z, 0,1,...9 sowie die Zeichen _ . ! ~ * ' ( )
Reservierte Zeichen: ; / ? : @ & = + $ % #

Bei der Prozentdarstellung wird der Code in Hexadezimaldarstellung nach einem % angegeben. Die Anzahl der Stellen hängt von der gewählten Codierung ab. Empfohlen wird inzwischen UTF-8 doch wird vereinzelt auch noch ISO 8859-1 (Latin-1) verwendet. Statt %20 (Leerzeichen) kann man auch ein + schreiben.

Mehrere HTTP-Parameter mit demselben Namen

Nun ist es auch möglich, mehrere Parameter mit demselben Namen in die Parameterliste aufzunehmen, dass sieht dann zum Beispiel wie folgt aus:

http://www.example.org/showItem?id=1&id=2&id=3

Nun wandeln gängige Webtechnologien Mehrfachparameter auf unterschiedliche Weise in interne Datenstrukturen um, beispielsweise verwandeln ASP und ASP.NET die liste an gleichnamigen Parametern in eine durch Komma getrennte Liste um. So wird aus…

id=1&id=2&id=3

…in der Webanwendung…

Request.Params["id"] -> "1,2,3"

PHP und Lotus Domino ignorieren hingegen alle Parameter bis auf den letzten:
So wird aus der selben Liste in der Webanwendung:

$_GET[id] -> "3"

Bei Perl, Servlets und JSPs verhält es sich genau umgekehrt: Es wird der erste Parameter genommen und weitere Vorkommen ignoriert.

request.getParameter("id") -> "1"

Python (Zope) wiederum liefert einen Array mit den Parameterwerten zurück. In der Webanwendung wäre obige Parameterliste dann:

self.request.form['id'] -> ['1','2','3']

Viele Web-Programmierer sind sich über diese Unterschiede nicht im klaren und erwarten Mehrfachparameter nur dort, wo sie auf der HTML-Seite explizit definiert sind – beispielsweise bei einer Auswahlliste, die eine Mehrfachauswahl erlaubt. Tatsächlich kann aber ein Angreifer Parameter mehrfach setzten, wo immer er will (bei POST-Parametern geschieht das meist mithilfe eines Werkzeugs wie Paros oder WebScarab) und so mitunter die Logik der Webanwendung durcheinanderbringen, wie folgendes Beispiel zeigt:

Die CUPS-Oberfläche, aufgerufen mit doppeltem Parameter „QUERY“. Im Eingabefeld steht der erste Parameter, die Suche berücksichtigte hingegen nur den zweiten. Quelle: Luca Carettoni, Stefano diPaola: HTTP-Parameter-Pollution, OWASP EU09 Poland, 2009.

Ausnutzen der Verarbeitung von Mehrfachparametern

PT Research verwendete diese Technik, um die Web-Application-Firewall ModSecurity zu umgehen (siehe Trick 3). Wie zuvor beschrieben setzt ASP.NET Parameter mit demselben Namen zu einer durch Komma getrennten Liste zusammen. So wird aus…

after=1 AND (select DCount(last(username)&after=1&after=1) from users where username='ad1min')

…in der Webanwendung…

after=1 AND (select DCount(last(username), 1, 1) from users where username='ad1min')

…also eine gültige SQL-Injection-Signatur. Dadurch, dass nur Fragmente in unterschiedlichen Parametern übergeben werden, kann ModSecurity den Angriff nicht erkennen.

August 23, 2011

Unbekannte Hackergruppe stiehlt 840.000 Kundendaten bei K&M – Elektronik

Filed under: Allgemein — sebastiankuebeck @ 14:54
Tags: , , , , , , ,

Die bisher unbekannte Hackergruppe oxxo berichtete Sonntag Mittag, dass sie 840.000 Kundendaten von der Homepage der K&M – Elektronik entwendet hätte. Offenbar wollen die Hacker diese Daten allerdings nicht veröffentlichen. Laut eigenen Angaben wollten die Hacker die betroffenen Unternehmen lediglich auf Schwachstellen in deren Webseiten aufmerksam machen, jedoch hätten die betroffenen Unternehmen entweder gar nicht reagiert oder mit rechtlichen Schritten gedroht. Also haben die Hacker beschlossen, jede Lücke zu veröffentlichen. Bei den Schwachstellen auf der Seite der K&M – Elektronik handelt es sich um eine SQL-Injection- und drei Cross-Site-Scripting-Schwachstellen.

Leider hört man in letzter Zeit immer öfter von frustrierten Leuten, die in guter Absicht Schwachstellen melden und dann ignoriert oder bedroht werden. Man sollte allerdings als Hacker nicht vergessen, dass die Leute, die sich in diesen Unternehmen mit solchen Meldungen befassen, in der Regel mit der Situation vollkommen überfordert sind. Es ist daher oft sinnvoller, diese Schwachstellen einem CERT in der nähe zu melden. Generell gilt jedoch, dass solche „Überprüfungen“ ohne Zustimmung des betroffenen Unternehmens illegal sind, auch dann, wenn man dem Unternehmen eigentlich helfen will.

Als betroffenes Unternehmen sollte man solche Meldungen auf jeden Fall ernst nehmen und dem Überbringer danken. Danach sollte man sich schleunigst an ein erfahrenes Sicherheitsunternehmen wenden und den Vorfall untersuchen lassen.
Man sollte dabei nicht vergessen, dass zahlreiche Hacker da draußen sind, die niemanden informieren sondern gleich großen Schaden anrichten. Den Einzelhändler TJX hat ein solcher Vorfall immerhin 256 Millionen Dollar gekostet.

GEMA wurde offenbar durch eine SQL-Injection-Schwachstelle gehackt

Filed under: Allgemein — sebastiankuebeck @ 08:12
Tags: , , , , , , ,

Gestern wurde die Website der deutschen GEMA (Gesellschaft für musikalische Aufführungs- und mechanische Vervielfältigungsrechte) Opfer eines Hackerangriffs der Hackergruppe Anonymous. Die Seite wurde dabei durch eine Meldung verändert, die an die an jene Meldung bei Youtube erinnert, die man bekommt, wenn man sich Inhalte ansehen will, deren Inhaber sich nicht mit der GEMA über die Vergütung einigen konnten.

Die Hacker ließen es allerdings nicht bei der Webseite (die bis heute, 23.8. nicht verfügbar ist) bewenden und drangen auch in das interne Netz der GEMA ein. Daraufhin änderten sie offenbar die Konfiguration der Drucker im Netz. Die Hacker veröffentlichten folgende Collage, die Details des Angriffs beschreibt.

Demnach war offenbar eine SQL-Injection-Schwachstelle in der Webseite das Eintrittstor für die Angreifer, denn durch dieses konnten sie direkt auf das Dateisystem des Servers gelangen. Danach hackten sie sich in einen Fernzugang für die Konfiguration der Virtualisierungssoftware VMWare (für die die GEMA offenbar nicht genug Lizenzen besitzt – wozu wohl nicht nur Anonymous das Wort „Heuchler“ einfällt…) und der Fernwartungskonsole des Servers. Bei letztere funktionierten offenbar die ab Werk eingestellten Zugangsdaten des Herstellers (solche Informationen sind leicht im Internet zu beschaffen – beispielsweise auf Deault Password List). So standen den Angreifern alle Türen offen, um beispielsweise Ressourcenintensive Programme zu starten um den Server damit in die Knie zu zwingen.

Für die Administration des Servers war offenbar ein externer Teilzeit-Administrator verantwortlich, der mit der sicheren Konfiguration der Infrastruktur offensichtlich heillos überfordert war. Genau wie im Moment die Verantwortlichen der GEMA, die offenbar das Ausmaß des Problems noch immer nicht erkannt haben, ansonsten hätten sie den Server längst vom Netz genommen und professionelle Hilfe in Anspruch genommen.

Bis jetzt war das Arrangement mit dem Teilzeitadministrator für die GEMA sicher günstig, aber jetzt wird es teuer, denn höchstwahrscheinlich muss die gesamte Infrastruktur grundlegend neu aufgebaut werden. Einen Imageschaden braucht die GEMA im Gegensatz zu anderen Opfern von Hackerangriffen allerdings nicht zu fürchten, denn sie gehört zusammen mit dem GEZ wahrscheinlich zu den unbeliebtesten Organisationen in Deutschland.

Update: Angeblich sind Zugangsdaten der GEMA-Webseite im Internet aufgetaucht.

Eine verzwickte SQL-Injection-Schwachstelle mit sqlmap ausnützen

Filed under: Allgemein — sebastiankuebeck @ 07:13
Tags: , , , , , , ,

Pentest Monkey zeigt in seinem aktuellen Blogeintrag, wie er eine verzwickte SQL-Injection-Schwachstelle mit sqlmap – dem wahrscheinlich bekanntesten Werkzeug zum Aufspüren und ausnutzen von SQL-Injection-Schwachstellen – ausnutzt.

Die Geschichte beginnt mit einer relativ offensichtlichen Schwachstelle bei der Verarbeitung eines URL-Parameters. Allerdings stößt Pentest Monkey auf ein unerwartetes Problem: Der Parameter akzeptiert weder den Operator and noch or. Mit etwas Kreativität schafft es Pentest Monkey aber dennoch, sqlmap durch ein verborgenes Feature dazu zu bewegen, die Schwachstelle auszunutzen.

Wenn man Webanwendungen absichert folgt man daher am besten Faustregel, dass man prinzipiell jede SQL-Injection-Schwachstelle ausnutzen kann, auch wenn die eigenen Fähigkeiten dazu möglicherweise nicht ausreichen. Ein erfahrener Pen-Tester schafft das allerdings in den meisten Fällen.

August 12, 2011

Welt.de angeblich gehackt

Filed under: Allgemein — sebastiankuebeck @ 12:30
Tags: , , , , , , ,

Laut diesem Artikel gelang es einem Hacker,  der sich selbst Headpuster nennt, die Webseite der Tageszeitung „Die Welt“ zu hacken, indem er eine SQL-Injection-Schwachstelle ausnutzte.

Er [Headpuster] tat dies nach eigenem Bekunden, um gegen den Verkauf von Benutzerdaten der Betreiber an Dritte zu protestieren. Bisher wurden nur zensierte Auszüge aus der Datenbank aller 30.264 Nutzer von Welt.de veröffentlicht. Allerdings sollen alle Daten der Betreiber public gemacht werden.

Nach eigenem Bekunden liegen dem Hacker die Daten aller 30.264 eingetragenen Nutzer der Webseite vor. Headpuster wirft der Axel Springer AG vor, ihre Nutzerdaten an mehrere russische Marketingfirmen veräußert zu haben, darunter auch Mail.ru, den aktuellen Betreibern von ICQ.

Laut Axel Springer Verlag betrifft die Sicherheitslücke ausschließlich den Werbepartner und nicht welt.de selbst. Von Boot24 wird die Lücke derzeit ausgiebig geprüft.

Nächste Seite »

Bloggen auf WordPress.com.