دفاع از وبسایت با استفاده از ZIP BOM ها

دسته بندی: آموزش وردپرس به زبان ساده, امنیت
دفاع از وبسایت ها با استفاده از ZIP bom

چگونه با استفاده از ZIP BOM ها از وبسایت مان دفاع کنیم

 

روشهای خوب قدیمی که هنوز جواب می دهند

اگر تا حالا یک وبسایت را میزبانی کرده باشید یا اینکه حتی یکبار یک سرور را مدیریت کرده باشید خوب می دانید آدم بدهایی هستن که میخوان بلا سر سایتتان بیاورند.

خود من اولین باری که تو 13 سالگی یه هاست لینوکس با دسترسی SSH رو بالا آوردم قشنگ یادمه. می نشستم و هر روز لاگ ها و IP های مهاجم رو چک می کردم! یادمه اغلب از چین و روسیه بودن. خیلی علاقه داشتن یه جوری به سرورم وصل بشن، خیلی!

در واقع وقتی یک سرور لینوکس با دسترسی SSH دارید، یعنی از بیرون دیده می شه. پس باید یه جوری آمار درخواست اتصال ها به سرورتان را چک کنید:

grep 'authentication failures' /var/log/auth.log

 

دستور بالا اولین کاریه که می تونید برای این موضوع انجام بدین. خروجیش رو ببینید:

خروجی لاگ

همانطور که در تصویر می بینید، صدها لاگین ناموفق با اینکه این سرور احراز هویت با رمز عبور رو غیرفعال کرده اما روی یک پورت غیر استاندارد تنظیم شده اند.

 

وردپرس دوست داشتنی، همه ما رو بیچاره کرده!

 

باشه باشه…قبول داریم اسکنر نقاط ضعف قبل از وردپرس هم وجود داشته اما از اونجایی که وردپرس دیگه شورش رو درآورده و تو همه دنیا گسترده شده، اسکنرهای نقاط ضعف به یکسری اسکن مخصوص فولدرهای wp-admin یا پلاگین های patch نشده اش مجهز شده اند.

حتما بخوانید:  آموزش نصب و کار با GravityForms فرم ساز محبوب وردپرس

بنابراین اگه یه گروه هک جدید و کوچک بخواد واسه خودش اعتباری دست و پا کنه، یکی از این اسکنرها رو دانلود میکنه و شروع میکنه به تست، یه عالمه وبسایت به امید اینکه بتونه بهش دسترسی پیدا کنه و دیفیسش کنه.

 

نمونه ای از لاگ تولید شده توسط اسکنری بنام Nikto.

 

به خاطر همینه که همه ادمین های سایت یا سرور، مجبورن با لاگ هایی در حدود گیگابایت سر و کله بزنن که پر هستن از لاگین های ناموفق. پس این فکر به سرمون زد که:

 

آیا راهی برای مقابله هست؟

پس از راهکارهایی نظیر IDS و Fail2ban، ما به شما راه قدیمی ZIP BOM  رو پیشنهاد می کنیم.

 

ZIP BOM چیست؟

داریم می رسیم به جاهای جالبش، به نظر می رسه که فشرده سازی به روش زیپ واسه داده های تکراری خیلی خوبه پس اگه یه فایل متنی بشدت حجیم داشته باشین که شامل داده های تکراری باشه، مثلا همش صفر باشه، این روش عالی فشردش می کنه. یعنی جدا خوب فشرده میکنه.

کما اینکه فایل 42.zip که نمونه ماست شون میده، روش زیپ میتونه 4.5 پتا بایت معادل 4،500،000 گیگابایت رو به 42 کیلو بایت فشرده کنه. اگه سعی کنین محتوای چنین فایلی رو ببینید (از حالت فشرده خارج کنید) به احتمال قوی فضا کم خواهید آورد.

 

چگونه می توانم یک اسکنر ناقص را بمب گذاری کنم؟

متاسفانه مرورگرهای وب روش ZIP رو نمیفهمن ولی GZIP رو میفهمن. گام اول باید یک فایل GZIP 10 گیگابایتی حاوی 0 بسازیم. میتونیم فشرده سازی چند لایه هم داشته باشیم اما الان راه ساده تر رو پیش میگیریم:

dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip

ساخت بمب و  بررسی حجم

حتما بخوانید:  آسیب پذیری mysql

همانطور که می بینید اندازش حدود 10 مگابایت شد. میتونستیم فشرده ترش کنیم ولی فعلا کافیه.

حالا که این فایلو ساختیم، بیایم یه فایل PHP بسازیم که بفرستیمش رو یک کلاینت.

 

<?php
//prepare the client to recieve GZIP data. This will not be suspicious
//since most web servers use GZIP by default
header("Content-Encoding: gzip");
header("Content-Length: ".filesize('10G.gzip'));
//Turn off output buffering
if (ob_get_level()) ob_end_clean();
//send the gzipped file to the client
readfile('10G.gzip');

 

همین! پس می تونیم بشکل زیر یک تاکتیک دفاعی جالب درست کنیم:

<?php

$agent = filter_input(INPUT_SERVER, 'HTTP_USER_AGENT');



//check for nikto, sql map or "bad" subfolders which only exist on wordpress

if (strpos($agent, 'nikto') !== false || strpos($agent, 'sqlmap') !== false || startswith($url,'wp-') || startswith($url,'wordpress') || startswith($url,'wp/'))

{

sendBomb();

exit();

}



function sendBomb(){

//prepare the client to recieve GZIP data. This will not be suspicious

//since most web servers use GZIP by default

header("Content-Encoding: gzip");

header("Content-Length: ".filesize('10G.gzip'));

//Turn off output buffering

if (ob_get_level()) ob_end_clean();

//send the gzipped file to the client

readfile('10G.gzip');

}



function startsWith($a, $b) {

return strpos($a, $b) === 0;

}

 

این اسکریپت قطعاً حلال همه مشکلات نیست اما می تونه با تغییر user agent از ما در مقابل مهاجمین حفاظت کند.

حالا بیاین ببینینم وقتی اسکریپت فراخوانی میشه چه اتفاقی میوفته؟

نتیجه مرورگر
IE 11 مصرف حافظه بشدت بالا میره، IE هنگ میکنه
Chrome مصرف حافظه بالا میره و خطا میده
Edge مصرف حافظه بالا میره بعد قاطی میکنه و در حالت لود شدن گیر میکنه
Nikto بنظر میاد درست اسکن میکنه اما خروجی نشون نمیده
SQLmap مصرف حافظه اونقدر بالا میره که هنگ میکنه
Safari مصرف حافظه بشدت بالا میره بعد هنگ میکنه و بسته میشه سپس دوباره بالا میاد، حافظه میره بالا، کرش میکنه و …
Chrome (Android) حافظه میره بالا و خطا میده
حتما بخوانید:  آسیب پذیری های کشف شده در وردپرس (February 2021)

 

امتیاز شما

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

آموزش نصب و پیکربندی WAF

آموزش نصب و پیکربندی WAF

0
Firewall به اختصار WAF، سرویس یا ماژولی برای افزایش امنیت وب‌سایت است که وظیفه کنترل ترافیک ورودی به وب‌سایت را بر عهده می‌گیرد. این نرم‌افزار…
مقاله آسیب پذیری های وردپرس

آسیب پذیری های کشف شده در وردپرس (July 2022)

0
همانطور که می‌دانید ما در ایران سرور بررسی آسیب‌پذیری‌ها و ارائه بروزترین آموزش‌ها در حوزه امنیت را یکی از مهم‌ترین رسالت‌های خود می‌دانیم. به همین…

نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست