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: Cracker Tracker

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Cracker Tracker
    am: 17. Juli 2009, 14:58:23
    Zitat
    Der Stand alone CrackerTracker ist etwas für alle PHP Programmierer: Er bringt das Schutzsystem vor SQL Injections und gängigen Wurmattacken (die versuchen über typische Exploits oder Lücken in PHP Skripten in die Datenbank einzudringen) in jedes PHP Skript!

    Die Erkennungstechnologie des CrackerTrackers wird hierbei verwendet, um Wurmattacken bereits vor Ihrem PHP Skript zu erkennen und zu stoppen.

    habe das in einem anderen Forum gefunden und nachdem Sicherheit immer wichtiger ist , bei den vielen bösen Jungs da draussen.

    Erklärung zum Einbau steht am Anfang.

    Zudem einen Content anlegen mit dem Hinweis, dass ein Fehler aufgetreten ist und die ID einsetzen (xxx ersetzen, fast ganz unten im code)

    hier der code:

    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
    $Id: pt_cracker_tracker.php, v 1.2 2009/03/12 06:07:13 avenger Exp $

    Special version for xtCommerce, Gambio/Gambio GX   GX, ecombase-Shop

    Changes:

    Make check independent of character case (PHP 4 save)
    Also check for hack-attempts via HTTP_POST!
    Implement white-list to ignore certain POST parameters!
    Send eMail to Shop/Onlineshop / Onlineshop admin on hack attempt  (info@Server_name.tld)
    Implement "flood-control" to avoid too many eMails.

    Copyright (c) 2009 avenger

    -----------------------------------------------------------------------------------------
    based on:

    Cracker Tracker Protection System
    Created by: Christian Knerr - www.cback.de
    phpBB Users: Please use our complete phpBB2 Mod!
    Version: 2.0.0

    Copyright (c) 2009 Seipt.org Software

    Special version for XT:Commerce

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


    //Set to any eMail-address if not to use the admin eMail-address
    $email_recipient='';
    //List of post-parameters names to ignore. (enclosed by '.')
    //Allows the specification of POST-parameter names, which cause false alerts, and should be ignored.
    $ignore_post_par='.blabla.comments.review.keywords.email_address.password.email.send_to.categories_id.manufacturers_id.pfrom.pto.x.y.';
    $ignore_post_par.='.firstname.lastname.company.street_address.suburb.postcode.city.telephone.fax.confirmation.';

    /*
    Allow 2 paraemeters in URL [Adresse die im Browser eingegeben wird]:

    'p'    =>    Specifies main admins password. This is used to mark current user as admin, to completely bypass hack check;
    Either the MD5-encrypted or the plain password can be used.
    Using the MD5-encrypted version of the plain password is more secure...
    Online MD5-encryption of your password can be made here: http://www.iwebtool.com/md5

    'f'    =>    Force hack check, even if current-user is admin!
    This allows for checking of false alerts.
    Especially to determine, which stop-words caused the alert, where in the GET-/POST-Data.

    E.g.:

    http://www.Shop/Onlineshop / Onlineshop_Server.de/index.php?p=testpasswort&f=true
    http://www.Shop/Onlineshop / Onlineshop_Server.de/index.php?p=2fae046dbb7ddc1d49b96f393a7a8269&f=false

    In order to be able to access session-data and the admin-password, "pt_cracker_tracker.php" needs to be
    included later in "includes/application_top.php".

    Include

    //Avenger
    include('pt_cracker_tracker.php');
    //Avenger

    before(!)

    // check the Agent

    in "includes/application_top.php".

    */


    $res=mysql_query('SELECT customers_email_address,customers_password FROM '.TABLE_CUSTOMERS.' WHERE customers_id=1');
    if (mysql_numrows($res))
    {
        $res=mysql_fetch_array($res);
        $pw=$res['customers_password'];
        $email=$res['customers_email_address'];
    }
    $password_Text='admin_password';
    $password_get=$_GET['p'];
    if ($password_get)
    {
        unset($_SESSION[$password_Text]);
    }
    $password=$_SESSION[$password_Text];
    if (!$password)
    {
        $password=$password_get;
    }
    if (isset($password))
    {
        $_SESSION[$password_Text]=$password;
        $is_admin=$pw==$password;
        if (!$is_admin)
        {
            $is_admin=$pw==MD5($password);
        }
    }
    if ($is_admin)
    {
        $force_processing_Text='force_processing';
        $force_processing_get=$_GET['f'];
        if ($force_processing_get)
        {
            unset($_SESSION[$force_processing_Text]);
        }
        $force_processing=$_SESSION[$force_processing_Text];
        if (!$force_processing)
        {
            $force_processing=$force_processing_get;
        }
        $_SESSION[$force_processing_Text]=$force_processing;
        if (!$force_processing)
        {
            return;
        }
    }
    $cback_TRACK=$_SERVER['QUERY_STRING'];
    if ($_POST)
    {
        //Check also for attacks via POST
        $post_par=array();
        while (list($key,$value)=each($_POST))
        {
            if (strpos($ignore_post_par,'.'.$key.'.')===false)
            {
                $post_par[]=$key.'='.$value;
            }
        }
        if (sizeof($post_par)>0)
        {
            $cback_TRACK.=' -- POST-DATA: '.implode('&',$post_par);
        }
    }
    if ($cback_TRACK)
    {
        $cback_TRACK_0=$cback_TRACK;
        $cback_TRACK_0_l=strtolower($cback_TRACK);
        $cback_TRACK=$cback_TRACK_0_l;
        $cback_WORDS=array(
        ' chmod',
        ' chr',
        ' cmd',
        ' cp',
        ' echr',
        ' getenv',
        ' like',
        ' mcd',
        ' mdir',
        ' mrd',
        ' nigga',
        ' passwd',
        ' rm',
        ' rush',
        ' union',
        ' wget',
        '$_get',
        '$_request',
        '$get',
        '$request',
        '&aim',
        '&icq',
        '.bash_history',
        '.conf',
        '.eml',
        '.history',
        '.htpasswd',
        '.inc',
        '.inc.php',
        '.js',
        '.jsp',
        '.jsp',
        '.pl',
        '.system',
        '/bin/',
        '/bin/echo',
        '/bin/kill',
        '/bin/mail',
        '/bin/ps',
        '/chgrp',
        '/chown',
        '/etc/groups',
        '/etc/gshadow',
        '/etc/passwd',
        '/etc/password',
        '/etc/shadow',
        '/home/ftp',
        '/home/www',
        '/perl',
        '/robot.txt',
        '/servlet/con',
        '/usr/bin',
        '/usr/bin/id',
        '/usr/x11r6/bin/xterm',
        '<?php',
        '<img ',
        '<Script [ Programm ]',
        '<Script [ Programm ]>',
        '?>',
        '_php',
        'admin_',
        'bash_history',
        'bin/nasm',
        'bin/python',
        'bin/tclsh',
        'cgi-',
        'chgrp ',
        'chgrp(',
        'chmod ',
        'chmod(',
        'chmod(',
        'chmod=',
        'chown ',
        'chown(',
        'chr ',
        'chr(',
        'chr=',
        'chunked',
        'cmd ',
        'cmd=',
        'config.php',
        'cp ',
        'cp(',
        'db_mysql.inc',
        'diff ',
        'drop ',
        'echr ',
        'echr(',
        'echr=',
        'esystem ',
        'esystem(',
        'file\://',
        'fopen',
        'ftp.exe',
        'fwrite',
        'g\+\+',
        'getenv ',
        'getenv',
        'grep ',
        'grep(',
        'halt ',
        'http/1.',
        'http_',
        'http_host',
        'http_php',
        'http_user_agent',
        'insert into',
        'javaScript [ Programm ]\://',
        'kill ',
        'kill(',
        'killall',
        'like ',
        'locate ',
        'locate(',
        'lsof ',
        'mcd ',
        'mcd(',
        'mcd=',
        'mdir ',
        'mdir(',
        'mod_gzip_status',
        'motd ',
        'mrd ',
        'mrd(',
        'mrd=',
        'mv ',
        'mv(',
        'nc.exe',
        'new_password',
        'nigga ',
        'nigga(',
        'org.apache',
        'passwd ',
        'passwd(',
        'perl ',
        'php_',
        'phpinfo()',
        'ping ',
        'powerdown ',
        'reboot ',
        //'rm ',
        'rm(',
        'rmdir ',
        'rmdir(',
        'root()',
        'rush ',
        'rush=',
        'secure_site,ok',
        'select ',
        'select from',
        'Server-info',
        'Server-status',
        'servlet',
        'sql=',
        'telnet ',
        'traceroute ',
        'uname\x20-a',
        'union ',
        'union(',
        'union=',
        'update ',
        //'vi ',
        'vi(',
        'wget ',
        'wget(',
        'window.open',
        'wwwacl',
        'xp_availablemedia',
        'xp_cmdshell',
        'xp_enumdsn',
        'xp_filelist',
        '~ftp',
        '~nobody',
        '~root'
        );
        $stop_words=sizeof($cback_WORDS);
        $empty_string='';
        $white_space_terms=array(' ','%20','+');
        $hack_attempt=false;
        $send_mail=true;
        for ($i=0,$n=sizeof($white_space_terms);$i<$n;$i++)
        {
            if ($i)
            {
                $cback_TRACK=str_replace($white_space_terms[$i],' ',$cback_TRACK_0_l);
            }
            $cback_CHECK=str_replace($cback_WORDS, $empty_string, $cback_TRACK);
            $hack_attempt=$cback_TRACK != $cback_CHECK;
            if ($hack_attempt)
            {
                //Flood control: check if already attacked from this IP. Do not send eMail if true...
                $cback_IP = $_SERVER['REMOTE_ADDR'];
                $attack_ips_Text='attack_ips';
                $attack_ips=$_SESSION[$attack_ips_Text];
                if ($attack_ips)
                {
                    if (in_array($cback_IP,$attack_ips))
                    {
                        $send_mail=false;
                    }
                }
                else
                {
                    $attack_ips=array();
                }
                if ($send_mail)
                {
                    $attack_ips[]=$cback_IP;
                    $_SESSION[$attack_ips_Text]=$attack_ips;
                    $stop_words_found='';
                    for ($stop_word=0;$stop_word<$stop_words;$stop_word++)
                    {
                        $word=rtrim($cback_WORDS[$stop_word]);
                        $pos=strpos($cback_TRACK,$word);
                        if ($pos!==false)
                        {
                            if ($stop_words_found)
                            {
                                $stop_words_found.='<br>';
                            }
                            $stop_words_found.=$word.'/'.$pos;
                        }
                    }
                }
                break;
            }
        }
        if ($hack_attempt)
        {
            if ($send_mail || $is_admin)
            {

                //Send eMail to Shop/Onlineshop / Onlineshops' admin on hack attempt

                $cback_AGENT = $_SERVER['HTTP_USER_AGENT'];
                $subject = "Hack-attempt on ".HTTP_SERVER.DIR_WS_CATALOG;
                $message = "<html>".
                                     "<head>".
                                     "<title>".$subject."</title>".
                                     "</head>".
                                     "<body>".
                                     "<p><b>Date: <span style=\"color:Red\">".date('d.m.Y H:i:s')."</span></b></p>".
                                     "<p><b>".$subject."</b></p>".
                                     "<p><b>Hack IP: </b>".$cback_IP."</p>".
                                     "<p><b>Hack HOST: </b>".gethostbyaddr($cback_IP)."</p>".
                                     "<p><b>Hack AGENT: </b>".$cback_AGENT."</p>".
                                     "<p><b>Hack TARGET-SCRIPT:<br><br></b>".basename($_SERVER['SCRIPT_FILENAME'])."</p>".
                                     "<p><b>Hack STRING:<br><br></b>".$cback_TRACK_0."</p>";
                if ($stop_words_found)
                {
                    $stop_words_found="<p><b>Hack STOP-WORDS found:<br><br></b>".$stop_words_found."</p>";
                    $message.=$stop_words_found;
                }
                $message .= "</body>".
                            "</html>";
                if ($email_recipient)
                {
                    $email=$email_recipient;
                }

                $Headers  = "MIME-Version: 1.0\n";
                $Headers .= "Content-type: Text/html; charset=iso-8859-1\n";
                $Headers .= "From: ".$email . $new_line;
                $success=@mail($email, $subject, $message, $Headers);
            }

            if ($is_admin)
            {
                echo $cback_TRACK_0.'<br><br>'.$stop_words_found;
            }
            if ($_SESSION['language']=='german')
            {
        /*        $message="
          Die letzte Shop-Aktivit&auml;t wurde von unserer Schutzsoftware als Angriff interpretiert, und die Ausf&uuml;hrung wurde abgebrochen.<br/><br/>
          Falls es sich dabei um eine falsche Erkennung handelte, bitten wir um Entschuldigung.<br/><br/>
          Es gibt aber leider zu viele 'Hacker', die in Shops eindringen wollen, so dass ein solcher Schutz notwendig ist.<br/><br/>
          Der Grund f&uuml;r diese Erkennung wird uns &uuml;bermittelt, so dass wir eine evtl. falsche Erkennung korrigieren k&ouml;nnen.<br/><br/>
          Wir Danken f&uuml;r Ihr Verst&auml;ndnis.";
        */


                    xtc_redirect(xtc_href_link('shop_content.php', 'coID=xxx' , 'NONSSL'));    

            }
            else
            {
        /*        $message="
          The last Shop/Onlineshop / Onlineshop activity has been interpreted as 'hack-attack' by our security software, and Shop/Onlineshop / Onlineshop execution has been terminated.<br/><br/>
          If this should been a wrong assessment, we apologize for the inconvenience.<br/><br/>
          Unfortunately there are too many 'hackers' around, trying to penetrate Shop/Onlineshop / Onlineshops like our's, so that security measures are necessary.<br/><br/>
          The reason for this security alert will be transmitted to us, so that we will be able to correct a false warning.Erkennung
          We appreciate your understanding!";
        */
     

            xtc_redirect(xtc_href_link('shop_content.php', 'coID=xxx' , 'NONSSL'));

            }

      //      echo $message;

            $file0='xtc_define_global_constants.inc.php';
            $file=DIR_FS_INC.$file0;
            if (file_exists($file))
            {
                include($file);
            }
            else
            {
                $file=INC_PATH.$file0;
                if (file_exists($file))
                {
                    include($file);
                }
            }
            exit();
        }
        unset($email);
    }
    ?>


    Linkback: https://www.modified-shop.org/forum/index.php?topic=1402.0
    Trade Republic - Provisionsfrei Aktien handeln

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Cracker Tracker
    Antwort #1 am: 17. Juli 2009, 15:13:49
    Erst SSEQL-LIB und direkt das nächste Sicherheits-Werkzeug... ich schaff es noch mich selber auszusperren!  :lol:

    Mal schauen, wer das Rennen macht! ;-)

    erichth

    • SSEQ-LIB Contributor
    • Frisch an Board
    • Beiträge: 51
    Cracker Tracker
    Antwort #2 am: 17. Juli 2009, 18:28:07


    Zitat
    Mal schauen, wer das Rennen macht! ;-)

    So wie es aussieht ist es dann ein Rennen zwischen "whitelist" (SSEQ-LIB) und "blacklist" (cracker_tracker). Wissenschaftlich gesehen ist die Sache schon entschieden.

    http://en.wikipedia.org/wiki/Secure_input_and_output_handling

    [EDIT]

    Oh man, also ich werde mal aufzählen, was alles nicht mehr geschützt ist mit dem cracker_tracker:

    * Session-Hijack
    * Session-Fixation
    * Cross-Site-Scripting
    * Cross-Site-Request-Forgery
    * SQL-Injections
    * Mail-Header-Injection
    * Header-Splitting

    Aber man könnte ja Glück haben, und der Angreifer wählt was aus der Liste aus. Darauf hin sieht er eine Bestätigung, dass er was aus der Liste erwischt hat und erkennt vielleicht den hacker_tracker. Er holt sich den Code aus dem Netz, damit hat er die Liste und dann ist alles nur eine Frage der Schwachstelle.

    ds170477

    • Fördermitglied
    • Beiträge: 1.522
    • Geschlecht:
    Cracker Tracker
    Antwort #3 am: 17. Juli 2009, 22:05:19
    @ ericht "*SQL-Injections" ist wohl doch drin:
    http://ctxtra.org/

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Cracker Tracker
    Antwort #4 am: 17. Juli 2009, 22:15:00
    @Erich: Das soll ja nur Ansporn sein, dass dein Modul das Rennen macht! Zumal wir zu dir nen Kontakt haben, cracker-dingens ist nur ein Modul, für mich völlig anonym...  :roll:

    ds170477

    • Fördermitglied
    • Beiträge: 1.522
    • Geschlecht:
    Cracker Tracker
    Antwort #5 am: 18. Juli 2009, 00:11:56
    jetzt zieht es euch die Schuhe aus :!: Solch ein Kommentar von mir :mrgreen:

    Sollte in Zeile 328 $cback_CHECK=str_replace nicht

    $cback_CHECK = str_ireplace stehen :?:

    Sonst wird die Klein/Gross-Schreibung nicht beachtet....Nur für PHP 5 geeignet :!:

    Hab mich jetzt 2 std. lang mit der Materie beschäftigt, ein Link zur Anleitung für den Einbau in die Modi 1.0.2 (für Newbies) würde ich sehr begrüssen 8)

    So jetzt mal Gute Nacht @all

    ds170477

    • Fördermitglied
    • Beiträge: 1.522
    • Geschlecht:
    Cracker Tracker
    Antwort #6 am: 18. Juli 2009, 00:57:16
    Na da wäre noch was:

    Ein weiteres Werkzug zum Prüfen der Sicherheitslücken:

    http://php-ids.org/downloads/

    Und dazu die Benutzungshinweis und Anleitung:

    http://www.net-developers.de/2009/05/23/phpids-intrusion-detection-system/

    And the winner is  :google:

    So is nun jut

      [ Für Gäste sind keine Dateianhänge sichtbar ]

    phpGuru

    • Frisch an Board
    • Beiträge: 94
    Cracker Tracker
    Antwort #7 am: 18. Juli 2009, 14:04:19
    Ist bei mir schon lange aktiv und läuft sehr gut. Man sollte aber auch erwähnen, dass es in erste Linie für das Eingabefeld "Suche" entwickelt wurde.

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Cracker Tracker
    Antwort #8 am: 18. Juli 2009, 14:15:42
    ich habe gerade einen Fehler entdeckt.

    Wenn im ie8 zB der Versandkostenlink angeklickt wird, erhalte ich eine mail mit dem Hinweis, dass thickbox.js wegen dem ".js" einen Attack erkannt hat.

    es erfolgt allerdings keine Anzeige des Hinweises für den Kunden, sondern nur die Mail an den Admin.

    Anonym

    • Gast
    Cracker Tracker
    Antwort #9 am: 18. Juli 2009, 18:18:42
    Der IE8 war auch der Grudn, warum ICH entschieden habe das SSEQ LIB wieder aus dem Shop zu nehmen. Der Stress welcher mit IE6 in vielen Codesegmenten produziert, muss nun nicht auch auf anderem Wege mit IE8 passieren.

    Ich bin vollends von Eure Leistung und dem SSEQ überzeugt und erfreue mich weiterhin an neuen Version die dann auch mach Kontrolle definitiv in den Shop fest integriert werden.

    Was Crack Tracker betrifft, so müsste ich mich hier einlesen, aber dafür habe ich momentan 0,00 Zeit.. Deswegen auch die Sommerpause in Bezug auf weitere Versionen.

    ds170477

    • Fördermitglied
    • Beiträge: 1.522
    • Geschlecht:
    Cracker Tracker
    Antwort #10 am: 18. Juli 2009, 20:19:45
    Abend Christian,

    mit bissel Hilfe hab ich CT installiert und mal antesten lassen.
    Mit Änderung in Zeile 328 alles Bestens :mrgreen:

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Cracker Tracker
    Antwort #11 am: 18. Juli 2009, 20:58:21
    Zitat
    Der IE8 war auch der Grudn, warum ICH entschieden habe das SSEQ LIB wieder aus dem Shop zu nehmen.

    Soso... Arschbacke!  :P

    erichth

    • SSEQ-LIB Contributor
    • Frisch an Board
    • Beiträge: 51
    Cracker Tracker
    Antwort #12 am: 20. Juli 2009, 10:55:19
    php-ids ist ein prima Produkt, aber eben "nur" ein Intrusion Detection System. Da es auf Blacklist-Basis läuft, muss es immer mit neu entdeckten Angriffsmustern aktuell gehalten werden. Darüber hinaus gibt es keinerlei Mittel an Bord um reflexive Angriffe zu verhindern. Während z.B. SSEQ-LIB mit SEQ_MYSQL, SEQ_OUTPUT, SEQ_EMAIL oder SEQ_HEADER im Code noch SQL-Injections, Cross-Site-Scripting, Mail-Header-Injection oder HTTP-Header-Splitting verhindert, die z.B. bereits in der Datenbank gelangt sind, ist man mit PHP-IDS auf sich allein gestellt. Nicht zu erwähnen, dass die Maßnahmen zur Session- und Cookiesicherung oder gegen CSRF der SSEQ-LIB dort nicht vorhanden sind.

    Wie erwähnt: PHP-IDS ist ein Intrusion System. Es könnte sich zusätzlich zur SSEQ-LIB gut machen, kann sie aber schon vom Funktionsumfang her nicht ersetzen.

    kwiekids

    • Schreiberling
    • Beiträge: 390
    Cracker Tracker
    Antwort #13 am: 23. August 2009, 22:28:59
    Wie sieht es denn mit Cracker Tracker und der Funktion im Kontaktforumlar aus ?
    Hier wird bei dem angeführten Script die Emial-Adresse des Admin im Feld Email agzeigt !

    any ideas ?

    Cheers
    Kwiekids

    kwiekids

    • Schreiberling
    • Beiträge: 390
    Cracker Tracker
    Antwort #14 am: 24. August 2009, 08:23:49
    10 Antworten
    6991 Aufrufe
    07. September 2009, 10:13:05 von mantis
    2 Antworten
    2451 Aufrufe
    21. Mai 2012, 12:28:53 von Özer
    9 Antworten
    1358 Aufrufe
    11. April 2022, 17:48:48 von Tomcraft