یک روز ، یک جمله ...

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

26 آبان

امنیت و راه های مقابله با نفوذ - بخش چهارم مطلب ویژه

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

آشنایی با باگ FCKEditor یا CKEditor :

این باگ مربوط به ویرایشگر FCKEditor می باشد که یک ویرایشگر متن باز بوده و بر روی وب سایت های تحت WordPress استفاده می شود. انواع مختلف باگ های مربوط به این ویرایشگر در سایت exploit-db.com وجود دارد و ما می خواهیم یک مورد را باهم بررسی نماییم.

جهت شناسایی وب سایت هایی که این ویرایشگر را دارند، از Dork زیر استفاده نمایید:

Inurl:/FCKEditor/editor/filemanager/upload/

این Dork یک Dork پایه می باشد و می توانید Dork های متعددی را ایجاد نمایید. بعد از دریافت نتایج Dork بالا و بازکردن چند هدف مراحل زیر را طی نمایید:

  • از لیست نمایش داده شده درون این وب سایت ها می بایست فایل text.html را پیدا کنیم.
    بعد از باز شدن test.html گزینه ASP را به PHP تغییر دهید.
    سپس اقدام به آپلود فایل خود با پسوند txt نمایید.

به منظور آپلود فایل HTML می توانید از intext:”portail Dokeos 1.8.8” استفاده نمایید. Exploit این Dork نیز /dokeos/main/inc/lib/fckeditor/editor/filemanager/upload/test.html می باشد.

آشنایی با باگ مربوط به Register :

با استفاده از Dork زیر می توانید به وب سایت هایی دستیابی پیدا کنید که دارای باگ در بخش ثبت نام خود هستند:

inurl:interphoto.php?id=

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

آشنایی با باگ امنیتی افزونه Fabrik در جوملا:

در مدیریت محتوای جوملا افزونه های متعددی وجود دارند که هر کدام از این افزونه ها ممکن است باگ خود را داشته باشند. یکی از این افزونه های Fabrik نام دارد که با Dork زیر می توانید سایت هایی که این افزونه را دارند پیدا نمایید:

inurl:index.php?option=com_fabrik

بعد از به دست آوردن وب سایت های متعدد، لینک زیر را جایگزین لینک اصلی وب سایت نمایید:

/index.php?option=com_fabrik&c=import&view=import&filetype=csv&tables=1

در صفحه لود شده می توانید صفحه دیفیس خود با فرمت HTML را آپلود و از مسیر website/media/Deface Page.html آنرا فراخوانی نمایید.

لیست وب سایت هایی که می توانید سایت های هک شده را در آنجا دیده و اقدام به ثبت سایت نمایید:

www.zone-h.com
www.zone-hc.com
www.z0n.ir
www.dark-h.org
www.aljyyosh.org

انواع اسکنرهای امنیتی وب سایت

  • اسکنر NetSparker
  • اسکنر Acunetix
  • اسکنر Nessus
  • اسکنر Vega

به دست آوردن Dork ها توسط وب سایت https://www.punkspider.org به راحتی قابل انجام است.


آشنایی با Blind SQL Injection :

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

برای این نوع حمله از مقدارهای همیشه درست و غلط استفاده می کنیم. به این معنا که در انتهای URL مقدارهای زیر را قرار می دهیم:

And 1=1
And 1=2

در صورتیکه با مقدار همیشه درست 1=1 سایت به صورت کامل لود شد که آسیب پذیری را ندارد ولی اگر با مقدار 1=2 به صورت کامل لود نشد به این معناست که سایت در مقابل حمله تزریق SQL آسیب پذیر است.

خب وقتی متوجه شدید که سایت در مقابل این نوع حمله آسیب پذیر می باشد، زمان آن رسیده تا به سراغ یافتن Version برویم. برای این منظور از دستور زیر استفاده نمایید:

Substring (*,1,1)

این دستور را می بایست به جای یک طرف دستور And قرار دهیم و طرف دیگر را با یک مقدار حدسی پر نماییم. اگر مقدار هر دو طرف برابر باشد صفحه به صورت کامل لود می شود در غیر این صورت این اتفاق نمی افتد. برای استفاده از این دستور در پیدا کردن Version داریم:

And substring(@@version,1,1)=4

این بدین معناست که اگر نسخه 4 بود صفحه کامل لود شود در غیر این صورت صفحه کامل لود نشده و می توان متوجه شده که نسخه 4 نمی باشد. حال می توانیم مقدار 4 را به 5 تغییر دهیم و مجدد امتحان کنیم.

نکته: مقدار = قرار داده شده در دستور And می تواند > و < نیز باشد.

حال می خواهیم اطلاعات مربوط به Table را به دست آوریم. برای این کار باید از دستور زیر استفاده کنیم:

And ascii(substring((select table_name from information_schema.tables limit 0,1),1,1))><ascii code>

روند این دستور به این شکل می باشد که به صورت حدسی به نام Table پی میبریم. این کار نیز با استفاده از کدهای اسکی که معادل عددی حروف می باشند امکان پذیر است. در مقدار <ascii code> در انتهای دستور باید مقدار عددی قرار دهیم، به طور مثال عدد 50. اگر سایت با این مقدار به صورت کامل لود شد یعنی اینکه کارکتر اول از مقدار عددی 50 بزرگتر می باشد. حال از کجا می دانیم که این مقدار مربوط به کارکتر اول می باشد؟ ای بخش limit 0,1),1 و عدد 1 استفاده شده در انتهای آن می توان گفت که مقدار عددی مربوط به کارکتر اول می باشد. پس زمانیکه متوجه شدید که مقدار عددی برای کاراکتر اول چیست باید این عدد 1 را به 2 تغییر دهید تا مقدار عددی کارکتر دوم را به دست آورید.

نکته: زمانیکه مقدار عددی یک کارکتر را پیدا کردیدکافیست در برنامه Notepad با گرفتن دکمه Alt و زدن این مقدار عددی، معادل کاراکتری آنرا به دست آورید.

خب حال می خواهیم اطلاعات Table را به روش زیر بدست آوریم. برای این کار از دستور زیر استفاده می کنیم:

And (select 1 from <table_name> limit 0,1)=1

که به جای <table_name> باید نام جدول قرار دهید. به طور مثال users یا admin که اگر صفحه کامل لود شد یعنی این table وجود دارد در غیر این صورت این Table وجود ندارد.

حال بعد از پیدا کردن نام Table می خواهیم ستون های جدول را استخراج کنیم. برای این کار باید از دستور زیر استفاده نماییم:

And (select substring(concat(1,<column_name>),1,1) from <table_name> limit 0,1)

در این دستور نیز باید به جای table_name مقدار پیدا شده را قرار دهیم و به جای column_name نام ستون ها را به صورت حدسی قرار دهیم به طور مثال password یا username را قرار می دهیم. در صورتیکه صفحه کامل لود شد یعنی مقدار داده شده صحیح می باشد در غیر این صورت می بایست مقدار را تغییر دهیم.

یک روش دیگر برای به دست آوردن Version وب سایت:

به منظور استخراج Version دیتابیس یک وب سایت دستور زیر نیز مورد استفاده می باشد:

Select if ((ifnull (ascii(substring((select @@version) ,1,1)),0)=52),BENCHMARK(900000,sha1(1)),1))

این دستور شامل موارد زیر است:

  • مقدار Select if یک دستور شرطی است که بیان کننده شرط کل مقدار با 1 انتهایی دستور است
  • مقدار ifnull برای آن است که اگر مقدار اولیه Null بود مقدار دوم یعنی 0 را بر می گرداند.
  • مقدار BENCHMARK برای ایجاد تاخیر در اجرای صفحه است که هر 10000 معادل 1 ثانیه تاخیر است. در صورتیکه شرط ما یعنی برابر بودن version با عدد 52 که یک کد اسکی است و معادل 4 می باشد درست باشد، وب سایت با 9 ثانیه تاخیر اجرا شده و تایید می کند که Version دیتابیس برابر 4 است.
رضا اردانه

مدیریت وب سایت آموزش دیجیتال

نظر دادن

خبرنامه

برای دریافت جدیدترین خبرهای سایت در خبرنامه عضو شوید