Version Description
- Added a Warning message about the vulnerability in the yuzo-related-post plugin.
- Updated the Quarantine interface and added a re-scan / re-clean feature.
- Fixed a bug in the scan depth array that would produce PHP Notices in the error_log files under certain conditions.
- Changed some wording and other minor fomatting issues.
- Removed some outdated JavaScript that is no longer needed.
- Checked code for compatibility with WP 5.2 (latest release).
Download this release
Release Info
Developer | scheeeli |
Plugin | Anti-Malware Security and Brute-Force Firewall |
Version | 4.18.69 |
Comparing to | |
See all releases |
Code changes from version 4.18.63 to 4.18.69
- images/index.php +18 -3
- index.php +46 -29
- readme.txt +16 -5
images/index.php
CHANGED
@@ -133,6 +133,17 @@ GOTMLS_define("GOTMLS_Scan_Settings_LANGUAGE", __("Scan Settings",'gotmls'));
|
|
133 |
GOTMLS_define("GOTMLS_Loading_LANGUAGE", __("Loading, Please Wait ...",'gotmls'));
|
134 |
GOTMLS_define("GOTMLS_Automatically_Fix_LANGUAGE", __("Automatically Fix SELECTED Files Now",'gotmls'));
|
135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
if (!defined("ABSPATH")) {
|
137 |
define("ABSPATH", dirname(dirname(__FILE__)).'/safe-load/');
|
138 |
$root_path = dirname(ABSPATH);
|
@@ -495,6 +506,8 @@ $GOTMLS_total_percent = 0;
|
|
495 |
function GOTMLS_admin_notices() {
|
496 |
if (!is_admin())
|
497 |
return;
|
|
|
|
|
498 |
elseif ($GLOBALS["GOTMLS"]["tmp"]["HeadersError"])
|
499 |
echo $GLOBALS["GOTMLS"]["tmp"]["HeadersError"];
|
500 |
}
|
@@ -1078,7 +1091,7 @@ function GOTMLS_readdir($dir, $current_depth = 1) {
|
|
1078 |
$current_depth = GOTMLS_readdir($path, $current_depth);
|
1079 |
} else {
|
1080 |
echo GOTMLS_return_threat("skipdirs", "blocked", $path);
|
1081 |
-
$GOTMLS_dir_at_depth[$current_depth]
|
1082 |
}
|
1083 |
}
|
1084 |
if ($_REQUEST["scan_type"] == "Quick Scan") {
|
@@ -1093,8 +1106,10 @@ function GOTMLS_readdir($dir, $current_depth = 1) {
|
|
1093 |
echo GOTMLS_return_threat("errors", "blocked", $dir, GOTMLS_error_link(GOTMLS_Failed_to_list_LANGUAGE.' readdir:'.($entries===false?'('.GOTMLS_fileperms($dir).')':$entries)));
|
1094 |
@set_time_limit($GLOBALS["GOTMLS"]["tmp"]['execution_time']);
|
1095 |
if ($current_depth-- && $_REQUEST["scan_type"] == "Quick Scan") {
|
1096 |
-
$GOTMLS_dir_at_depth[$current_depth]
|
1097 |
for ($GOTMLS_total_percent = 0, $depth = $current_depth; $depth >= 0; $depth--) {
|
|
|
|
|
1098 |
echo "\n//(($GOTMLS_total_percent / $GOTMLS_dirs_at_depth[$depth]) + ($GOTMLS_dir_at_depth[$depth] / $GOTMLS_dirs_at_depth[$depth])) = ";
|
1099 |
$GOTMLS_total_percent = (($GOTMLS_dirs_at_depth[$depth]?($GOTMLS_total_percent / $GOTMLS_dirs_at_depth[$depth]):0) + ($GOTMLS_dir_at_depth[$depth] / ($GOTMLS_dirs_at_depth[$depth]+1)));
|
1100 |
echo "$GOTMLS_total_percent\n";
|
@@ -1145,7 +1160,7 @@ function GOTMLS_error_link($errorTXT, $file = "", $class = "errors") {
|
|
1145 |
$encoded_file = $file;
|
1146 |
$onclick = 'loadIframe(\''.str_replace("\"", """, '<div style="float: left; white-space: nowrap;">'.__("Examine Quarantined Content",'gotmls').' ... </div><div style="overflow: hidden; position: relative; height: 20px;"><div style="position: absolute; right: 0px; text-align: right; width: 9000px;">'.GOTMLS_strip4java($post->post_title)).'</div></div>\');" href="'.admin_url('admin-ajax.php?action=GOTMLS_scan&'.GOTMLS_set_nonce(__FUNCTION__."744").'&mt='.$GLOBALS["GOTMLS"]["tmp"]["mt"].'&GOTMLS_scan='.$file);
|
1147 |
} elseif ($file)
|
1148 |
-
$onclick = 'loadIframe(\''.str_replace("\"", """, '<div style="float: left; white-space: nowrap;">'.__("Examine Content",'gotmls').' ... </div><div style="overflow: hidden; position: relative; height: 20px;"><div style="position: absolute; right: 0px; text-align: right; width: 9000px;">'.GOTMLS_htmlspecialchars(GOTMLS_strip4java($file), ENT_NOQUOTES)).'</div></div>\');" href="'.admin_url('admin-ajax.php?action=GOTMLS_scan&'.GOTMLS_set_nonce(__FUNCTION__."746").'&mt='.$GLOBALS["GOTMLS"]["tmp"]["mt"].'&GOTMLS_scan='.$encoded_file.preg_replace('/\&(GOTMLS_scan|mt|GOTMLS_mt|action)=/', '&last_\1=', isset($_SERVER["QUERY_STRING"])&&strlen($_SERVER["QUERY_STRING"])?"&".$_SERVER["QUERY_STRING"]:""));
|
1149 |
else
|
1150 |
$onclick = 'return false;';
|
1151 |
return "<a id=\"list_$encoded_file\" title=\"$errorTXT\" target=\"GOTMLS_iFrame\" onclick=\"$onclick\" class=\"GOTMLS_plugin $class\">";
|
133 |
GOTMLS_define("GOTMLS_Loading_LANGUAGE", __("Loading, Please Wait ...",'gotmls'));
|
134 |
GOTMLS_define("GOTMLS_Automatically_Fix_LANGUAGE", __("Automatically Fix SELECTED Files Now",'gotmls'));
|
135 |
|
136 |
+
function GOTMLS_user_can() {
|
137 |
+
if (is_multisite())
|
138 |
+
$GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"] = "manage_network";
|
139 |
+
elseif (!isset($GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"]) || $GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"] == "manage_network")
|
140 |
+
$GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"] = "activate_plugins";
|
141 |
+
if (current_user_can($GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"]))
|
142 |
+
return true;
|
143 |
+
else
|
144 |
+
return false;
|
145 |
+
}
|
146 |
+
|
147 |
if (!defined("ABSPATH")) {
|
148 |
define("ABSPATH", dirname(dirname(__FILE__)).'/safe-load/');
|
149 |
$root_path = dirname(ABSPATH);
|
506 |
function GOTMLS_admin_notices() {
|
507 |
if (!is_admin())
|
508 |
return;
|
509 |
+
elseif (is_file(dirname(dirname(dirname(__FILE__)))."/yuzo-related-post/yuzo_related_post.php"))
|
510 |
+
echo '<div class="error">It looks like you have <b>"Related Post" plugin By <i>Lenin Zapata</i></b> installed on your site.<br />This plugin was removed from the WordPress Plugin Repository because it contained a major vulnerability that was responsible for a fairly widespread breach to many WordPress sites that had it installed.<br />It is recommended that it be deactivated and deleted until a fix is released that solves this problem.</div>';
|
511 |
elseif ($GLOBALS["GOTMLS"]["tmp"]["HeadersError"])
|
512 |
echo $GLOBALS["GOTMLS"]["tmp"]["HeadersError"];
|
513 |
}
|
1091 |
$current_depth = GOTMLS_readdir($path, $current_depth);
|
1092 |
} else {
|
1093 |
echo GOTMLS_return_threat("skipdirs", "blocked", $path);
|
1094 |
+
$GOTMLS_dir_at_depth[$current_depth] = (isset($GOTMLS_dir_at_depth[$current_depth])?$GOTMLS_dir_at_depth[$current_depth]:0) + 1;
|
1095 |
}
|
1096 |
}
|
1097 |
if ($_REQUEST["scan_type"] == "Quick Scan") {
|
1106 |
echo GOTMLS_return_threat("errors", "blocked", $dir, GOTMLS_error_link(GOTMLS_Failed_to_list_LANGUAGE.' readdir:'.($entries===false?'('.GOTMLS_fileperms($dir).')':$entries)));
|
1107 |
@set_time_limit($GLOBALS["GOTMLS"]["tmp"]['execution_time']);
|
1108 |
if ($current_depth-- && $_REQUEST["scan_type"] == "Quick Scan") {
|
1109 |
+
$GOTMLS_dir_at_depth[$current_depth] = (isset($GOTMLS_dir_at_depth[$current_depth])?$GOTMLS_dir_at_depth[$current_depth]:0) + 1;
|
1110 |
for ($GOTMLS_total_percent = 0, $depth = $current_depth; $depth >= 0; $depth--) {
|
1111 |
+
if (!isset($GOTMLS_dir_at_depth[$depth]))
|
1112 |
+
$GOTMLS_dir_at_depth[$depth] = 0;
|
1113 |
echo "\n//(($GOTMLS_total_percent / $GOTMLS_dirs_at_depth[$depth]) + ($GOTMLS_dir_at_depth[$depth] / $GOTMLS_dirs_at_depth[$depth])) = ";
|
1114 |
$GOTMLS_total_percent = (($GOTMLS_dirs_at_depth[$depth]?($GOTMLS_total_percent / $GOTMLS_dirs_at_depth[$depth]):0) + ($GOTMLS_dir_at_depth[$depth] / ($GOTMLS_dirs_at_depth[$depth]+1)));
|
1115 |
echo "$GOTMLS_total_percent\n";
|
1160 |
$encoded_file = $file;
|
1161 |
$onclick = 'loadIframe(\''.str_replace("\"", """, '<div style="float: left; white-space: nowrap;">'.__("Examine Quarantined Content",'gotmls').' ... </div><div style="overflow: hidden; position: relative; height: 20px;"><div style="position: absolute; right: 0px; text-align: right; width: 9000px;">'.GOTMLS_strip4java($post->post_title)).'</div></div>\');" href="'.admin_url('admin-ajax.php?action=GOTMLS_scan&'.GOTMLS_set_nonce(__FUNCTION__."744").'&mt='.$GLOBALS["GOTMLS"]["tmp"]["mt"].'&GOTMLS_scan='.$file);
|
1162 |
} elseif ($file)
|
1163 |
+
$onclick = 'loadIframe(\''.str_replace("\"", """, '<div style="float: left; white-space: nowrap;">'.__("Examine Current Content",'gotmls').' ... </div><div style="overflow: hidden; position: relative; height: 20px;"><div style="position: absolute; right: 0px; text-align: right; width: 9000px;">'.GOTMLS_htmlspecialchars(GOTMLS_strip4java($file), ENT_NOQUOTES)).'</div></div>\');" href="'.admin_url('admin-ajax.php?action=GOTMLS_scan&'.GOTMLS_set_nonce(__FUNCTION__."746").'&mt='.$GLOBALS["GOTMLS"]["tmp"]["mt"].'&GOTMLS_scan='.$encoded_file.preg_replace('/\&(GOTMLS_scan|mt|GOTMLS_mt|action)=/', '&last_\1=', isset($_SERVER["QUERY_STRING"])&&strlen($_SERVER["QUERY_STRING"])?"&".$_SERVER["QUERY_STRING"]:""));
|
1164 |
else
|
1165 |
$onclick = 'return false;';
|
1166 |
return "<a id=\"list_$encoded_file\" title=\"$errorTXT\" target=\"GOTMLS_iFrame\" onclick=\"$onclick\" class=\"GOTMLS_plugin $class\">";
|
index.php
CHANGED
@@ -8,7 +8,7 @@ Author URI: http://wordpress.ieonly.com/category/my-plugins/anti-malware/
|
|
8 |
Contributors: scheeeli, gotmls
|
9 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZHD8QHZ2E7PE
|
10 |
Description: This Anti-Virus/Anti-Malware plugin searches for Malware and other Virus like threats and vulnerabilities on your server and helps you remove them. It's always growing and changing to adapt to new threats so let me know if it's not working for you.
|
11 |
-
Version: 4.18.
|
12 |
*/
|
13 |
if (isset($_SERVER["DOCUMENT_ROOT"]) && ($SCRIPT_FILE = str_replace($_SERVER["DOCUMENT_ROOT"], "", isset($_SERVER["SCRIPT_FILENAME"])?$_SERVER["SCRIPT_FILENAME"]:isset($_SERVER["SCRIPT_NAME"])?$_SERVER["SCRIPT_NAME"]:"")) && strlen($SCRIPT_FILE) > strlen("/".basename(__FILE__)) && substr(__FILE__, -1 * strlen($SCRIPT_FILE)) == substr($SCRIPT_FILE, -1 * strlen(__FILE__)))
|
14 |
include(dirname(__FILE__)."/safe-load/index.php");
|
@@ -18,7 +18,7 @@ else
|
|
18 |
* / /\ GOTMLS Main Plugin File
|
19 |
* / /:/ @package GOTMLS
|
20 |
* /__/::\
|
21 |
-
Copyright \__\/\:\__ © 2012-
|
22 |
* \ \:\/\
|
23 |
* \__\::/ This program is free software; you can redistribute it
|
24 |
* ___ /__/:/ and/or modify it under the terms of the GNU General Public
|
@@ -51,17 +51,6 @@ function GOTMLS_install() {
|
|
51 |
}
|
52 |
register_activation_hook(__FILE__, "GOTMLS_install");
|
53 |
|
54 |
-
function GOTMLS_user_can() {
|
55 |
-
if (is_multisite())
|
56 |
-
$GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"] = "manage_network";
|
57 |
-
elseif (!isset($GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"]) || $GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"] == "manage_network")
|
58 |
-
$GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"] = "activate_plugins";
|
59 |
-
if (current_user_can($GLOBALS["GOTMLS"]["tmp"]["settings_array"]["user_can"]))
|
60 |
-
return true;
|
61 |
-
else
|
62 |
-
return false;
|
63 |
-
}
|
64 |
-
|
65 |
function GOTMLS_menu() {
|
66 |
$GOTMLS_Full_plugin_logo_URL = GOTMLS_images_path.'GOTMLS-16x16.gif';
|
67 |
$base_page = "GOTMLS-settings";
|
@@ -157,7 +146,7 @@ span.GOTMLS_date {float: right; width: 130px; white-space: nowrap;}
|
|
157 |
.popup-box {background-color: #FFC; display: none; position: absolute; left: 0px; z-index: 10;}
|
158 |
.shadowed-text {text-shadow: #00F -1px 1px 1px;}
|
159 |
.sub-option {float: left; margin: 3px 5px;}
|
160 |
-
.inside
|
161 |
.GOTMLS_li, .GOTMLS_plugin li {list-style: none;}
|
162 |
.GOTMLS_plugin {margin: 5px; background: #cfc; border: 1px solid #0C0; padding: 0 5px; border-radius: 3px;}
|
163 |
.GOTMLS_plugin.known, .GOTMLS_plugin.db_scan, .GOTMLS_plugin.htaccess, .GOTMLS_plugin.timthumb, .GOTMLS_plugin.errors {background: #f99; border: 1px solid #f00;}
|
@@ -168,6 +157,13 @@ span.GOTMLS_date {float: right; width: 130px; white-space: nowrap;}
|
|
168 |
#pastDonations li {list-style: none;}
|
169 |
#quarantine_buttons {position: absolute; right: 0px; top: -54px; margin: 0px; padding: 0px;}
|
170 |
#quarantine_buttons input.button-primary {margin-right: 20px;}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
#delete_button {
|
172 |
background-color: #C33;
|
173 |
color: #FFF;
|
@@ -215,7 +211,7 @@ function checkAllFiles(check) {
|
|
215 |
var checkboxes = new Array();
|
216 |
checkboxes = document["GOTMLS_Form_clean"].getElementsByTagName("input");
|
217 |
for (var i=0; i<checkboxes.length; i++)
|
218 |
-
if (checkboxes[i].type == "checkbox")
|
219 |
checkboxes[i].checked = check;
|
220 |
}
|
221 |
function setvalAllFiles(val) {
|
@@ -289,7 +285,7 @@ function checkupdateserver(server, divid) {
|
|
289 |
}
|
290 |
}
|
291 |
var IE = document.all?true:false;
|
292 |
-
if (!IE)
|
293 |
document.onmousemove = getMouseXY;
|
294 |
var offsetX = 0;
|
295 |
var offsetY = 0;
|
@@ -371,7 +367,7 @@ setDiv("div_file");
|
|
371 |
<div id="admin-page-container">
|
372 |
<div id="GOTMLS-right-sidebar" style="width: 300px;" class="metabox-holder">
|
373 |
'.GOTMLS_box(__("Updates & Registration",'gotmls'), "<ul>$php_version<li>WordPress: <span class='GOTMLS_date'>".GOTMLS_wp_version."</span></li>\n<li>Plugin: <span class='GOTMLS_date'>".GOTMLS_Version.'</span></li>
|
374 |
-
<li><div id="GOTMLS_Key" style="margin: 0;'.((!$defLatest && !$isRegistered)?' display: none;">Key: <span style="float: right;">'.GOTMLS_installation_key.'</span></div><div style="':'">Key: <span style="float: right;">'.GOTMLS_installation_key.'</span></div><div style="display: none;').'"><form method="POST" action="'.admin_url('admin-ajax.php?'.$head_nonce).'" target="GOTMLS_iFrame" name="GOTMLS_Form_lognewkey"><input type="hidden" name="GOTMLS_installation_key" value="'.GOTMLS_installation_key.'"><input type="hidden" name="action" value="GOTMLS_lognewkey"><span style="color: #F00;" id="GOTMLS_No_Key">No Key! <input type="submit" style="float: right;" value="'.__("Get FREE Key!",'gotmls').'" class="button-primary" onclick="showhide(\'GOTMLS_No_Key\');showhide(\'GOTMLS_Key\', true);check_for_updates(\'Definition_Updates\');" /></span></form></div></li>
|
375 |
<li>Definitions: <span id="GOTMLS_definitions_date" class="GOTMLS_date">'.$GLOBALS["GOTMLS"]["tmp"]["Definition"]["Latest"].'</span></li></ul>
|
376 |
<form id="updateform" method="post" name="updateform" action="'.str_replace("GOTMLS_mt=", "GOTMLS_last_mt=", GOTMLS_script_URI).'&'.$head_nonce.'">
|
377 |
<img style="display: none; float: left; margin-right: 4px;" src="'.GOTMLS_images_path.'checked.gif" height=16 width=16 alt="definitions updated" id="autoUpdateDownload" onclick="showhide(\'autoUpdateForm\', true); showhide(\'registerKeyForm\', true); showhide(\'clear_updates\', true); getElementById(\'registerFormMessage\').innerHTML = \'<p>You can change your registered email here if you want.</p>\';">
|
@@ -391,7 +387,7 @@ setDiv("div_file");
|
|
391 |
<div style="float: left; width: 50%;"><input style="width: 100%;" id="first_name" type="text" name="first_name" value="'.$current_user->user_firstname.'" /></div>
|
392 |
<div style="float: left; width: 50%;"><input style="width: 100%;" id="last_name" type="text" name="last_name" value="'.$current_user->user_lastname.'" /></div>
|
393 |
<div style="clear: left; width: 100%;">
|
394 |
-
<div>'.__("A password will be e-mailed to this address:",'gotmls').'</div>
|
395 |
<input style="width: 100%;" id="user_email" type="text" name="user_email" value="'.$current_user->user_email.'" /></div>
|
396 |
<div>
|
397 |
<div>'.__("Your WordPress Site URL:",'gotmls').'</div>
|
@@ -646,13 +642,34 @@ function GOTMLS_get_quarantine($only = false) {
|
|
646 |
$Q_Page = '
|
647 |
<form method="POST" action="'.admin_url('admin-ajax.php?'.GOTMLS_set_nonce(__FUNCTION__."645")).(isset($_SERVER["QUERY_STRING"])&&strlen($_SERVER["QUERY_STRING"])?"&".$_SERVER["QUERY_STRING"]:"").'" target="GOTMLS_iFrame" name="GOTMLS_Form_clean"><input type="hidden" id="GOTMLS_fixing" name="GOTMLS_fixing" value="1"><input type="hidden" name="action" value="GOTMLS_fix">';
|
648 |
if ($my_query->have_posts()) {
|
649 |
-
$Q_Page .= '<p id="quarantine_buttons" style="display: none;"><input id="repair_button" type="submit" value="'.__("Restore selected files",'gotmls').'" class="button-primary" onclick="if (confirm(\''.__("Are you sure you want to overwrite the previously cleaned files with the selected files in the Quarantine?",'gotmls').'\')) { setvalAllFiles(1); loadIframe(\'File Restoration Results\'); } else return false;" /><input id="delete_button" type="submit" class="button-primary" value="'.__("Delete selected files",'gotmls').'" onclick="if (confirm(\''.__("Are you sure you want to permanently delete the selected files in the Quarantine?",'gotmls').'\')) { setvalAllFiles(2); loadIframe(\'File Deletion Results\'); } else return false;" /></p><p><b>'.__("The following items
|
|
|
650 |
<ul name="found_Quarantine" id="found_Quarantine" class="GOTMLS_plugin known" style="background-color: #ccc; padding: 0;"><h3 style="margin: 8px 12px;">'.($my_query->post_count>1?'<input type="checkbox" onchange="checkAllFiles(this.checked); document.getElementById(\'quarantine_buttons\').style.display = \'block\';"> '.sprintf(__("Check all %d",'gotmls'),$my_query->post_count):"").__(" Items in Quarantine",'gotmls').'<span class="GOTMLS_date">'.__("Quarantined",'gotmls').'</span><span class="GOTMLS_date">'.__("Date Infected",'gotmls').'</span></h3>';
|
651 |
$root_path = implode(GOTMLS_slash(), array_slice(GOTMLS_explode_dir(__FILE__), 0, (2 + intval($GLOBALS["GOTMLS"]["tmp"]["settings_array"]["scan_level"])) * -1));
|
652 |
while ($my_query->have_posts()) {
|
653 |
$my_query->the_post();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
654 |
$Q_Page .= '
|
655 |
-
<li id="GOTMLS_quarantine_'.$post->ID.'" class="GOTMLS_quarantine_item"><span class="GOTMLS_date">'.$post->post_date_gmt.'</span><span class="GOTMLS_date">'.$post->post_modified_gmt.'</span><input type="checkbox" name="GOTMLS_fix[]" value="'.$
|
656 |
}
|
657 |
$Q_Page .= "\n</ul>";
|
658 |
for ($p = 1; $p <= $my_query->max_num_pages; $p++) {
|
@@ -688,20 +705,20 @@ function GOTMLS_Firewall_Options() {
|
|
688 |
$patch_attr = array(
|
689 |
array(
|
690 |
"icon" => "blocked",
|
691 |
-
"language" => __("Your WordPress Login page is susceptible to a brute-force attack (just like any other login page). These types of attacks are becoming more prevalent these days and can sometimes cause your server to become slow or unresponsive, even if the attacks do not succeed in gaining access to your site. Applying this patch will block access to the WordPress Login page whenever this type of attack is detected."),
|
692 |
-
"status" => 'Not Installed',
|
693 |
-
"action" => 'Install Patch'
|
694 |
),
|
695 |
array(
|
696 |
-
"language" => __("Your WordPress site has the current version of my brute-force Login protection installed."),
|
697 |
-
"action" => 'Uninstall Patch',
|
698 |
-
"status" => 'Enabled',
|
699 |
"icon" => "checked"
|
700 |
),
|
701 |
array(
|
702 |
-
"language" => __("Your WordPress Login page has the old version of my brute-force protection installed. Upgrade this patch to improve the protection on the WordPress Login page and preserve the integrity of your WordPress core files."),
|
703 |
-
"action" => 'Upgrade Patch',
|
704 |
-
"status" => 'Out of Date',
|
705 |
"icon" => "threat"
|
706 |
)
|
707 |
);
|
8 |
Contributors: scheeeli, gotmls
|
9 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZHD8QHZ2E7PE
|
10 |
Description: This Anti-Virus/Anti-Malware plugin searches for Malware and other Virus like threats and vulnerabilities on your server and helps you remove them. It's always growing and changing to adapt to new threats so let me know if it's not working for you.
|
11 |
+
Version: 4.18.69
|
12 |
*/
|
13 |
if (isset($_SERVER["DOCUMENT_ROOT"]) && ($SCRIPT_FILE = str_replace($_SERVER["DOCUMENT_ROOT"], "", isset($_SERVER["SCRIPT_FILENAME"])?$_SERVER["SCRIPT_FILENAME"]:isset($_SERVER["SCRIPT_NAME"])?$_SERVER["SCRIPT_NAME"]:"")) && strlen($SCRIPT_FILE) > strlen("/".basename(__FILE__)) && substr(__FILE__, -1 * strlen($SCRIPT_FILE)) == substr($SCRIPT_FILE, -1 * strlen(__FILE__)))
|
14 |
include(dirname(__FILE__)."/safe-load/index.php");
|
18 |
* / /\ GOTMLS Main Plugin File
|
19 |
* / /:/ @package GOTMLS
|
20 |
* /__/::\
|
21 |
+
Copyright \__\/\:\__ © 2012-2019 Eli Scheetz (email: eli@gotmls.net)
|
22 |
* \ \:\/\
|
23 |
* \__\::/ This program is free software; you can redistribute it
|
24 |
* ___ /__/:/ and/or modify it under the terms of the GNU General Public
|
51 |
}
|
52 |
register_activation_hook(__FILE__, "GOTMLS_install");
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
function GOTMLS_menu() {
|
55 |
$GOTMLS_Full_plugin_logo_URL = GOTMLS_images_path.'GOTMLS-16x16.gif';
|
56 |
$base_page = "GOTMLS-settings";
|
146 |
.popup-box {background-color: #FFC; display: none; position: absolute; left: 0px; z-index: 10;}
|
147 |
.shadowed-text {text-shadow: #00F -1px 1px 1px;}
|
148 |
.sub-option {float: left; margin: 3px 5px;}
|
149 |
+
.inside {margin: 10px;}
|
150 |
.GOTMLS_li, .GOTMLS_plugin li {list-style: none;}
|
151 |
.GOTMLS_plugin {margin: 5px; background: #cfc; border: 1px solid #0C0; padding: 0 5px; border-radius: 3px;}
|
152 |
.GOTMLS_plugin.known, .GOTMLS_plugin.db_scan, .GOTMLS_plugin.htaccess, .GOTMLS_plugin.timthumb, .GOTMLS_plugin.errors {background: #f99; border: 1px solid #f00;}
|
157 |
#pastDonations li {list-style: none;}
|
158 |
#quarantine_buttons {position: absolute; right: 0px; top: -54px; margin: 0px; padding: 0px;}
|
159 |
#quarantine_buttons input.button-primary {margin-right: 20px;}
|
160 |
+
#reclean_buttons {
|
161 |
+
color: #a00;
|
162 |
+
min-height: 32px;
|
163 |
+
border-top: solid 2px black;
|
164 |
+
padding-top: 10px;
|
165 |
+
}
|
166 |
+
#reclean_buttons input.button-primary {float: right;}
|
167 |
#delete_button {
|
168 |
background-color: #C33;
|
169 |
color: #FFF;
|
211 |
var checkboxes = new Array();
|
212 |
checkboxes = document["GOTMLS_Form_clean"].getElementsByTagName("input");
|
213 |
for (var i=0; i<checkboxes.length; i++)
|
214 |
+
if (checkboxes[i].type == "checkbox" && checkboxes[i].id.substring(0, 6) == "check_")
|
215 |
checkboxes[i].checked = check;
|
216 |
}
|
217 |
function setvalAllFiles(val) {
|
285 |
}
|
286 |
}
|
287 |
var IE = document.all?true:false;
|
288 |
+
//if (!IE) document.addEventListener("mousemove", getMouseXY);
|
289 |
document.onmousemove = getMouseXY;
|
290 |
var offsetX = 0;
|
291 |
var offsetY = 0;
|
367 |
<div id="admin-page-container">
|
368 |
<div id="GOTMLS-right-sidebar" style="width: 300px;" class="metabox-holder">
|
369 |
'.GOTMLS_box(__("Updates & Registration",'gotmls'), "<ul>$php_version<li>WordPress: <span class='GOTMLS_date'>".GOTMLS_wp_version."</span></li>\n<li>Plugin: <span class='GOTMLS_date'>".GOTMLS_Version.'</span></li>
|
370 |
+
<li><div id="GOTMLS_Key" style="margin: 0;'.((!$defLatest && !$isRegistered)?' display: none;">Key: <span style="float: right;">'.GOTMLS_installation_key.'</span></div><div style="':'">Key: <span style="float: right;" onclick="showhide(\'autoUpdateForm\', true); showhide(\'registerKeyForm\', true); showhide(\'clear_updates\', true); getElementById(\'registerFormMessage\').innerHTML = \'<p>You can change your registered email here if you want.</p>\';">'.GOTMLS_installation_key.'</span></div><div style="display: none;').'"><form method="POST" action="'.admin_url('admin-ajax.php?'.$head_nonce).'" target="GOTMLS_iFrame" name="GOTMLS_Form_lognewkey"><input type="hidden" name="GOTMLS_installation_key" value="'.GOTMLS_installation_key.'"><input type="hidden" name="action" value="GOTMLS_lognewkey"><span style="color: #F00;" id="GOTMLS_No_Key">No Key! <input type="submit" style="float: right;" value="'.__("Get FREE Key!",'gotmls').'" class="button-primary" onclick="showhide(\'GOTMLS_No_Key\');showhide(\'GOTMLS_Key\', true);check_for_updates(\'Definition_Updates\');" /></span></form></div></li>
|
371 |
<li>Definitions: <span id="GOTMLS_definitions_date" class="GOTMLS_date">'.$GLOBALS["GOTMLS"]["tmp"]["Definition"]["Latest"].'</span></li></ul>
|
372 |
<form id="updateform" method="post" name="updateform" action="'.str_replace("GOTMLS_mt=", "GOTMLS_last_mt=", GOTMLS_script_URI).'&'.$head_nonce.'">
|
373 |
<img style="display: none; float: left; margin-right: 4px;" src="'.GOTMLS_images_path.'checked.gif" height=16 width=16 alt="definitions updated" id="autoUpdateDownload" onclick="showhide(\'autoUpdateForm\', true); showhide(\'registerKeyForm\', true); showhide(\'clear_updates\', true); getElementById(\'registerFormMessage\').innerHTML = \'<p>You can change your registered email here if you want.</p>\';">
|
387 |
<div style="float: left; width: 50%;"><input style="width: 100%;" id="first_name" type="text" name="first_name" value="'.$current_user->user_firstname.'" /></div>
|
388 |
<div style="float: left; width: 50%;"><input style="width: 100%;" id="last_name" type="text" name="last_name" value="'.$current_user->user_lastname.'" /></div>
|
389 |
<div style="clear: left; width: 100%;">
|
390 |
+
<div>'.__("A password will be e-mailed to this address:",'gotmls').(strlen($reg_email_key) == 32 && $reg_email_key != md5($current_user->user_email)?'<br /><span style="color: #C00;">'.__("Note: The pre-populated email below is NOT the address this site is currently registered under!",'gotmls').'</span>':"").'</div>
|
391 |
<input style="width: 100%;" id="user_email" type="text" name="user_email" value="'.$current_user->user_email.'" /></div>
|
392 |
<div>
|
393 |
<div>'.__("Your WordPress Site URL:",'gotmls').'</div>
|
642 |
$Q_Page = '
|
643 |
<form method="POST" action="'.admin_url('admin-ajax.php?'.GOTMLS_set_nonce(__FUNCTION__."645")).(isset($_SERVER["QUERY_STRING"])&&strlen($_SERVER["QUERY_STRING"])?"&".$_SERVER["QUERY_STRING"]:"").'" target="GOTMLS_iFrame" name="GOTMLS_Form_clean"><input type="hidden" id="GOTMLS_fixing" name="GOTMLS_fixing" value="1"><input type="hidden" name="action" value="GOTMLS_fix">';
|
644 |
if ($my_query->have_posts()) {
|
645 |
+
$Q_Page .= '<p id="quarantine_buttons" style="display: none;"><input id="repair_button" type="submit" value="'.__("Restore selected files",'gotmls').'" class="button-primary" onclick="if (confirm(\''.__("Are you sure you want to overwrite the previously cleaned files with the selected files in the Quarantine?",'gotmls').'\')) { setvalAllFiles(1); loadIframe(\'File Restoration Results\'); } else return false;" /><input id="delete_button" type="submit" class="button-primary" value="'.__("Delete selected files",'gotmls').'" onclick="if (confirm(\''.__("Are you sure you want to permanently delete the selected files in the Quarantine?",'gotmls').'\')) { setvalAllFiles(2); loadIframe(\'File Deletion Results\'); } else return false;" /></p><p><b>'.__("The following items highlighted in yellow had been found to contain malicious code, they have been cleaned and the malicious contents have been removed. A record of the infection has been saved here in the Quarantine for your review and could help with any future investigations. The code is safe here and you do not need to do anything further with these files.",'gotmls').'</b></p>
|
646 |
+
<p id="reclean_buttons" style="display: none;"><input id="reclean_button" type="submit" value="'.__("Re-clean re-infected files",'gotmls').'" class="button-primary" onclick="checkAllFiles(false); setvalAllFiles(1); loadIframe(\'Reinfected File Recleaning Results\');" /><b>'.__("The items highlighted in red have been found to be re-infected. The malicious code has returned and needs to be cleaned again.",'gotmls').'</b></p>
|
647 |
<ul name="found_Quarantine" id="found_Quarantine" class="GOTMLS_plugin known" style="background-color: #ccc; padding: 0;"><h3 style="margin: 8px 12px;">'.($my_query->post_count>1?'<input type="checkbox" onchange="checkAllFiles(this.checked); document.getElementById(\'quarantine_buttons\').style.display = \'block\';"> '.sprintf(__("Check all %d",'gotmls'),$my_query->post_count):"").__(" Items in Quarantine",'gotmls').'<span class="GOTMLS_date">'.__("Quarantined",'gotmls').'</span><span class="GOTMLS_date">'.__("Date Infected",'gotmls').'</span></h3>';
|
648 |
$root_path = implode(GOTMLS_slash(), array_slice(GOTMLS_explode_dir(__FILE__), 0, (2 + intval($GLOBALS["GOTMLS"]["tmp"]["settings_array"]["scan_level"])) * -1));
|
649 |
while ($my_query->have_posts()) {
|
650 |
$my_query->the_post();
|
651 |
+
$gif = 'blocked.gif';
|
652 |
+
$threat = 'potential';
|
653 |
+
$action = $post->ID.'" id="check_'.$post->ID.'" onchange="document.getElementById(\'quarantine_buttons\').style.display = \'block\';';
|
654 |
+
$link = GOTMLS_error_link(__("The current/live file is missing or deleted",'gotmls'), $post->ID, $threat);
|
655 |
+
if (is_file($post->post_title)) {
|
656 |
+
GOTMLS_scanfile($post->post_title);
|
657 |
+
if (count($GLOBALS["GOTMLS"]["tmp"]["threats_found"])) {
|
658 |
+
$gif = 'threat.gif" onload="document.getElementById(\'reclean_buttons\').style.display = \'block\';';
|
659 |
+
$threat = 'known';
|
660 |
+
$action = GOTMLS_encode(realpath($post->post_title)).'" id="ilist_'.$post->ID.'" checked="true';
|
661 |
+
}
|
662 |
+
$link = GOTMLS_error_link(__("View current/live version",'gotmls'), $post->post_title, $threat);
|
663 |
+
} elseif (is_array($postdb = explode(":", $post->post_title.":")) && count($postdb) > 3 && is_numeric($postdb[1])) {
|
664 |
+
$link = '<a target="_blank" href="';
|
665 |
+
if ("revision" == $postdb[0])
|
666 |
+
$link .= admin_url('revision.php?revision='.$postdb[1])."\" title=\"View this revision";
|
667 |
+
else
|
668 |
+
$link .= admin_url('post.php?action=edit&post='.$postdb[1])."\" title=\"View current ".$postdb[0];
|
669 |
+
$link .= "\" id=\"list_edit_$postdb[1]\" class=\"GOTMLS_plugin $threat\">";
|
670 |
+
}
|
671 |
$Q_Page .= '
|
672 |
+
<li id="GOTMLS_quarantine_'.$post->ID.'" class="GOTMLS_quarantine_item" onmouseover="this.style.fontWeight=\'bold\';" onmouseout="this.style.fontWeight=\'normal\';"><span class="GOTMLS_date">'.GOTMLS_error_link(__("View Quarantine Record",'gotmls'), $post->ID, $threat).$post->post_date_gmt.'</a></span><span class="GOTMLS_date">'.$post->post_modified_gmt.'</span><input type="checkbox" name="GOTMLS_fix[]" value="'.$action.'" /><img src="'.GOTMLS_images_path.$gif.'" height=16 width=16 alt="Q">'.$link.str_replace($root_path, "...", $post->post_title)."</a></li>\n";
|
673 |
}
|
674 |
$Q_Page .= "\n</ul>";
|
675 |
for ($p = 1; $p <= $my_query->max_num_pages; $p++) {
|
705 |
$patch_attr = array(
|
706 |
array(
|
707 |
"icon" => "blocked",
|
708 |
+
"language" => "<b>".__("(This patch only works under Apache servers and requires mod_rewrite and session_start to be active and functional)",'gotmls')."</b><br />\n".__("Your WordPress Login page is susceptible to a brute-force attack (just like any other login page). These types of attacks are becoming more prevalent these days and can sometimes cause your server to become slow or unresponsive, even if the attacks do not succeed in gaining access to your site. Applying this patch will block access to the WordPress Login page whenever this type of attack is detected.",'gotmls'),
|
709 |
+
"status" => __('Not Installed','gotmls'),
|
710 |
+
"action" => __('Install Patch','gotmls')
|
711 |
),
|
712 |
array(
|
713 |
+
"language" => __("Your WordPress site has the current version of my brute-force Login protection installed.",'gotmls'),
|
714 |
+
"action" => __('Uninstall Patch','gotmls'),
|
715 |
+
"status" => __('Enabled','gotmls'),
|
716 |
"icon" => "checked"
|
717 |
),
|
718 |
array(
|
719 |
+
"language" => __("Your WordPress Login page has the old version of my brute-force protection installed. Upgrade this patch to improve the protection on the WordPress Login page and preserve the integrity of your WordPress core files.",'gotmls'),
|
720 |
+
"action" => __('Upgrade Patch','gotmls'),
|
721 |
+
"status" => __('Out of Date','gotmls'),
|
722 |
"icon" => "threat"
|
723 |
)
|
724 |
);
|
readme.txt
CHANGED
@@ -5,10 +5,10 @@ Author URI: http://wordpress.ieonly.com/category/my-plugins/anti-malware/
|
|
5 |
Contributors: scheeeli, gotmls
|
6 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZHD8QHZ2E7PE
|
7 |
Tags: security, firewall, anti-malware, scanner, automatic, repair, remove, malware, virus, threat, hacked, malicious, infection, timthumb, exploit, block, brute-force, wp-login, patch, antimalware, revslider, Revolution Slider
|
8 |
-
Version: 4.18.
|
9 |
-
Stable tag: 4.18.
|
10 |
Requires at least: 3.3
|
11 |
-
Tested up to: 5.
|
12 |
|
13 |
This Anti-Malware scanner searches for Malware, Viruses, and other security threats and vulnerabilities on your server and it helps you fix them.
|
14 |
|
@@ -27,7 +27,7 @@ This Anti-Malware scanner searches for Malware, Viruses, and other security thre
|
|
27 |
* Check the integrity of your WordPress Core files.
|
28 |
* Automatically download new Definition Updates when running a Complete Scan.
|
29 |
|
30 |
-
Updated
|
31 |
|
32 |
Register this plugin at [GOTMLS.NET](http://gotmls.net/) and get access to new definitions of "Known Threats" and added features like Automatic Removal, plus patches for specific security vulnerabilities like old versions of timthumb. Updated definition files can be downloaded automatically within the admin once your Key is registered. Otherwise, this plugin just scans for "Potential Threats" and leaves it up to you to identify and remove the malicious ones.
|
33 |
|
@@ -94,8 +94,16 @@ sucuri.net caches their scan results and will not refresh the scan until you cli
|
|
94 |
|
95 |
== Changelog ==
|
96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
= 4.18.63 =
|
98 |
-
Fixed a major bug in the Firewall updates that could cause a False Positive lockout.
|
99 |
|
100 |
= 4.18.62 =
|
101 |
* Fixed a bug in the Firewall that prevented some iPad devices from logging in.
|
@@ -359,6 +367,9 @@ Fixed a major bug in the Firewall updates that could cause a False Positive lock
|
|
359 |
|
360 |
== Upgrade Notice ==
|
361 |
|
|
|
|
|
|
|
362 |
= 4.18.63 =
|
363 |
Fixed a major bug in the Firewall updates that could cause a False Positive lockout.
|
364 |
|
5 |
Contributors: scheeeli, gotmls
|
6 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZHD8QHZ2E7PE
|
7 |
Tags: security, firewall, anti-malware, scanner, automatic, repair, remove, malware, virus, threat, hacked, malicious, infection, timthumb, exploit, block, brute-force, wp-login, patch, antimalware, revslider, Revolution Slider
|
8 |
+
Version: 4.18.69
|
9 |
+
Stable tag: 4.18.69
|
10 |
Requires at least: 3.3
|
11 |
+
Tested up to: 5.2
|
12 |
|
13 |
This Anti-Malware scanner searches for Malware, Viruses, and other security threats and vulnerabilities on your server and it helps you fix them.
|
14 |
|
27 |
* Check the integrity of your WordPress Core files.
|
28 |
* Automatically download new Definition Updates when running a Complete Scan.
|
29 |
|
30 |
+
Updated Apr 29th
|
31 |
|
32 |
Register this plugin at [GOTMLS.NET](http://gotmls.net/) and get access to new definitions of "Known Threats" and added features like Automatic Removal, plus patches for specific security vulnerabilities like old versions of timthumb. Updated definition files can be downloaded automatically within the admin once your Key is registered. Otherwise, this plugin just scans for "Potential Threats" and leaves it up to you to identify and remove the malicious ones.
|
33 |
|
94 |
|
95 |
== Changelog ==
|
96 |
|
97 |
+
= 4.18.69 =
|
98 |
+
* Added a Warning message about the vulnerability in the yuzo-related-post plugin.
|
99 |
+
* Updated the Quarantine interface and added a re-scan / re-clean feature.
|
100 |
+
* Fixed a bug in the scan depth array that would produce PHP Notices in the error_log files under certain conditions.
|
101 |
+
* Changed some wording and other minor fomatting issues.
|
102 |
+
* Removed some outdated JavaScript that is no longer needed.
|
103 |
+
* Checked code for compatibility with WP 5.2 (latest release).
|
104 |
+
|
105 |
= 4.18.63 =
|
106 |
+
* Fixed a major bug in the Firewall updates that could cause a False Positive lockout.
|
107 |
|
108 |
= 4.18.62 =
|
109 |
* Fixed a bug in the Firewall that prevented some iPad devices from logging in.
|
367 |
|
368 |
== Upgrade Notice ==
|
369 |
|
370 |
+
= 4.18.69 =
|
371 |
+
Added a Warning message about the vulnerability in the yuzo-related-post plugin, updated the Quarantine interface with a re-scan / re-clean feature, fixed a bug in the scan depth array that would produce PHP Notices, changed some wording and other minor fomatting issues, and checked code for compatibility with WP 5.2 (latest release).
|
372 |
+
|
373 |
= 4.18.63 =
|
374 |
Fixed a major bug in the Firewall updates that could cause a False Positive lockout.
|
375 |
|