Tel.: 0731 - 145 323 44 03212 - 34 34 35 4 info@maximusweb.org

Webseiten Sicherheit - Website Security von Maximusweb aus Ulm

Metasploit Framework

Keine Webseite ist 100%ig vor Angriffen geschützt. Mit dieser Tatsache müssen Sie sich primär abfinden. Die meisten Angriffe passieren aber nach einem einfachen Schema. So wie bei einem Mensch, der an einer Reihe parkender Autos vorbeiläuft und bei jedem Auto probiert, ob es unverschlossen ist.

Wenn Ihr Auto / Ihre Webseite also zumindest den Anschein hat verschlossen zu sein, wird der Angreifer weiterscannen. Denn meistens basieren die Angriffe auf Hilfsmitteln wie Metasploit einem mächtigen Werkzeug für Systemadministratoren. Wie bei allen Waffen kann auch dieses Framework für schlechte Zwecke eingesetzt werden.

Alles was wir hier beschreiben, hat immer einen thematischen Bezug zu dem beliebten Content Management System Joomla, da wir uns auf Joomla und damit auch auf Joomla Sicherheit / Security fokussieren. Die Informationen dürften zum Teil aber auch für andere Systeme relevant sein. Manche Hinweise wie im Abschnitt Passwörter sind universal gültig und sollten zu Ihrer eigenen Sicherheit in jedem Fall befolgt werden.

Wenn Ihre Webseite sicher sein soll: Internetagentur Maximusweb aus Ulm

Ihre Webseite wurde gehackt, was ist zu tun?

Beispiel einer gehackten Startseite

Niemand rechnet damit, bis es passiert ist. Ihre Webseite wurde gehackt. Nun ist Eile geboten, denn je nach Angriffsart wird von Ihrem Webserver vielleicht Spam verschickt und Ihr Server bzw. Ihre IP-Adresse landet auf einer Spam(Block) Liste. Wenn Sie Ihre Webseite in einem Hostingpaket betreiben wird in den meisten Fällen hier Ihr Hosting Anbieter aktiv. In Hosting Paketen liegen bis zu 1000 Webseiten auf ein und demselben Server. Alle diese Webseiten teilen sich eine IP-Adresse. Wenn Ihre Webseite in einem Spamfilter landet, werden die anderen (unschuldigen) Webseiten ebenso erfasst.

Denken Sie auch an Besitzer von illegalen Dateien. Für solche Menschen ist es natürlich wunderbar, wenn Sie unbemerkten Zugang zu Ihrem Server haben und heimlich einen Filesharing Dienst betreiben.

Oder Ihre Webseite verbreitet Schadcode, dann wird vor Ihrer Webseite bereits vom Browser gewarnt. Je nach Konfiguration des Servers ist es unter Umständen möglich auf andere (fremde) Webseiten auf dem Server zuzugreifen. Stellen Sie sich vor Sie sind ein Internet-Shop Besitzer, der von seiner Webseite leben muss. An einem Montag morgen surfen Sie wie immer Ihre Webseite an, nur diesmal bekommen Sie von Ihrem Browser (in dem Fall Firefox) diese Meldung. Ihr Tag dürfte gelaufen sein.

Die folgenden 9 Punkte sollten Sie umgehend umsetzen, wenn Ihre Webseite erfolgreich angegriffen und geentert wurde:

  1. Beten Sie, dass Sie noch ein Backup von Ihrem Projekt besitzen. Für Joomla empfehlen wir die kostenfreie Komponente Akeeba Backup.
  2. Schließen Sie Ihre Seite ab! Blockieren Sie alle Anfragen von Außen. Zum Beispiel mit folgendem Eintrag in Ihrer .htaccess Datei:
    Order deny,allow
    Deny from all
    Allow from 81.169.244.4

    Vorausgesetzt natürlich, daß Sie Zugriff darauf haben. Damit Sie Ihre Backups hochladen können tragen Sie dort Ihre IP Adresse ein, mit der Sie sich gerade im Internet bewegen. So haben ausschließlich Sie Zugang zur Webseite.

    Nachdem alles bereinigt ist und Sie die IP-Adresse des Angreifers kennen, sperren Sie diese explizit aus:

    Order deny,allow
    Deny from 221.194.95.70

    Für Apache ab Version 2.4.7 verwenden Sie folgende Syntax:

    < RequireAll >
    Require all granted  #gestattet erst einmal den Zugriff für alle
    Require not ip 221.194.95.70  #Hier werden die entsprechenden IP-Adressen ausgesperrt
    < /RequireAll >

    Sie können komplette IP-Bereiche sperren. Hier einige nützliche Beispiele:
    240.0.0.0/4 sperrt von 240.0.0.0 bis 255.255.255.255
    10.0.0.0/8 sperrt von 10.0.0.0 bis 10.255.255.255
    100.64.0.0/10 sperrt von 100.64.0.0 bis 100.127.255.255
    172.16.0.0/12 sperrt von 172.16.0.0 bis 172.31.255.255
    198.18.0.0/15 sperrt von 198.18.0.0 bis 198.19.255.255
    169.254.0.0/16 sperrt von 169.254.0.0 bis 169.254.255.255
    192.0.0.0/24 sperrt von 192.0.0.0 bis 192.0.0.255
    192.88.99.0/24 sperrt von 192.88.99.0 bis 192.88.99.255

    Sie können eine von Hand gepflegte, regelmäßig aktualisierte IP-Liste gesperrter Adressen herunterladen. Es sind fast keine IP-Bereiche aus Deutschland dabei, auch der Googlebot wird nicht ausgesperrt. Ein deutscher Webserver der Brutforce Angriffe fährt, ist enthalten. Alle aufgeführten IP-Adressen haben massive Angriffsversuche ausgeführt.

    Wenn Sie Zugriff auf den Server haben, können Sie die IP Adresse per IPtables sperren und zwar dauerhaft. Mit diesem Befehl sperren Sie IP Adressen per SSH:

    iptables -A INPUT -s IP-Adresse -j DROP

    Mit diesem Befehl entsperren Sie IP-Adressen

    iptables -D INPUT -s IP-Adresse -j DROP

    Mit diesem Befehl sehen Sie alle bereits gesperrten IP-Adressen:

    iptables -L INPUT

    Wenn der Angreifer die Attacke von seinem PC startet ist es sehr wahrscheinlich, dass er von seinem Provider eine dynamische IP bekommen hat. Dann läuft diese Maßnahme ins Leere, da der Angreifer sich nur neu ins Internet einwählen muss um eine neue IP zu bekommen. Oft sind die Angreifer aber Webserver mit festen IP-Adressen.

  3. Ändern Sie alle Ihre Passwörter (zum Beispiel SSH und FTP-Zugangsdaten) und vergeben Sie sichere Passwörter.
  4. Finden Sie den Weg, wie der Angreifer Ihre Webseite infiltrieren konnte. Meistens hilft das Durchsehen der Server Logfiles.
  5. Beheben Sie in den Backupfiles die Sicherheitslücke, zum Beispiel indem Sie Ihr CMS aktualisieren.
  6. Aktualisieren Sie auch alle Module und/oder Plugins, die Sie zusätzlich installiert haben.
  7. Ändern Sie die Zugangsdaten zur Webseite und vergeben Sie ein sicheres Passwort.
  8. Schützen Sie den Administrationsordner mit einem .htaccess Passwortschutz.
  9. Sperren Sie den User 'root', wenn Sie SSH Zugriff haben.
Schwachstellen in gängigen Browsern

Diese Aufstellung ist für Joomla gedacht, sie sollte aber auch bei anderen Content Manegement Systemen wie Drupal oder Wordpress hilfreich sein. Google hat zu dem Thema dieses Video bereitgestellt.

Wir empfehlen generell die auf dem PC/laptop/tablet/smartphone installierte Software aktuell zu halten. Zum Beispiel Ihren Browser, auch hier lauern Gefahren wie das Schaubild der gefundenen Sicherheislücken in gängigen Browsern zeigt.

Sicher kennen Sie Meldungen wie: "Adobe stopft 35 Sicherheitslücken in Flash". Weil der Adobe Flash Player bei Nutzern so beliebt und weit verbreitet ist, steht er auch bei Hackern hoch im Kurs. Selbst Adobe rät mittlerweile zur Nutzung von HTML5 an Stelle von Flash. Wenn Sie um die Nutzung von Flash nicht umhin kommen, halten Sie die Software zumindest aktuell!

Sichere Passwörter - Wie muss ein sicheres Passwort beschaffen sein?

Die Hashcat Benutzeroberfläche

Passwörter sichern die Zugänge zu Ihrem Webserver / Ihrer Webseite. Daher sind Sie gut beraten, wenn Sie die nachfolgenden Ratschläge alle beherzigen. Damit Sie verstehen warum unsere Tips so wichtig sind, erläutern wir vorher die Möglichkeiten eines potentiellen Angreifers.

Wenn wieder einmal eine große Webseite gehackt wird, fallen den Angreifern viele Daten in die Hände. Benutzername und Passwort werden in den meisten Fällen in verschlüsselter Form in der Datenbank abgelegt. Mathematisch ist es unmöglich diesen Hashwert zurückzurechnen. Wenn ein Angreifer an die so genannten Passwort Hashes gelangt, kann er aber folgendes tun:

  1. Er probiert jede mögliche Kombination durch, auch Brute Force Attacke genannt. Das macht der Hacker natürlich nicht von Hand, das Script Kiddie von heute nimmt dazu John the Ripper oder besser noch Hashcat. Mit Hashcat können Sie die Passwörter mit Ihrer CPU errechnen lassen, oder mit Ihrer GPU. Das ist der Chip Ihrer Grafikkarte. Grafikkarten sind von Haus aus darauf ausgelegt, viele Prozesse parallel zu berechnen. Wenn der Angreifer mit einer Garfikkarte arbeitet, kann er je nach Modell bis zu 1.000.000! Kombinationen pro Sekunde vergleichen. Sie denken, WOW das ist viel? Handelt es sich um einen (veralteten) MD5 Hash, gehen sogar mehrere Hundert Millionen Passwörter pro Sekunde. Diese Geschwindigkeit wurde mit dem Grafikkartenmodell NVIDIA GeForce GTX 580 erzielt. Es gibt aber deutlich schnellere Karten.

  2. Wenn die erste Angriffsmethode nicht funktioniert kommt der Wörterbuchangriff, die so genannte "dictionary attack". Hierbei bedient sich der Angreifer diverser Wortlisten. Das Programm Hashcat nimmt jedes Wort aus der Liste bildet den Hashwert und vergleicht diesen mit dem vorgegebenen (erbeuteten) Hashwert. Wenn dieser nicht übereinstimmt kommt das nächste Wort dran. Das ist aber noch lange nicht alles. Mit einer bestimmten Konfiguration (Masken und Regeln) und viel Hirnschmalz ist es auch möglich schwierige Passwörter heraus zu bekommen. Wir haben von einem Kunden 250 Passwort Hashes aus der Datenbank extrahiert. Uns war es möglich 144 davon zu ermitteln, dabei waren durchaus auch anspruchsvolle Passwörter.

So muss ein sicheres Passwort beschaffen sein

Wenn Sie diese 7 einfachen Regeln beachten machen Sie es dem Angreifer richtig schwer:

  1. Das Passwort muss mindestens aus 10 Zeichen bestehen. Das ist das absolute Minimum, mehr ist in diesem Fall immer besser. Das BSI empfielt 12 Stellen! Große Anbieter haben reagiert. Bei Amazon, Paypal und Ebay zum Beispiel, können Sie Passwörter mit einer Zeichenlänge von 64 Stellen eingeben. Nutzen Sie diese Möglichkeit!
  2. Das Passwort muss mindestens einen Großbuchstaben, Kleinbuchstaben, eine Ziffer und ein Sonderzeichen enthalten.
  3. Das Passwort darf auf keinen Fall ein Sinn ergebendes Wort sein, auch Varianten wie "Torwart22" oder "Biene22121999" sind unsicher!
  4. Benutzen Sie keine Tastaturmuster wie "asdf123456"
  5. Hängen Sie Sonderzeichen und/oder Ziffern nicht an ein ansonsten einfaches Passwort an, wie "Fahrrad$4".
  6. Verwenden Sie jedes Passwort nur ein einziges Mal.
  7. Zu guter Letzt: Ändern Sie Ihre Passwörter regelmäßig.

Diese Regeln sind natürlich mit Aufwand verbunden. Vor allem besteht die Schwierigkeit darin, sich das Passwort auszudenken und zu merken. Wir raten Ihnen diesbezüglich zu Roboform (kostenpflichtig aber gut), dies ist ein Passwort Verwaltungsprogramm. Sie können damit auch sichere Passwörter generieren. Das Schöne an Roboform ist, Sie können das Programm als Browserplugin verwenden und müssen Passwörter gar nicht mehr von Hand eingeben. Das BSI empfielt das kostenfreie Programm KeePass.

Passwortmanager

Hier können Sie die Passwortmanger herunterladen:
Roboform
KeePass

Wenn Sie nur wenig im Internet unterwegs sind, benötigen Sie nicht unbedingt softwaregestützte Hilfe. Es gibt einen einfachen Weg sichere Passwörter zu generieren, ohne Programm. Bilden Sie einen Satz wie diesen hier:"Vor meinem Haus stehen 2 Tannen, (die extrem große Zapfen haben!)". Von diesem Satz nehmen Sie nun jeweils die Anfangsbuchstaben, in unserem Beispiel wäre dies folgendes Passwort: VmHs2T,(degZh!) Verwenden Sie einen ausgedachten Satz, kein Zitat oder eine Textstelle aus einem Buch.

Maximusweb Online Passwortcheck

Ist Ihr Passwort sicher genug? Machen Sie den Maximusweb Passwortcheck. Wir garantieren, dass kein Passwort welches Sie eingeben, gespeichert wird!

Die verschiedenen Angriffsarten

Hier stellen wir Ihnen die gängigsten Angriffsarten vor. Es gibt viele Wege nicht nur nach Rom. Auch Ihre ungeschützte Webseite, bietet einige Möglichkeiten für potentielle Angreifer, von denen wir Ihnen einige hier vorstellen möchten.

Wenn Sie zu Testzwecken einige Szenarien nachstellen möchten, machen Sie dies bitte ausschließlich auf einem eigenen PC/Server! Wir haften nicht für Schäden, welche aus unsachgemäßem Gebrauch der hier dargestellten Informationen resultieren. Wenn Sie keinen Server zur Verfügung haben, können Sie sich hier austoben: https://www.hackthissite.org.

Es stellt eine Straftat nach § 202a StGB und nach § 202b StGB dar, wenn Sie eine der Techniken bei fremden Webseiten anwenden.

Als erstes gehen wir auf ein weit verbreitetes Problem ein, die SQL-Injections (dt. SQL-Einschleusung).

SQL-Injections (dt. SQL-Einschleusung)

Viele Angriffe zielen auf die Datenbank Ihrer Webseite ab. Es gibt viele unterschiedliche Datenbank Systeme wie zum Beispiel Oracles MySQL, die Open Source Datenbank PostgreSQL oder NexusDB, eine Datenbank für Delphi. Wir fokussieren uns auf Joomla, welches MySQL verwendet.

Oft werden Content Management Systeme wie Joomla oder Typo 3 angegriffen, indem durch mangelnde Filterung von Benutzereingaben oder mangelnder Maskierung versucht wird, eine Sicherheitslücke auszunutzen. Oft sind es Benutzernamen und Passwort Hashes, welche die Angreifer bei erfolgreicher SQL-Injection abgreifen und dann in aller Ruhe cracken können.

Wie findet ein Angreifer seine Opfer?
Eine mögliche Anwtort sind Google Dorks. Google Dorks sind zielgerichtete Suchanfragen, die an Google gestellt werden. Ein Google Dork kann zum Beispiel so aussehen:

inurl:"index.php.php?id="
Hier werden Urls gesucht, bei denen bestimmte dynamische Parameter an die Url angehängt werden.

Die gefundenen Webseiten werden nach und nach Tests unterzogen. Ein einfacher Test ist zum Beispiel, dass der Angreifer der Datenbank eine "Frage" in Form einer Query stellt. Wenn die Datenbank darauf antwortet (was Sie nicht darf), ist dies für den Eindringling ein erster Hinweis, dass die Datenbank nicht entsprechend gesichert ist. Dann kommt die nächste Query.


Für das CMS Joomla gibt es viele, viele Erweiterungen in Form von Komponenten, Modulen und Plugins. Wir raten unseren Kunden immer dazu, möglichst alle Anforderungen mit den Bordmitteln von Joomla zu realisieren. Manchmal geht es aber nicht anders. Dann müssen Sie überprüfen, ob die Erweiterung sicher und aktuell ist. Es gibt für Joomla in der Version 1.5 (die Sie hoffentlich nicht mehr verwenden!) eine Galerie Komponente, die Pony Galerie. Wenn Sie diese Galerie installieren, implementieren Sie die Sicherheitslücke gleich mit. Ein Angreifer braucht nur folgenden Code an Ihre normal Url anhängen und schon bekommt er von der ungeschützten Datenbank Benutzernamen und Passworthashes frei Haus geliefert:

http://www.IHRE-WEBSEITE.de/index.php?option=com_ponygallery&Itemid=x&func=viewcategory&catid=%20union%20select%201,2,3,concat(char(117,115,101,114,110,97,109,101,5,username,char(32,112,97,115,115,119,111,114,100,5,password),5,0,0%20from%20jos_users/*

So schnell kann es mit der Sicherheit Ihrer Webseite geschehen sein. Bitte ziehen Sie jetzt nicht los und geben diesen String bei jeder Joomla Seite ein, die Ihnen in die Finger kommt. Zum Einen ist diese Sicherheitslücke veraltet und funktioniert in dieser Form nicht mehr. Zum Anderen : Es ist strafbar!


XSS / Cross-Site-Scripting

XSS ist doch nicht gefährlich... Genau das habe ich bis vor einiger Zeit auch noch gedacht. 2 Methoden von XSS sind hauptsächlich in Gebrauch:

Dauerhaftes XSS

Die dauerhafte Version ist wirklich übel. Bei dieser Methode wird ein Agriffscode an Ihr ungeschütztes Gästebuch übergeben und in der Datenbank abgelegt. Anschließend wird es ausgeliefert und zwar an jeden Benutzer. Das passiert, wenn der Userinput nicht vor der Verarbeitung validiert wird. Übergeben wird der Schadcode zum Beispiel mit folgendem Java Script Gastebucheintrag:

document.location = "http://www.schadcode-verbreitung.com";
Wenn diese Vorgehensweise bei Facebook funktionieren würde, könnte ein Angreifer sämtlichen Traffic auf seine Webseite umleiten, oder über Facebook Schadcode verbreiten.

Temporäres XSS

Bei der temporären Methode wird der Schadcode durch einen präparierten Link (Zum Beispiel auf eine gefälschte Facebook Login Seite) verbreitet, der per Spam an Millionen Menschen verschickt wird. Damit der Link nicht auffällt verwenden viele Angreifer so genannte Url-Shortener, welche die eingegebene WWW-Adresse abkürzen. Klickt ein ahnungsloses Opfer auf einen dieser Links, kann der Angreifer unter Umständen einen Keylogger installieren.


LFI / RFI – Local / Remote File Inclusions (Lokales und Entferntes Einschleusen von Code)

PHP ist eine sehr weit verbreitete und gute Skriptsprache. Leider bietet auch PHP potentiellen Angreifern Möglichkeiten um zum Beispiel an sensible Server Dateien zu gelangen.

LFI Local File Inclusion

Bei der LFI Methode kann ein Angreifer lokalen Code in ein Script einschleusen. Mit dieser Methode kann ein Angreifer an sensible Dateien gelangen, wie Config- und Passwort- Dateien. Es gibt in PHP folgende Anweisungen, mit denen PHP Scripte zusätzlich in laufende Scripte eingebunden werden können: include, require, Include_once sowie require_once. Wenn Sie es zulassen, dass ein Benutzer ungeprüfte Benutzereingaben absenden kann die der Server anschließend verarbeitet und ausführt, entsteht die Sicherheitslücke.

Die Webseite www.webmaster-tipps.de veranschaulicht dies mit einigen Code Beispielen.


CSRF - Cross Site Request Forgery - Internernetseiten übergreifende Anfragen Fälschung

Wenn ein in Joomla angemeldeter Benutzer in einem anderen Browsertab auf eine Webseite surft, welche ein modifiziertes Bild enthält (einfache CSRF Methode), kann dem Benutzer ein HTTP-Request untergeschoben werden, um den User von Joomla abzumelden:

http://www.IHRE-JOOMLA-WEBSEITE.de/login?task=user.logout

Dies ist nicht weiter schlimm, was passiert aber wenn dem als Administrator angemeldeten Benutzer folgender HTTP-Request untergeschoben wird:

http://www.IHRE-JOOMLA-WEBSEITE.de/administrator/index.php?option=com_users&task=delete

Das Benutzerkonto des Administrator wird gelöscht. Genauso kann der Eindringling aber auch ein neues Benutzerkonto erstellen:

http://www.IHRE-JOOMLA-WEBSEITE.de/administrator/index.php?option=com_users&task=user.add&username=angreifer&password=angreiferpasswort

Wenn Sie Ihr Administrator Verzeichnis per .htaccess Datei sichern, funktioniert diese Methode natürlich nicht.

Wie können Sie sich vor CSRF schützen?

Joomla hat seit der Version 2.5 und 3.1 einen Schutz implementiert. Bei Post und Get Abfragen wie sie in Formularen verwendet werden, implementiert Joomla eine zufällige Zeichenkombination (Token), welche für jeden Benutzer und jede Session zufällig generiert wird. Da dem Angreifer dieses Token nicht bekannt ist, scheitert der Angriff. Webmaster können mit dieser Methode Ihre Formulare schützen. Dazu müssen Sie einfach bei einem Post Request zum Beispiel folgende Zeile in das Formular eintragen (innerhalb der PHP Tags):

php echo JHtml::_( 'form.token' );

Dadurch gibt das Formular etwas in dieser Form aus:

input type="hidden" name="A2sW45678fraaqGGf1SjmR67890aJnt64" value="1"

Die Zeichenfolge A2sW45678fraaqGGf1SjmR67890aJnt64 ist dem Angreifer nicht bekannt und somit wird die Anfrage nicht authentifiziert. Wenn Sie dazu weitere Fragen haben, kontaktieren Sie uns gerne.

Als Betreiber einer Webseite können Sie aber noch mehr für Ihre (Webseiten) Sicherheit tun:

  1. Wenn Sie Ihre Seite gerade bearbeiten, sprich eingeloggt sind: Surfen Sie nicht auf andere Webseiten. Große bekannte Seiten wie Heise.de oder Chip.de sollten Sie ansteuern können. Vor dem Besuch anderer Seiten raten wir im eingeloggten Zustand ab.
  2. Wenn Sie mit dem Bearbeiten Ihrer Webseite fertig sind, müssen Sie sich unmittelbar danach ausloggen.
  3. Bleiben Sie nicht eingeloggt, wenn Sie Mittagspause machen, oder die Seite aus anderen Gründen länger nicht bearbeiten werden.
  4. Schauen Sie immer mal wieder im Browser, ob die Url (Webadresse) auf welcher Sie sich gerade befinden, auch wirklich Ihre Url ist.

Aktuelle Auslastung

Webdesign

90 Prozent Auslastung im Bereich Webdesign.

SEO

65 Prozent Auslastung im Bereich SEO.

E-Commerce

5 Prozent Auslastung im Bereich E-Commerce.

Usability

0 Prozent Auslastung im Bereich Usability.