X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=libs%2Flib_detector.php;h=9ba34320582811687ea1474e0d863ed300440cae;hb=e5d8cdb8fcb063d776d830ed546e1bf130b22316;hp=e4b21fd7cbb70a3dc30963ad6d0dd2485797fc17;hpb=0b466112fc60fce3e38ee3762f53aeaaaed49add;p=ctracker.git diff --git a/libs/lib_detector.php b/libs/lib_detector.php index e4b21fd..9ba3432 100644 --- a/libs/lib_detector.php +++ b/libs/lib_detector.php @@ -67,7 +67,7 @@ function initCrackerTrackerArrays () { '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://' + '=http://', '=https://','=ftp://','_SESSION' ); // Block these words found in POST requests @@ -79,16 +79,19 @@ function initCrackerTrackerArrays () { 'starhack', 'DeLiMehmet', 'hisset', 'Hisset', 'delimert', 'MecTruy', 'busca' ); + + // Load email header + $GLOBALS['ctracker_header'] = crackerTrackerLoadEmailTemplate('header'); } // Checks for worms function isCrackerTrackerWormDetected () { // Check against the whole list - $GLOBALS['ctracker_checkworm'] = str_replace($GLOBALS['ctracker_wormprotector'], '*', $_SERVER['QUERY_STRING']); + $GLOBALS['ctracker_checkworm'] = str_replace($GLOBALS['ctracker_wormprotector'], '*', crackerTrackerQueryString()); // If it differs to original and the *whole* request string is not in whitelist // then blog the attempt - return ($GLOBALS['ctracker_checkworm'] != $_SERVER['QUERY_STRING'] && (!in_array($_SERVER['QUERY_STRING'], $GLOBALS['ctracker_whitelist']))); + return ($GLOBALS['ctracker_checkworm'] != crackerTrackerQueryString() && (!in_array(crackerTrackerQueryString(), $GLOBALS['ctracker_whitelist']))); } // Checks POST data @@ -109,12 +112,12 @@ function sendCrackerTrackerMail () { $mail = "Attack detected: ----------------------------------------------------- Remote-IP : ".determineCrackerTrackerRealRemoteAddress()." -User-Agent : ".$_SERVER['HTTP_USER_AGENT']." -Request-string : ".$_SERVER['QUERY_STRING']." +User-Agent : ".crackerTrackerUserAgent()." +Request-string : ".crackerTrackerQueryString()." Filtered string : ".$GLOBALS['ctracker_checkworm']." -Server : ".$_SERVER['SERVER_NAME']." -Script : ".$_SERVER['SCRIPT_NAME']." -Referrer : ".$_SERVER['HTTP_REFERRER']." +Server : ".crackerTrackerServerName()." +Script : ".crackerTrackerScriptName()." +Referrer : ".crackerTrackerReferer()." ----------------------------------------------------- "; @@ -128,13 +131,28 @@ Referrer : ".$_SERVER['HTTP_REFERRER']." 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) { +function crackerTrackerSendMail ($mail, $recipient = null, $subject = null) { // Construct dummy array $rowData = array( 'remote_addr' => determineCrackerTrackerRealRemoteAddress(), 'check_worm' => $GLOBALS['ctracker_checkworm'], - 'server_name' => $_SERVER['SERVER_NAME'] + 'server_name' => crackerTrackerServerName() ); // Only send email if not yet found @@ -142,10 +160,13 @@ function crackerTrackerSendMail ($mail) { // Send the email out only in non-debug mode if (isCrackerTrackerDebug()) { // Output message - print '
' . $mail . '
'; + print 'Recipient='.$recipient.'
Subject='.$subject.'
Text=
' . $mail . '
'; // All fine return true; + } elseif (!is_null($recipient)) { + // Recipient specified + return mail($recipient, $subject, $mail, $GLOBALS['ctracker_header']); } elseif (isset($GLOBALS['ctracker_email'])) { // Send it return mail($GLOBALS['ctracker_email'], 'CTracker: Attack detected!', $mail, $GLOBALS['ctracker_header']); @@ -162,12 +183,12 @@ function sendCrackerTrackerPostMail () { $mail = "POST-Attack detected: ----------------------------------------------------- Remote-IP : ".determineCrackerTrackerRealRemoteAddress()." -User-Agent : ".$_SERVER['HTTP_USER_AGENT']." -Request-string : ".$_SERVER['QUERY_STRING']." +User-Agent : ".crackerTrackerUserAgent()." +Request-string : ".crackerTrackerQueryString()." Filtered string : ".$GLOBALS['ctracker_checkworm']." -Server : ".$_SERVER['SERVER_NAME']." -Script : ".$_SERVER['SCRIPT_NAME']." -Referrer : ".$_SERVER['HTTP_REFERRER']." +Server : ".crackerTrackerServerName()." +Script : ".crackerTrackerScriptName()." +Referrer : ".crackerTrackerReferer()." ----------------------------------------------------- POST string : ".$GLOBALS['ctracker_post_track']." Filtered POST string : ".$GLOBALS['ctracker_check_post']." @@ -193,7 +214,15 @@ function crackerTrackerDie () { if (!isCrackerTrackerDebug()) sleep(mt_rand(10,30)); // Bye, bye... - die(); + if (isCrackerTrackerDebug()) { + // With debug backtrace + print '
';
+		debug_print_backtrace();
+		die('
'); + } else { + // Simple die() + die(); + } } // Logs the attack attempt @@ -213,14 +242,14 @@ function crackerTrackerLogAttack () { // Prepare array for database insert $rowData = array( 'remote_addr' => determineCrackerTrackerRealRemoteAddress(), - 'user_agent' => $_SERVER['HTTP_USER_AGENT'], - 'get_data' => $_SERVER['QUERY_STRING'], + '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' => $_SERVER['SERVER_NAME'], - 'script_name' => $_SERVER['SCRIPT_NAME'], - 'referer' => $_SERVER['HTTP_REFERER'], + 'server_name' => crackerTrackerServerName(), + 'script_name' => crackerTrackerScriptName(), + 'referer' => crackerTrackerReferer(), 'proxy_used' => $proxyUsed ); @@ -228,5 +257,41 @@ function crackerTrackerLogAttack () { crackerTrackerInsertArray($rowData); } +// Alerts the current user about malicious/suspicious traffic +function crackerTrackerAlertCurrentUser () { + // Is there some data? + if (isset($GLOBALS['ctracker_last_suspicious_entry'])) { + // Does the user have a ticket? + if (ifCrackerTrackerIpHasTicket()) { + // Should we continue? + if (isset($_POST['ctracker_continue'])) { + // Set cookie + sendCrackerTrackerCookie(); + + // And redirect to same URL + crackerTrackerRedirectSameUrl(); + } elseif (ifCrackerTrackerCookieIsSet()) { + // Return here to normal program + return; + } else { + // Load "Thank you" template + crackerTrackerLoadTemplate('add_ticket_thanks'); + } + } 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'); + } + } // END - if + + // And stop here + die(); +} + // [EOF] ?>