[TYPO3-german] Wie stelle ich "zuverlässig" fest, ob meine TYPO3-Installation gehacked wurde?

David Bruchmann david at bruchmann-web.de
Mon Mar 9 16:18:43 CET 2009



----- Ursprüngliche Nachricht -----
Von:        Daniela Waranie <typo3-community at gmx.de>
Gesendet:   Montag, 9. März 2009 15:19:31
An:         typo3-german at lists.netfielders.de
CC:
Betreff:    Re: [TYPO3-german] Wie stelle ich "zuverlässig" fest, ob 
meine TYPO3-Installation gehacked wurde?
Hallo Daniela,
> 
> Danke für Deine Tipps.

Nun, am Ende profitieren wir vielleicht alle davon.

> 
> Zugriffszeiten:
> Die Zugriffszeiten sind in der Tat sehr interessant. Beim Manipulieren 
> der Zeiten fällt mir nur die Änderung der Systemuhr ein, um dann die 
> Dateiänderung exakt zum Originalzeitpunkt durchzuführen. Hier wäre es 
> toll wenn das System bei jeder Uhrzeitänderung auf sich aufmerksam 
> macht. Dann kann man die Zugriffszeiten als Prüfstein verwenden. Für 
> beides wüsste ich nicht genau, wie es am besten machen sollte (weil auch 
> das ein Hacker umgehen könnte).

Nun, die Systemzeit umzustellen geht natürlich auch. Ich dachte daran, 
daß man per Hex-Editor einfach die Dateieigenschaften ändert - dort 
werden die Zugriffszeiten auch gespeichert. Wenn jemand viele Änderungen 
durchführt währe Dein "Rezept" natürlich einfacher, würde aber ein 
"Zeitloch" bei den normalen Seitenzugriffen in den Logfiles hinterlassen.
Bei den Datenbankzugriffen werden auch die Zeitstempel gespeichert, 
sofern sie aus TYPO3 heraus erfolgen - bei anderem Zugriff (z.B. per 
PhpMyAdmin) wird nur der Zeitpunkt der letzten Tabellenänderung 
gespeichert. Hier könnte man einen Vergleich durchführen, ob die letzte 
Tabellenänderung auch mit einer TYPO3-Änderung einhergeht.

> 
> Log-Dateien / Apache-Log-Dateien:
> Was genau wäre aus Deiner Sicht verdächtig?
> 

Verdächtig ist alles was nicht der reinen Frontendausgabe dient 
(allerdings läßt sich per SQL-Injection auch das Frontend missbrauchen 
um an Backend-Daten zu kommen).
Welche Dateien bzw. Ordner im Einzelnen auf Backendzugriffe hinweisen 
müßte man mal testen bzw. aus den Logdateien auslesen, wenn man mal 
aktiv war.
Bei dem letzten Sicherheitsloch waren Zugriffe mit "jumpurl" verdächtig.
Innerhalb von TYPO3 gibt es zwar klar abgegrenzte Aufgabenbereiche, die 
sich auch in der Ordnerstruktur wiederspiegeln, aber einzelne 
Erweiterungen können auch Dateien einbinden, die darüber hinausgehen.
Entscheidend sind hier die Dateien, die eine Ausgabe bewirken, andere 
werden in den Apache-Logs nicht erscheinen.

> Login-E-Mail:
> Interessante Idee. Auf den Server habe ich nicht so viel einfluss, da es 
> eine Shared-Host-Umgebung ist. Aber TYPO3 könnte ich schon "abdichten" - 
>   wie genau geht das in TYPO3?
> 

In TYPO3 kannst Du einmal Mails erhalten, wenn jemand sich generell 
einloggt, das wird für jeden Benutzer einzeln bei 
"Benutzerwerkzeuge->Einstellungen" eingestellt, aber informiert nur den 
Inhaber der dort hinterlegten E-Mail.

Ausserdem kann man sich informieren lassen, wenn jemand das Installtool 
startet. Die Einstellungen dazu finden sich im Installtool selbst:
[BE][warning_email_addr]
[BE][warning_mode]
Hier kannst Du auch einstellen, daß Du informiert wirst, wenn sich ein 
beliebiger Backendbenutzer einloggt.

> ------------------------------------------------------
> Die restlichen Punkte fallen in meinen Augen alle unter Vorsichtsmaßnahmen:
> 
> Zugriffsbeschrängungen:
> Jedes Script bekommt nur die Zugriffsrechte, die es benötigt. Das heißt, 
> nicht jedes Script braucht alle Datenbank-Tabellen und auch nicht immer 
> schreibend Zugriff.

Währe sinnvoll hier auch verschieden MySQL-Konten verwalten zu können, 
aber das ist wie gesagt nicht vorgesehen. Eventuell kann man so etwas 
per dbal (Database Abstraction Layer, was sowohl eine Technik, ein 
integriertes Modul bezeichnet) lösen, habe ich mir aber nicht angesehen.

> 
> SQL-Injection:
> Hier ist TYPO3 schon sehr gut aufgestellt. Problematischer sind vorallem 
> die Extensions, ohne intensive Einarbeitung in den Code dürfte man 
> eigentlich keine Extension übernehmen. Aus betriebswirtschaftlicher 
> Sicht ist also ein gewisses Grundvertrauen in die Community notwendig 
> und angebracht. Sicher sein, kann man sich jedoch nie. Auch der Core hat 
> immer wieder Lücken - und dieser ist wohl am häufigsten geprüft. Sobald 
> einmal Zugriff auf das Dateisystem besteht, kann beliebiges 
> SQL-Statement abgesetzt werden.

Klar, ist die Festung einmal eingenommen, hilft nur noch Schadensbegrenzung.

> 
> Frame-Script:
> Wie verhinderst Du das? Außer mit JavaScipt fällt mir da nichts ein - 
> und das ist alles andere als "zuverlässig"?
> 

Naja, JavaScript oder VB. Teilweise habe ich auch gesehen, daß *.pl 
(Perl) oder Java-Dateien an den Client ausgeliefert werden - aber gerade 
bei *.pl weiss ich nicht wie das funktioniert, oder ob dort überhaupt 
tatsächlich Perl drin notiert war (schätzungsweise waren das JS- oder 
CSS-Dateien mit anderer Dateisuffix).
Die meisten Hacker-Skripts werden aber wohl JS verwenden, daher liegst 
Du schon richtig.

> Aufruft via Script verhindern:
> Wie machst Du das?
> 

Hab lange kein JS mehr verwendet, aber ich glaube man kann per JS den 
Caller sowohl von Fenstern als auch von Funktionen feststellen und 
entsprechend darauf reagieren.

Viele Grüße
David


More information about the TYPO3-german mailing list