آموزش روش های حملات تزریق کد، XSS و اکسپلویتینگ در وردپرس

آموزش روش های حملات تزریق کد، XSS و اکسپلویتینگ در وردپرس

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

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

دوستان عزیز حملات تزریق کد به فایلهای سیستمی , یکی از پرکاربردترین ابزار نفوذگران در حمله به سایت های وردپرسی است که با استفاده از تزریق کدهای PHP به فایل های لاگ سیستمی دنبال میشود که ممکن است شما دوستان نیز با این روش آشنا باشید. در این روش , نفوذگر هیچ نیازی به ایجاد یک فایل جدید بر روی سرور ندارد و فقط با تغییر دادن مقادیر بعضی از فایلهای موجود بر روی سرور , کار خود را پیش میبرد که در اکثر موارد نیز موفق عمل میکنند. اما در اینجا یک سوال پیش میاید : کدام فایل و یا فایها هستند که قابلیت تغییر از راه دور را توسط فرد دیگر دارد چرا که این فایل ها دقیقا همان پاشنه آشیل وب سایت شما هستند؟ دوستان عزیز آیا به واقع این کار امکان پذیر ؟ شما نیز قطعا فکر میکنید , یک کاربر بدون داشتن دسترسی خاصی بر روی سرور , قادر به تغییر دادن مقادیر نیست . بهر حال نباید فراموش کنیم که بسیاری از اتفاقاتی که روزانه برای یک سرور رخ میدهد , توان لاگ شدن را دارد و بر روی فایلهای لاگ , نوشته و ذخیره میشوند . حال فرض کنید که نفوذگر , یک راه نفوذ را کشف کرده است , که به وسیله آن بتواند دایرکتوری ها را پیمایش کند

دوستان عزیز حال نفوذگر با فراخوانی صفحاتی روی سرور تنها میتواند فایلهای سیستمی را بخواند اما اجازه تغییر در محتوای آن را ندارد . البته او نیازی نیز به این کار ندارد زیرا خود سرور قربانی این کار را برایش انجام میدهد اما چگونه ؟ یک نفوذگر علاقه زیادی به فراخوانی لاگ های سرور دارد که مهمترین این لاگ ها عبارتند از :

۱
۲
۳
۴
۵
VAR/LOG/MESSAGES
VAR/LOG/HTTPD-ACCESS.CONF
VAR/LOG/HTTPD-ERROR.LOG
VAR/LOG/MAILLOG
VAR/LOG/SECURITY

خب دوستان عزیز حال در این جا به بررسی فایل VAR/LOG/MESSAGES میپردازیم . این فایل در سرورهایی که بر روی آنان PHP و وردپرس نصب میشود , فایلی در سرور و در اختیار مدیر سرور و بسیار سبک است و هر روزه به روزرسانی میشود که در آدرس VAR/LOG/MESSAGES قرار دارد . این یکی از مهمترین فایلهای لاگ است که نفوذگر بعد از آنالیز کردن مقادیر داخل این فایل , به موارد جالبی برمیخورد مانند یوزر هایی که وارد شده اند و ساعت ورود آن ها و مواردی از این دست.

دوستان عزیز شاید این مقادیر گفته شده در بالا برای یک مدیر وردپرسی , معنا و مفهوم خاصی نداشته باشد اما با کمی دقت میتوان متوجه شد که این فایل , خطاهایی که هنگام استفاده از FTP رخ میدهد , آن را لاگ میکند . بنابراین , یک نفوذگر نیز شروع به برقراری ارتباط با FTP سایت میکند تا متوجه شود که چه مقادیری فیلتر میشوند و مقادیری که نفوذگر به آنها نیاز دارد , بدون مشکل لاگ میشوند , در اینجاست که نفوذگر نیز سعی در لاگ کردن و یا ذخیره یک کد PHP میکند و آن را اجرا میکند

دوستان عزیز توجه کنید که این تنها مسیر برای این اقدام نفوذگرانه توسط مهاجم نیست و روش های متعددی برای این کار وجود دارد. یکی دیگر از مسیرهایی که مدیران سرور باید دائما هشیار آن باشند , خود آپاچی است که همین مسیر در آپاچی نیز قابل اجراست که با تزریق کد در لاگ های آپاچی صورت میگیرد . البته منطقی و طبیعی است که اجرای این اقدام در آپاچی به مراتب پیچیده تر و مشکل تر از تزریق کد به FTP است , زیرا کدهایی نظیر space توسط مرورگرها , Encode میشوند , هرچند که نفوذگر نیز در اولین اقدام خود , space را حذف میکند . اما مساله باز هم مشکل ساز میشود زیرا مرورگر بعد از برداشتن محدودیت Encode کدهای space , در اجرای مقادیر دیگری مانند $ , >< دچار اختلال میشود و کدی که نفوذگر تزریق میکند به درستی اجرا نمیشود و نفوذگر مجبور است با وصل شدن به HTTP سرور , مقادیر را ارسال کند

دوستان عزیز توجه کنید که فایلهای زیادی در سرور وجود دارند که نفوذگران در صورت ضعف سرور میتوانند آنها را لاگ و اقدام به حملات تزریق کد کنند . مهمترین این فایلها امروزه شناخته شده و چه آپاچی و چه سازندگان سخت افزار سرورها و چه در آپدیت های PHP , تعداد زیادی از آنان بسته شده اما مقادیری هنوز امکان لاگ شدن دارند که میتوانند برای این نفوذکران راهی بسیار آسان و مطمئن باشند

مورد بعدی حملات XSS است
دوستان عزیز ممکن است با اینگونه از حملات آشنایی داشته باشید این گونه حملات به وردپرس ها اغلب بسیار جالب و در عین حال بسیار خطرناک هستند . این گونه آسیب پذیری ها در همه جا یافت میشود , از میل باکس یاهو گرفته تا بزرگترین موتورهای جستجوگری مانند گوگل . به وسیله حملات XSS , نفوذگران کوکی ها و نشست های جاری را سرقت میکنند . این نوع از حملات معمولا مختص به وردپرس و PHP نیست و در مورد هر پایگاه اینترنتی میتواند اجرا شود . در این گونه نفوذ , مهاجم معمولا از یک سرور و یا سایت آسیب پذیر مانند یاهو و MSN استفاده میکند و به همین دلیل نیز پیداکردن نفوذگر بسیار مشکل میشود . در ابتدا افراد نیاز دارند تا با هدف نفوذگر آشنا شود که این امر در خاصه برنامه های PHP نیست پس این مورد را هم متوجه شدید به چه صورت انجام میشود و روش کاری ان به چه صورت است

دوستان عزیز این حملات مخفف نام cross site scripting است که در ابتدا به آن CSS گفته میشد اما بعدها به خاطر اینکه با cascading style sheets اشتباه گرفته نشود , آن را XSS نامیدند . این حملات معمولا بعد از دانلود افزونه و یا اسکریپتی خاص رخ میدهد که قربانی خیال میکند برای سایتش مفید است و بعد از آن , نفوذگر میتواند کدهایی نظیر HTML , VBscript , javascript , Activex را به سیستم قربانی تزریق کرده و با سرقت کوکی ها و نشست ها , اعمال خود را تکمیل میکنند . حملات XSS به سه دسته تقسیم میشوند :

۱٫ DOM – BASED XSS ( نفوذگر از طریق وبسایت قربانی اقدام نمیکند )
۲٫ NON – PERSISTENT XSS ( حمله از طریق وبسایت قربانی انجام میشود )
۳٫ PERSISTENT – XSS ( از طریق کوکی های پاک نشده طراحی میشود )

انواع این حمله به صورت کلی به صورت زیر هست:

انعکاس
در این نوع از حمله XSS، هکر یک حفره امنیتی و راهی برای استفاده از آن پیدا می نماید تا کاربر ناشناس را به یک برنامه وب دارای آسیب پذیری XSS هدایت کند. در این هنگام حمله انجام شده است.دوستان عزیز توجه کنید که در این حمله به وسیله یک سری از پارامترهای URL که با URL ارسال می شوند، انجام می شود.در این حالت در این حمله هکر URL مخرب را با پارامترهای موجود در URL اصلی برای کاربر ارسال می کند. این URL معمولا از طریق ایمیل، وبلاگ ها یا انجمن ها و یا هر روش ممکن دیگری که بتوان برای کابران پیام ارسال شود برای کاربر فرستاده می شود. شاید تصور شود که کاربر بر روی لینک های ناشناس کلیک نمی کند، بنابراین مشکلی برای او پیش نمی آید. اما باید توجه نمود که با استفاده از JavaScript حتی با بازنمودن یک ایمیل و حتی مشاهده یک سایت، حمله XSS انجام می شود پس باید شما توجه خود را به این مورد دو چندان کنید به علاوه در این نوع حمله معمولا URL ها با متدهایی مثل Hex و یا هر متد کدگذاری دیگری که URL ها را بصورت معتبر نمایش می دهد، کدگذاری می شوند.

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

دوستان عزیز توجه کنید که زبانهاي متداول مورد استفاده در XSS عبارتند از: JavaScript ، VBScript ، HTML ، Perl ، C++ ، ActiveX و Flash که هر یک از این زبان هایی که برای این حملات استفاده میشوند دارای ویژگی های خاصی هستند که هکر میتواند از آن ها برای این نفوذ های خود در وب سایت استفاده کند

خب دوستان عزیز اکنون به یکی از تمیزترین کارهای نفوذگران در برخورد و نفوذ به وردپرس و هر وبسایتی که بر پایه PHP استوار باشد میرسیم . نوشتن کدهای مخرب ( Malicious code ) تکنیکی است که اغلب نفوذگران از نوشتن آنها لذت میبرند و اغلب مدیران وردپرس و کاربران PHP نیز از آن بی اطلاع هستند . در این حملات , نفوذگران بدون زحمت و تلاش برای اسکن و عیب یابی وبسایت , اقدامات خطرناکی میکند . انواع این کدنویسی ها مانند سوکت نویسی و غیره را در ادامه به تفصیل تشریح خواهیم کرد که البته برای کاربران مبتدی شاید درک آن ها کمی دشوار باشد

مورد بعدی از این کد ها PHP و خط فرمان است
دوستان عزیز اغلب توسعه دهندگان و برنامه نویسان به خوبی میدانند که بهترین زبان برای نوشتن صفحات پویا و توسعه وب , PHP است . اما در عین حال نیز اغلب آنان نمیدانند که PHP میتواند به عنوان یک زبان شل اسکریپت نیز به خوبی عمل کرده و نتایج مطلوب و گاها مخربی را نیز به دنبال داشته باشد.

دوستان عزیز شاید اکنون برای شما این سوال پیش بیاید که در خط فرمان , چگونه میتوان ورودی ها و داده های مورد نیاز برنامه را به آن ارسال کرد؟ جواب ساده است , PHP برای این کار , آرایه ARGV را تعبیه کرده است , به طوری که اولین مقدار ورودی با SARGV 1 و دومی با SARGV 2 و به همین ترتیب تا انتها میتوان ورودی را دریافت کرد . در این میان , متغیر SARGV 0 , نام فایل PHP نوشته شده را یدک میکشد و متغیر SARGC نیز تعداد ورودی ها و یا به عبارت دیگر , مقدار داده های آرایه ARGV را در خود نگه میدارد . شاید فرد با خود بگوید که چگونه میتوان با پرسش و صبر کردن برای جواب , مقدار خواسته شده را از کاربر توسط خط فرمان دریافت کرد ؟ PHP هیچگونه تابعی که به طور مستقیم این کار را برای ما انجام دهد ندارد و برای این کار , برنامه نویس یک تابع مینویسد .

مورد بعدی از این روش های سوکت نویسی است
دوستان عزیز یکی دیگر از مهمترین قسمتهای اکسپلویتینگ ( علم نوشتن کدهای مخرب ) , آشنایی با برنامه نویسی شبکه و توابع آن است که در ادامه , در زبان PHP با آن آشنا میشویم . یکی از امکانات PHP که توسعه دهندگان ممکن است به صورت اتفاقی با آن برخورد کرده باشند , مجموعه ای کامل از توابع برنامه نویسی شبکه است که به وسیله این توابع میتوان به راحتی و با سرعت بین Clint و سرور ارتباط برقرار کرد . استفاده از علم سوکت نویسی نیز که اغلب با تکیه بر تابع Socket – Connect نوشته میشود

دوستان عزیز توجه کنید که اغلب برای کپی کردن اطلاعات ورودی , از طریق ایجاد صفحات در ایمیل ها کاربرد دارد . امروزه سوکت نویسی با توجه به امن تر شدن سیستم ها , جایگاه اجرایی خود را به نحو چشمگیری از دست داده است و همین بی اعتباری اجرایی نیز در مورد روش دیگر این اقدامات , نوشتن پورت اسکنرها و همچنین بافر اورفالو و اتصال معکوس ( حملات معروف به درب پشتی ) صدق میکند