در این بخش از دوره آموزشی تست نفوذ سطح متوسط که برگرفته از دوره SEC642 می باشد به مبحث آشنایی با CMS یا سیستم مدیریت محتوا می پردازیم.
Content Management Systems
همانطور که ما آزمونهای نفوذ برنامههای کاربردی مختلف وب را انجام میدهیم، اغلب اهداف شناختهشدهای را مییابیم که میتوانیم به آنها حمله کنیم. این اهداف خاص مجموعهای از محتوا و ویژگیهای منحصر به فرد را فراهم میکنند که ما میتوانیم در طول آزمون خود استفاده کنیم زیرا ما اپلیکیشن را ارزیابی میکنیم و اینکه چگونه خطرات را در سازمان آشکار میکند. البته، این مساله حتی بدتر هم میشود اگر برنامه آسیبپذیریهای شناختهشده ای داشته باشد که ما میتوانیم از آنها بهرهبرداری کنیم.
همانطور که ما به این اهداف نگاه میکنیم، ما باید پلتفرم را درک کنیم. اگر ما درک نکنیم که برنامه به کاربران چه ارائه میدهد، احتمالا نمیتوانیم درک کنیم که چگونه از این ویژگیها استفاده کنیم و یا از آنها سو استفاده کنیم. این بدان معنی است که ما باید بدانیم هدف در حال اجرا چیست و چگونه کار میکند.
Popular Content Management Systems
CMS بیشتر یک برنامه است تا چارچوب. به نظر میرسد که SharePoint محبوبترین گزینه در شبکههای شرکتهای داخلی باشد و همچنین “وردپرس” نیز در اینترنت، طرفداران فراوانی دارد.
Changes to the Methodology
همانطور که این اپلیکیشنها را بررسی و آزمایش میکنیم، به خاطر داشته باشید که روش ما تغییر نمیکند. ما چهار مرحله را که برای تمام آزمایشها استفاده میکنیم را انجام میدهیم:
• Recon
• Mapping
• Discovery
• Exploit
این مراحل تغییر نمیکنند زیرا برنامهها مانند هر برنامه دیگر، سفارشی یا غیره عمل میکنند.
اگرچه این روش تغییر نمیکند اما دانستن این که چه برنامهای در حال اجرا است میتواند به سرعت بخشیدن به آزمایش ما کمک کند. این به این دلیل است که ما ممکن است از حملات شناختهشده علیه برنامه استفاده کنیم. ما میتوانیم از این حملات برای ارزیابی سریع آسیبهای موجود استفاده کنیم.
همچنین ممکن است ابزارهایی وجود داشته باشد که به ما در تعیین اینکه پلتفرم چه بوده و چه آسیبپذیریهایی در آن وجود دارد، کمک کند.
Understanding the Target
به عنوان اولین گام برای هدف قرار دادن برنامههای خاص شناختهشده، ما باید بدانیم که هدف چیست و چگونه کار میکند. این بدان معنی است که ما میتوانیم به طور موثرتری مشکلات موجود را درک کنیم. بدون حداقل یک درک اساسی، ما به احتمال زیاد مشکلات قابلتوجهی را از دست خواهیم داد. این بدان معنی است که آزمایشی که ما انجام میدهیم نیازهای هدف ما را برآورده نخواهد کرد. دو دسته از منابع برای درک وجود دارد.
اولین موضوع تجربه ما از هدف است. بدیهی است، اگر شما یک مدیر SharePoint بودید، درک بهتری از سیستم و معماری آن نسبت به کسی داشتید که یک SharePoint را در کتاب ۱۷ ثانیه خوانده است. این موضوع، الزامی برای تست یک برنامه نیست چون برنامههای کاربردی زیادی در آنجا وجود دارد؛ احتمال اینکه قبلا آن را اجرا کرده باشید زیاد نیست مگر برای چند مثال خاص.
روش دوم تحقیق در مورد پلتفرم است. واضح است که ما میتوانیم این پلتفرم را در گوگل جست و جو کنیم و ببینیم متخصصان در این زمینه چه میگویند. نگاه کردن به معایب برنامه در وب سایتهایی مانند osvdb.org یا دیگر سایتهای آنلاین راه خوبی برای شروع است.
همچنین به طور منظم توصیه میشود که افراد یک آزمایشگاه تست ساده بسازند. نصب وردپرس در یک VM یا ماشینهای دیگر بسیار ساده است. راهاندازی سیستمهای آزمایشی و سپس تلاش برای هک کردن آنها. این به ما اجازه میدهد تا تجربه خود را با پلتفرم به دست آوریم و عیوبی را که میتوانیم گزارش کنیم پیدا کنیم تا آنها رفع شوند.
البته، شناسایی پلتفرم اولین بخش این آزمایش است. اگر ما نتوانیم بفهمیم که پلتفرم چیست، همه مزایایی که داشتیم را از دست میدهیم!
البته، میتوانیم از سازمان یا شرکت هدف خود نیز نوع پلتفرم را بپرسیم و یا در طول بسیاری از تماسهای انجام شده یا جلسات مختلف، به ما گفته خواهد شد که ما یک سیستم جوملا یا وردپرس را آزمایش میکنیم. این سادهترین راه برای شناسایی پلتفرم است اما همیشه در دسترس نیست.
برای مثال، بسیاری از افراد میخواهند ببینند که آیا شما میتوانید پلتفرم را شناسایی کنید یا خیر. شاید آنها از روشهای مبهم سازی (obfuscation) استفاده کرده باشند کردهاند و یا میخواهند ببینند که شناسایی آن چقدر دشوار است.
اگر ما بخواهیم آن را کشف کنیم، چند روش مختلف را پیش رو خواهیم داشت. اول، ما میتوانیم آن را به صورت دستی انجام دهیم. مشاهده عبارتی مانند Powered By WordPress در پایین صفحه چندان سخت نیست. سپس ما فقط چند درخواست دستی برای فایلهای شناختهشده ایجاد میکنیم و اگر آنها آنجا هستند، مطمئن خواهیم شد که پلتفرم را به درستی شناسایی نمودهایم.
همچنین مجموعهای از ابزارها وجود دارند که میتوانند به ما در انجام این کار کمک کنند. این مورد کمی بهتر به نظر میرسد زیرا ابزارها میتوانند تعداد کمی پلتفرم بیشتر از آنچه که ما به یاد داریم را شناسایی کنند و معمولا آنها میتوانند به ما بگویند که کدام نسخه خاص از پلتفرم در حال اجرا است.