برچسب: وردپرس

  • بازی موش و گربه

    حول و هوش ۴ صبح بود که می‌خواستم برم کوه خیر سرم که دیدم یهو کلی میل سرایز شده سمت اینباکسم و یه اسپمر وحشی رم کرده  و داره فرت و فرت میل اسپم می‌فرسته.

    خلاصه این شد که رفتم پشت سیستم و اول رسیدم به همچین آدرس کذایی رو سرور که از طریق اون کلی میل اسپم می‌فرستاد.

    وقتی که محتویاتش رو دیدم اولین کاری که به ذهنم رسید این بود که کل کدای داخلش رو با یه مادر فاکر جابجا کنم تا هکره توی اجرای بعدی ببینه و حسابی عصبانی شه! :)

    بعد چند دقیقه بود که دیدم دوباره محتوا رو عوض کرده و این یعنی وجود مکانی که تبدیل شده به مقر فرماندهی و اینطوری بود که به کل زدم فایل رو پاک کردم و سریع رفتم سر وقت لاگ اپاچی

     حالا دیگه آی‌پی رو داریم :) فایرفاکس ۳.۵ و طرف ظاهرا ویندوزکاره و البته اینا مشخصات یه بابایی توی نیجیریه ست! و همین احتمال رو قوی میکنه که طرف داره از تور استفاده میکنه.

    از روی دنبال کردن آی‌پی رسیدم به یه فایلی به اسم theme-edit.php داخل پوشه wp-admin و نکته جالب این بود که با باز کردن این فایل تو ادیتور مطلقا چیزی دستگیر آدم نمی‌شد به این خاطر که آقای هکر کد php رو رمزنگاری کرده بود و بنابراین محتویت فایل رو می‌دیم به سایتی مشابه ddecode که کارش تبدیل محتوای رمز شده به حالت عادیه.  بسته به سختی کد طی تعداد مراحلی این سایت کد واقعی رو در اختیارتون می‌گذاره و جالبه که این کد رو در یازدهمین مرحله می تونه از حالت رمز خارج کنه :)

    شروع بسم الله با افتخار نوشته‌ی هکر رو می‌بینیم! (کد دیکد شده شل)

    /* hide shell edited by r1pp3rm4ya*/

    بله یک شل مخفی کشف کردیم! شلی که بخاطر محتوای رمز شده ش آنتی ویروس clam هم هشداری بهتون نمی‌ده. شاید بشه فقط از رو md5 حجم فایل مثلا گفت که احتمال داره فرد دیگه‌ای هم توی این کره خاکی توسط این شل آلوده شده یا نه.

    ادامه سرک کشی به لاگ من رو رسوند به یه آی‌پی جدید و یه فایل جدید اینکود شده ولی چون دقیقا بازه زمانیشون یکی بود حدس می‌زنم وسط کار آی‌پی تور فقط عوض شده باشه و پشت جفتشون یه ادم بیشتر نیست.

    با نگاه کردن به فایل از رمز خارج شده میشه حدس زد که ازش برای وصل شدن به دیتابیس استفاده میکنه و همه اینا یعنی خطر! دنبال فایل‌های passwd و shadow و این موارد نیز هست پس این نقاطیه که باید دسترسی read رو طوری تنظیم کنید که فقط کاربر root بتونه محتویاتشون رو ببینه. در حالت عادی یوزر امکان مشاهده محتوای خیلی از فایل‌های حساس etc رو داره.

    اما ادامه خوندن لاگ ما رو به خط‌های خیلی مهمی رهنمون می‌کنه :) دقیقا از شروع حمله تا زمان موفقیت رو می‌شه دید پروسه‌ای که واقعا دید آدم رو نسبت به امنیت و این جور موارد به کل دگرگون میکنه

    اگه یادتون باشه پست قبلی در مورد یه شل به اسم wp-search گفتم. شلی که پاک شد اما اون هکر بعد چند روز اومده سر وقتش! بی خبر از اینکه پاک شده  و البته ارور ۴۰۴ گرفته:)

    اما بیکار ننشسته! احتمالا از همون تکنیکی که بار پیش شل رو وارد سیستم کرده اینبار هم اومده و اون روش رو دنبال کرده.

    خط دوم اومده استایل قالب وبلاگ رو گرفته حدس می‌زنم از داخل استایل خواسته ببینه چه پلاگینایی مثلا می‌تونسته طرف استفاده کرده باشه که احتمالا حفره ای داشته باشن برای استفاده‌های بعدی.

    و بعد در چندین مورد که همه ش رو اینجا نگذاشتم با استفاده از متد GET داخل پوشه آپلود رو می‌گرده به امید پیدا کردن اون حفره!

    به نظرم خط ۴م دقیقا جایی بوده که حفره رو پیدا کرده و توسط متد GET و با استفاده از سایت خودش تونسته شل خودش رو بارگزاری کنه.

    برنامه‌نویس نیستم اما حدس می‌زنم تونسته از حفره‌ای توی برنامه timthumb استفاده کنه و کد خودش رو که توی سایتش موجود بوده رو با استفاده از ضعف این برنامه به سرور قربانی منتقل کنه.

    راستش رو بخواید حتی متوجه آدرس جایی که کد رو گذاشته نمی‌شم :))

    http://blogger.com.bathroomremodeling.org/

    ولی داخلش که بشید سه تا کد اصلی ش رو خواهید دید که با استفاده از متد GET اونها رو به سیستم قربانی منتقل میکنه. پیشنهاد میکنم حسابی مراقب باشید که یهو خودتون الوده نشید با وارد شدن از طریق مرورگر! و خلاصه اینکه احتمالا مشکل پیدا شد! و چند تا شل جدید کشف شد و احتمالا یه حفره توی برنامه ذکر شده :)

    ساعت ۷:۱۳ با تاخیر برم کوه!

     

     

  • با پرمیشن صحیح وردپرس را امن کنید

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

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

    فرض این راهنما بر اینه که سرور لینوکس ببن چند ده نفر آدم شیر شده و هر کدوم از اونها وبلاگ و سایت‌های خودشون رو می‌تونن داشته باشن. یکی از سیستم‌های معروفی که اغلب مدیر سرور برای مدیریت فله‌ای وبلاگ و سایت استفاده می‌کنه سی‌پنل که روی سرور لینوکس، نصب میکنه و بعد فرت و فرت فضا می‌فروشه تا جایی که سرور اشباع میشه و رم و پردازشگر دیگه تا حد خرخره و جون کندن کار میکنن!

    احتمالا اگه هزینه کمی می‌دید برای میزبانی وبلاگ و سایتتون و از اون مهمتر مثلا سی پنل دارید و یا دایرکت ادمین! بدین معنی که روی سرور لینوکس غیر از شما کلی آدم دیگه هم هست (احتمالا).  سی پنل برای هر کاربری که مقداری فضا باید بهش متعلق بگیره  یه فولدر توی پوشه خونگی لینوکس به اسم اون کاربر می‌سازه و به صورت پیشفرض تنظیمات رو طوری قرار می‌ده که یک کاربر از محتویات پوشه کاربر دیگه مطلع نشه. بنابراین وقتی وارد سی پنل می‌شید توقع نداشته باشید بتونید محتویات پوشه کاربر دیگه رو ببنید :)

    حالا یه نیم نگاهی داشته باشیم به پروسه نصب وردپرس!‌ وقتی وردپرس رو نصب میکنید به صورت دیفالت مجوز فایل wp-config.php روی ۶۴۴ تنظیم میشه. همینطوره بقیه فایل‌های داخل وردپرس! مجوز فولدرها هم ۷۵۵ تنظیم میشه.

    wp-config.php فایل خیلی خیلی حساس و مهمیه! با این مجوز شما دارید دو دستی یوزر و پسورد دیتابیس و بنابراین کل زندگی تون رو به راحتی تقدیم میکنید به هکرای خیلی خیلی ناشی! و باید ناراحت باشید از این موضوع که احتمالا به زودی حتی یه هکر ترک هم می‌تونه سایت و وبلاگتون رو هک کنه!

    بیاییم ببینیم چه کارایی میشه انجام داد با این مجوز. فرض کنید یکی از همسایه ها یه خورده کنجکاوه.  همسایه منظور کسی  که روی همین سروری که وبلاگتون موجوده، سایت و وبلاگ داره بعلاوه دسترسی به ترمینال. این ادم در حالت عادی نمی‌تونه محتویات پوشه home لینوکس رو ببینه چون به صورت صحیح توسط سی پنل  پرمیشن صحیح دارن(مگه اینکه خیلی مسئول سرور ناشی باشه و دستی تغییر داده باشه).  این ادم برای اینکه بفهمه چه کسایی کنارش هستن (دایرکتوری های موجود در پوشه home رو ببینه) می تونه بره سایتای تبدیل دامین به آی‌پی (+) و برای مثال آدرس وبلاگم رو وارد کنه و آی‌پی سرور رو در بیاره و بعد بره سراغ موتور جستجوی بینگ و خیلی ساده کل سایتایی که روی سرور میزبانی میشن رو در بیاره (+)

    واو خیلی جالبه! :) همین اول کار توی لیست موتور جستجو یکی از وبلاگای بیگناه رو می‌بینم که هک شده!‌

    wow

    می‌شه حدس زد که اسم پوشه خونگی این کاربر روی سرور ikkco باشه و یا حتی مثلا پوشه خونگی وبلاگ خودم novid باشه‌:) و بعد با فرض اینکه طرف یه زمانی وردپرس استفاده می‌کرده، اون آدم بازیگوش میاد یه شورتکات ساده می‌سازه!

    و حالا چون فایل مجوز ۶۴۴ داره  خیلی راحت یوزر و پسوردتون خونده میشه و این ادم میتونه وصل شه به دیتابیس و کلی کارای جالب کنه.

    همینجا میشه نتیجه گرفت که اگه موقع نصب وردپرس، اون رو مستقیم اکسترکت نکنید و مثلا برید داخل یه پوشه به اسم nnnovid این کار رو کنید کار هکر رو کلی سخت کردید! کاری که خیلی ها اون رو انجام نمی‌دن.

    trojan

    اینجا فرض رو بر این گذاشتیم که کاربر دسترسی به ترمینال داره ولی حقیقت خیلی دردناک تر از این حرفاست :) هکرها خیلی راحت تر از اینکه تصور کنید با استفاده از فایل‌های php خیلی کم حجم موسوم به شل دسترسی به قسمت‌های مختلف سیستم خواهند داشت. فرض کنید فایل php شل یوزر و مالکش novid و اسمش هم wp-search.php باشه، باید که خیلی خیلی  خوره وردپرس باشید تا اینکه متوجه شید به صورت پیشفرض اصلا همچین فایلی رو وردپرس وجود نداره :) می‌تونه این فایل لابه لای تم رایگانی باشه که خیلی خوشحال اون رو پیدا کردید! اما غافل از اینکه این یک تله ست و تم حاوی فایل شل!

    در اینصورت هکر کافیه وارد ادرس www.novid.ir/wp-search.php بشه. هر کاری رو که تصور کنید، این هکر می‌تونه با این شل انجام بده.  از رفتن به دایرکتوری ها مختلف، دیدن کل فایل های کاربر novid لیست گرفتن، در اوردن یوزر و پسورد و همونجا وصل شدن به دیتا بیس از داخل شل، حتی روش ها و تکنیک های معروف اکسپلویت کردن با استفاده از حفره های موجود یک نسخه خاص وردپرس و غیره و غیره. هکر می‌تونه حتی کل پروسه های در حال اجرای سرور رو ببینه!‌ می تونه با مشاهده پروسه‌های در حال اجرا یوزرهای دیگه رو ببینه :) هکر سایت بالا می‌تونه اسم من رو در بیاره و بعد توی بخشی که وجود داره دایرکتوری من رو بزنه و قصد خوندن اطلاعاتم رو داشته باشه! اما همه این کارها تا زمانی که شل تحت یوزر و گروپ novid نباشه و فایل ها و فولدرهای وردپرسی هم پرمیشن صحیح داشته باشن منتفی میشه! هکر دست خالی بر می گرده!

    یکی از این شل های خوشگل رو از سروری که زیر دستم بود و یه گروه ترک اون رو برام سوغاتی اورده رو اپلود میکنم تا بگیرید و ببینید این شل ها چطورین، نسخه‌های متنوعی وجود داره از این شل‌ها، این شل به محض اجرا شدن کلی ایمیل برای صاحبش می‌فرسته! پس احتمال داره با اولین اجرا یوزر و پسورد دیتابیستون برای مثال فرستاده شده باشه برای صاحب اثر :)‌ تنها راه از کار انداختنش روی سرور دادن مجوز chmod 000 به فایله و یا باز کردن سورس و  پیدا کردن ایمیل و عوض کردنش به مال خودتون :)

    hacks

    دقت کنید اگه مالک این فایل (شل) novid باشه حتی می تونه محتویات wp-config با مجوز ۴۰۰ رو هم بخونه! پس اگر یکی از این شل ها رو داشته باشید حتی با پرمیشن صحیح هم امنیت معنی نداره! علت اینه که در هاست های شیر برای اینکه پروسه های php که هر یوزر استفاده میکنه رو بتونن به تفکیک ببینن و هم اینکه هر کاربر از کاربر دیگه ایزوله و جدا باشه ( به شرط پرمیشن صحیح)‌ از suphp و suexec استفاده می‌کنن. کاری که این ها انجام میدن اینه که اجازه میدن فایل php با مجوز کاربر عادی هم اجرا بشه! دقت کنید در حالت عادی تنها کسی که مجوز اجرای فایل php رو داره آپاچی و بنابراین اگه در حالت عادی یه شل با مجوز novid روی سرور سبز بشه عملا کاری نمی تونه کنه.  پس در صورتیکه هاست شیر  داشته باشید و suphp و suexec داشته باشید قادر هستید تمام فایل‌های php رو با مجوز ۴۰۰ هم اجرا کنید :)

    مجوز ۴۰۰ این حسن رو داره که اگه مطمئن باشید که پاک پاکید خیالتون راحته که اگه همسایه بغلی‌ یکی از ین شل‌ها رو داشته باشه نمی‌تونه بهتون آسیبی بزنه، می‌تونید گاهگاهی  یک بار بک اپ کامل از وبلاگتون رو ذخیره کنید و بعد با آنتی ویروس چک کنید. در صورتیکه فایل مشکوکی پیدا نکرد یعنی پاکید :) یا وقتی که تم خاصی رو از نت می گیرید اون رو اول اسکن کنید و بعد روی سرور اپلود کنید.

    حالا این مقدمات رو گفتم که بریم سر اصل مطلب و اینکه شما می تونید با خیال راحت کل فایل‌های php رو ۶۰۰ و یا ۴۰۰ تبدیل کنید :) با مجوز ۴۰۰ حتی خودتون هم نمی‌تونید تغییری در فایل‌ها ایجاد کنید (که در حالت عادی با فرض اینکه طراح و برنامه نویس نیستید هیچ وقت این نیاز رو نخواهید داشت)! یک راه اینه که فایل حساس wp-config رو ۴۰۰ بگذارید و بقیه رو ۶۰۰ تا زمانایی که وردپرس رو اپدیت میکنید مشکلی از این بابت نداشته باشید :) یه راه هم اینه که هر بار نسخه جدیدی میاد برید مجوزها رو موقتی ۶۰۰ کنید و بعد از آپدیت به نسخه جدید اون رو ۴۰۰ کنید.

    اگه فایل های php رو ۴۰۰ کردید و سایتتون داون شد مطمئن باشید که سروری که هستید از suphp استفاده نمیکنه اما با تقریب خیلی بالایی بهتون اطمینان میدم اکثریت سرورهای هاستینگ شیر در ایران از این روش استفاده میکنن! در صورت داون شدن سایت فقط فایل wp-config رو ۴۰۰ بگذارید باشه و بقیه همون ۶۴۰ برگردونید و باز اگه جواب نداد ۶۴۴ بذارید باشن. اما wp-config رو بیشتر از ۴۰۰ ندید هیچ وقت (جز زمانایی که قراره پسورد و یوزر دیتابیس عوض بشه)‌

    اما فایل های دیگه غیر از php مثل .htaccess  و عکس ها رو باید بتونید با مجوز ۴۰۴ درست کنید. علت اینکه مجوز گروپ رو ۴ میدید اینه که این دسته فایل ها دیگه با suphp و suexe اجرا نمی‌شن و بنابراین باید توسط other قابلیت خوندن داشته باشن تا آپاچی بتونه به اونها دسترسی داشته باشه :) تمام css های تم و فایل متفرقه xml و اینجور چیزها شامل این قانون میشه.

    پس نتیجه میشه چیزی مثل این

    pr