]> git.mxchange.org Git - ctracker.git/blobdiff - libs/lib_detector.php
init also this
[ctracker.git] / libs / lib_detector.php
index be64007b4907a2c87a229c3e0e2cf4856cf02f92..8d75a2f291962c3497a0819bf92c03bbdf5798f4 100644 (file)
@@ -27,7 +27,7 @@ function initCrackerTrackerArrays () {
        // Set error_reporting
        if (isCrackerTrackerDebug()) {
                // For debugging purposes, this is fine
-               @error_reporting(E_ALL, E_STRICT);
+               @error_reporting(E_ALL | E_STRICT);
        } else {
                // No output
                @error_reporting(0);
@@ -40,8 +40,8 @@ function initCrackerTrackerArrays () {
                'cmd=lostpw' // LinPHA
        );
 
-       // Attacks we should detect and blok
-       $GLOBALS['ctracker_wormprotector'] = array(
+       // Attacks we should detect and block
+       $GLOBALS['ctracker_get_blacklist'] = array(
                'chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
                'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
                'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
@@ -54,7 +54,7 @@ function initCrackerTrackerArrays () {
                'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20',
                '$_request', '$_get', '$request', '$get', '.system', 'HTTP_PHP', '&aim', '%20getenv', 'getenv%20',
                'new_password', '&icq','/etc/passwd','/etc/shadow', '/etc/groups', '/etc/gshadow',
-               'HTTP_USER_AGENT', 'HTTP_HOST', 'wget%20', 'uname\x20-a', 'bin/id', '/bin/', '/chgrp',
+               'HTTP_USER_AGENT', 'HTTP_HOST', 'wget%20', 'uname\x20-', 'uname%20-', 'bin/id', '/bin/', '/chgrp',
                '/chown', '/usr/bin', 'g\+\+', 'bin/python', 'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20',
                'ping%20', '.pl', 'bin/xterm', 'lsof%20', '.conf', 'motd%20', 'HTTP/1.', '.inc.php', '.lib.php',
                'config.php', 'file\://', 'window.open', '<SCRIPT>', 'javascript\://', 'img src', 'img%20src', '.jsp',
@@ -66,28 +66,33 @@ function initCrackerTrackerArrays () {
                'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '\<?php', '?\>', 'sql=',
                'div style=', 'overflow: auto', 'height: 1px', 'cc%20', 'admin_action=', 'path=', 'action=http',
                'page=http', 'module=http', 'op=http', 'id=http', 'id%3Dhttp', 'action%3Dhttp', 'page%3Dhttp',
-               'module%3Dhttp', 'op%3Dhttp', 'starhack', '../../', 'directory=http', 'dir=http', 'busca', 'uol.com',
-               '=http://', '=https://','=ftp://'
+               'module%3Dhttp', 'op%3Dhttp', 'starhack', '../../','..//', 'directory=http', 'dir=http', 'busca',
+               'uol.com', '=http://', '=https://','=ftp://','=file://','_SESSION','CFG_ROOT','/proc/',',0x5',
+               '=%7BQUOT%7D'
        );
 
        // Block these words found in POST requests
        $GLOBALS['ctracker_post_blacklist'] = array(
-               // These two lines are for detecting hidden link spam in wikis, forums, guestbooks, etc.
+               // This line is for detecting hidden link spam in wikis, forums, guestbooks, etc.
                'div style=', 'overflow:auto', 'height:1px', 'width:1px', 'display:hidden',
-               'overflow: auto', 'height: 1px', 'display: hidden',
                // "Common" login name from VHCS exploiters ;-)
                'starhack', 'DeLiMehmet', 'hisset', 'Hisset', 'delimert', 'MecTruy',
                'busca'
        );
 
        // Load email header
-       $GLOBALS['ctracker_header'] = crackerTrackerLoadEmaiLTemplate('header');
+       $GLOBALS['ctracker_header'] = crackerTrackerLoadEmailTemplate('header');
+
+       // Init more elements
+       $GLOBALS['ctracker_post_track'] = '';
+       $GLOBALS['ctracker_checkworm']  = '';
+       $GLOBALS['ctracker_check_post'] = '';
 }
 
 // Checks for worms
 function isCrackerTrackerWormDetected () {
        // Check against the whole list
-       $GLOBALS['ctracker_checkworm'] = str_replace($GLOBALS['ctracker_wormprotector'], '*', crackerTrackerQueryString());
+       $GLOBALS['ctracker_checkworm'] = str_replace($GLOBALS['ctracker_get_blacklist'], '*', crackerTrackerQueryString());
 
        // If it differs to original and the *whole* request string is not in whitelist
        // then blog the attempt
@@ -108,6 +113,9 @@ function isCrackerTrackerPostAttackDetected () {
 
 // Prepares a mail and send it out
 function sendCrackerTrackerMail () {
+       // Log the attack
+       crackerTrackerLogAttack();
+
        // Mail content
        $mail = "Attack detected:
 -----------------------------------------------------
@@ -121,9 +129,6 @@ Referrer        : ".crackerTrackerReferer()."
 -----------------------------------------------------
 ";
 
-       // Log the attack
-       crackerTrackerLogAttack();
-
        // Send it out
        crackerTrackerSendMail($mail);
 
@@ -131,6 +136,21 @@ Referrer        : ".crackerTrackerReferer()."
        crackerTrackerDie();
 }
 
+// Sends the ticket emails out
+function sendCrackerTrackerTicketMails () {
+       // Load user template
+       $mail = crackerTrackerLoadEmailTemplate('user_add_ticket', $GLOBALS['ctracker_last_ticket']);
+
+       // Send email to the user
+       crackerTrackerSendMail($mail, $GLOBALS['ctracker_last_ticket']['ctracker_ticket_email'], getCrackerTrackerLocalized('user_add_ticket_subject'));
+
+       // Load webmaster template
+       $mail = crackerTrackerLoadEmailTemplate('webmaster_add_ticket', $GLOBALS['ctracker_last_ticket'], getCrackerTrackerConfig('ctracker_language'));
+
+       // Send email to the user
+       crackerTrackerSendMail($mail, null, getCrackerTrackerLocalized('webmaster_add_ticket_subject'));
+}
+
 // Sends a mail out
 function crackerTrackerSendMail ($mail, $recipient = null, $subject = null) {
        // Construct dummy array
@@ -145,7 +165,7 @@ function crackerTrackerSendMail ($mail, $recipient = null, $subject = null) {
                // Send the email out only in non-debug mode
                if (isCrackerTrackerDebug()) {
                        // Output message
-                       print 'Recipient='.$recipient.'<br />Subject='.$subject.'<br />Text=<pre>' . $mail . '</pre>';
+                       print 'Recipient=' . $recipient . '<br />Subject=' . $subject . '<br />Text=<pre>' . $mail . '</pre>';
 
                        // All fine
                        return true;
@@ -159,11 +179,20 @@ function crackerTrackerSendMail ($mail, $recipient = null, $subject = null) {
                        // Send it the deprecated way with constant
                        return mail(constant('__CTRACKER_EMAIL'), 'CTracker: Attack detected!', $mail, $GLOBALS['ctracker_header']);
                }
-       } // END - if
+       } elseif (isCrackerTrackerDebug()) {
+               // Output message
+               print 'Recipient=' . $recipient . '<br />Subject=' . $subject . '<br />Text=<pre>' . $mail . '</pre>';
+
+               // All fine
+               return true;
+       }
 }
 
 // Sends a detected POST attack mail
 function sendCrackerTrackerPostMail () {
+       // Log the attack
+       crackerTrackerLogAttack();
+
        // Mail text
        $mail = "POST-Attack detected:
 -----------------------------------------------------
@@ -180,9 +209,6 @@ Filtered POST string : ".$GLOBALS['ctracker_check_post']."
 -----------------------------------------------------
 ";
 
-       // Log the attack
-       crackerTrackerLogAttack();
-
        // Send it out
        crackerTrackerSendMail($mail);
 
@@ -195,14 +221,22 @@ function crackerTrackerDie () {
        // Close database link
        crackerTrackerCloseDatabaseLink();
 
-       // Sleep a little to waste the attacker's time
-       if (!isCrackerTrackerDebug()) sleep(mt_rand(10,30));
+       // Do only sleep if debug/developer mode is not enabled
+       if (!isCrackerTrackerDebug()) {
+               // Sleep a little to waste the attacker's time
+               sleep(mt_rand(10,30));
+       } // END - if
 
        // Bye, bye...
-       print '<pre>';
-       debug_print_backtrace();
-       die('</pre>');
-       die();
+       if (isCrackerTrackerDebug()) {
+               // With debug backtrace in debug/developer mode
+               print '<pre>';
+               debug_print_backtrace();
+               die('</pre>');
+       } else {
+               // Simple die() call
+               die();
+       }
 }
 
 // Logs the attack attempt
@@ -221,20 +255,21 @@ function crackerTrackerLogAttack () {
 
        // Prepare array for database insert
        $rowData = array(
-               'remote_addr' => determineCrackerTrackerRealRemoteAddress(),
-               'user_agent'  => crackerTrackerUserAgent(),
-               'get_data'    => crackerTrackerQueryString(),
-               'post_data'   => $GLOBALS['ctracker_post_track'],
-               'check_worm'  => $GLOBALS['ctracker_checkworm'],
-               'check_post'  => $GLOBALS['ctracker_check_post'],
-               'server_name' => crackerTrackerServerName(),
-               'script_name' => crackerTrackerScriptName(),
-               'referer'     => crackerTrackerReferer(),
-               'proxy_used'  => $proxyUsed
+               'remote_addr'   => determineCrackerTrackerRealRemoteAddress(),
+               'user_agent'    => crackerTrackerUserAgent(),
+               'get_data'      => crackerTrackerQueryString(),
+               'post_data'     => $GLOBALS['ctracker_post_track'],
+               'check_worm'    => $GLOBALS['ctracker_checkworm'],
+               'check_post'    => $GLOBALS['ctracker_check_post'],
+               'server_name'   => crackerTrackerServerName(),
+               'script_name'   => crackerTrackerScriptName(),
+               'referer'       => crackerTrackerReferer(),
+               'proxy_used'    => $proxyUsed,
+               'first_attempt' => 'NOW()'
        );
 
        // Insert the array in database
-       crackerTrackerInsertArray($rowData);
+       crackerTrackerInsertArray('ctracker_data', $rowData);
 }
 
 // Alerts the current user about malicious/suspicious traffic
@@ -257,9 +292,12 @@ function crackerTrackerAlertCurrentUser () {
                                // Load "Thank you" template
                                crackerTrackerLoadTemplate('add_ticket_thanks');
                        }
-               } elseif (isset($_POST['ctracker_add_ticket'])) {
+               } elseif ((isset($_POST['ctracker_add_ticket'])) && (!empty($_POST['name'])) && (!empty($_POST['email']))) {
                        // Add the ticket
                        addCrackerTrackerTicket($_POST);
+
+                       // Send the email out
+                       sendCrackerTrackerTicketMails();
                } else {
                        // Display the form for new ticket
                        crackerTrackerLoadTemplate('add_ticket');