// 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);
'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=',
'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',
'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
// Prepares a mail and send it out
function sendCrackerTrackerMail () {
+ // Log the attack
+ crackerTrackerLogAttack();
+
// Mail content
$mail = "Attack detected:
-----------------------------------------------------
-----------------------------------------------------
";
- // Log the attack
- crackerTrackerLogAttack();
-
// Send it out
crackerTrackerSendMail($mail);
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
// 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;
// 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:
-----------------------------------------------------
-----------------------------------------------------
";
- // Log the attack
- crackerTrackerLogAttack();
-
// Send it out
crackerTrackerSendMail($mail);
// 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
// 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
// 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');