discord icon
سرور دیسکورد گاردایران

پست های پیشنهاد شده

باسلام خدمت شما 

دراین وب پیج قصد دارم یک ترجمه از کتاب Hacking exposed  و از تجربیات خودم به این کتاب اضاف کنم و انرا برای شما قرار دهم...

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

موضوع اول (مقدمه)

تهاجمات در زمان های قدیم رایج بوده است اما در ان زمان ها بااستفاده از توپ و تفنگ و ابزار الات سخت به نبرد یکدیگر میپرداختند؛ اما در زمان حال دیگر تجهیزات سخت و جنگ افزارها، کاربردخاصی ندارند و جای خودرا به ابزار الات نرم یا تکنولوژی های هکوسیستم داده اند پس نتیجه میگیریم که در زمان حال باید برای رویارویی با مهاجمان با متود های هکوسیستم اشنا شد و انهارا به بهترین شکل درک کرد...

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

موضوع دوم  (sql injection): 

 در معنی لغوی آن اسیب پذیری sql injection  بصورت حملات مبتنی بر دیتابیس تفسیر میشود که این گونه معنی لغوی به ما نشان میدهد که اسیب پذیریsql اخرین تاثیرش را بر روی  دیتابیس قربانی پیاده میکند و موجب رخنه می شود... 

 حال چگونه یک رخنه در اپلیکیشن وب رخ میدهد؟؟؟ رسیدن پردازش ها به پایگاه داده و... دارای یک روند کلیشه ایست (بصورت زیر بیان می شود...):

url->request->applicaton->request->web server ->request->database central data  saver     and  reverse

توضیح تکمیلی: 

گام اول یک فیلد یا یک txtbox  که یک value را از ما دریافت میکند و در واقع یک request به اپلیکیشن ارسال میکند...

گام دوم request به وب سرور منتقل شده و صحیح بودن درخواست در اپلیکیشن چک میشود...

گام سوم request  در صورت مورد پردازش قرار گرفتن درخواست توسط وب سرور به گام بعدی سوق پیدا میکند... 

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

در حملات sql injection ،گام سوم بسیار مورد اهمیت است البته گام دوم نیز مهم است اما به اندازه گام سوم مورد توجه نیسـت!!!چرا؟؟؟

هکران و نفوذ گران گام دوم را فقط بصورت یک صفحه یا یک برنامه ساده در یک سرور میبینند و فقط اینرا درک میکنند که از یک زبان برنامه نویسی تحت سرور   برای راه اندازی ان استفاده شده است و درک این را دارند که یک قطعه کد را میتوان توسط ازمون و خطا سنجید و اسیب پذیری انرا کشف کرد!اما واقعیت این نیست؛ هکران نخبه و کسانی که علاوه بر هک و امنیت به اصول و مبانی شبکه نیز اشنا هستند میتوانند این موضوع را درک کنند!این موضوع در  هفتمین  لایه از مدل مرجع شبکه های کامپیوتری(application layer )  مطرح است و ان این است که تمام پروسه هایی که یک اهراز هویت یا اعمال فیلترینگ بر دسترسی  کاربران غیر مجاز اعمال میشود در این لایه قرار دارد...

پس خیلی جاها از اررور هایی مانند fatal error یا اررور هایی که برخیاز افراد به وب سرور نسبت میدهند در واقع در وب اپلیکیشن اتفاق افتاده است... (همین موضوع بیشتر گستردش نمیکنم  شاید مفهوم نشه...)  ;)

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

گفته و ترجمه کتاب :حملات تزریق براساس یک مشکل واحد بوجود می اید که در بسیاری از فن آوری ها هنوزه هم رایج است؛ یعنی جدایی جدی میان دستورالعمل های برنامه و داده های کاربر (همچنین به عنوان ورودی کاربر  تعریف شده است). این مشکل به مهاجمان اجازه میدهد با وارد کردن دستورالعمل ها یک رخنه را انجام دهند پس  توسعه دهنده انتظار دارد که سایت ایمن است و کد نویسی را بصورت امن نوشته است و نکته دیگری که بیان شده است این است که کد نویس فقط به این توجه میکند که یک قطعه کد sql   تنها کاربرد خوشایندی دارد نه اینکه به نفوذ منجر شود  و علاوه بر این موضوع نکته دیگری است که  فرض میکند تمام دستورات برای کارهای خوشخو تنظیم شده اند و یک  مدیر معمولی اطلاع ندارد که این دستورات در نفوذ نیز قابل استفاده است (:

بصورت دقیق یک حمله موفقیت امیز سه فاز را شامل می شود:

فاز اول  شناسایی فناوری مورد استفاده برنامه (زبان برنامه نویسی و سخت افزار های مورد استفاده(دارای ایراد))

فاز دوم شناسایی تمام ورودی هایی که یک مقدار را دریافت میکنند(قابل تعریف در متود های Get(HTTP) && Post)  یا تمام ورودی هایی که یک مقدار را میپذیرند...

فاز سوم یافتن ورودی های اسیب پذیر (ورودی هایی که یک کاربر اقدام به تست اسیب پذیری میکند مانند قرار دادن یک مقدار  نامشخص  بعد از شناسه url. مانند ''''id='''''''''1

 

تازه اول کاره (پایان صفحه اول :blink:)

1 از 200 page :huh:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

موضوع دوم (حملات تزریق sql متناسب):

در این موضوع سعی میشود  در رابطه با اسیب پذیری  sqli  بیشتر  توضیح داده شود و همچنین سعی میشود  چند نکته در رابطه با اسیب پذیری sqli شرح داده شود..

اولین توضیح این است که اهراز هویت به موردی در تست نفوذ گفته میشود که اولین دسترسی به ماشین میزبان(قربانی) توسط کاربر(رخنه گر) کسب شده باشد...پس در اینصورت میتوان گفت یک دسترسی به ماشین یا دیوایس میزبان(قربانی)  کسب کرده ایم که به این اهراز هویت گفته میشود ...

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

دسترسی دائمی: دسترسی دائمی نوعی از حملات اکتیو بشمار میرود که یک رخنه گر سعی میکند دسترسی خود را توسط شل کد ها(رابط نرم افزار با نرم افزار or رابط سخت افزار با نرم افزار) افزایش دهد یا سعی میکند توسط Malware ها یک سیستم را بدست بگیرد و ان سیستم شاید ادمین یک سایت معتبر باشد و opration system  ان کنترل کننده محتوای یک سایت باشد... پس اینگونه حملات برای دسترسی دائمی(منظور از دائمی  تایم خریدن است!!!) به سرور ها و سیستم ها یا حتی تجهیزات شبکه انجام میشود...

دسترسی موقت: دسترسی موقت میتوان بین حملات اکتیو و پسیو تعریف کرد زیررا اینگونه حملات هم ممکن است قابل رهگیری باشد و هم قابلیت اینرا دارد که اصلا شناسایی نشود و یک کار بسیار تمیز انجام  شود (: !!! ...

continues:ph34r:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

توضیح و ترجمه کتاب:

مهاجمان برای نفوذ و دسترسی اطلاعات ذخیره شده و کنترل کامل پایگاه داده از  sql injection استفاده میکنند و کنترل پایگاه داده توسط رخنه گر از راه دور انجام میشود...

sql مخفف چیست؟؟؟    structured query language است که  استانداری برای دسترسی به منابع پایگاه داده است... پس معنی لغوی ان زبان ساخت یافته پایگاه داده است؛ بیشتر برنامه های وب برای ذخیره اطلاعات خود از یک دیتاسنتر استفاده میکنند پس پایگاه داده نقش ذخیره داده های حیاتی و محرمانه را برعهده دارد و همان کاری را انجام میدهد که یک دیتاسنتر موظف به انجام ان است...

نتیجه کلی: همه ی برنامه های تحت وب یک دیتاسنتر دارند که میتوان انرا پایگاه داده نام برد و دیتاسنتر برای هر برنامه وب ضروری است...

قطعه کد های  .... sql server or my_sql or   علاوه بر کارایی های مفیدی که دارند میتوانند برای کارهای نامناسب نیز بکار گرفته شوند(مانند تابع union در روش union base)

مثال :   http//:TarGet.CoM/Id=120 تشریح: بصورت پنج گام تشریح میکنم:

گام اول : یک url  داریم که اطلاعات را برای ما بصورت Get  نمایش می دهد  که توسط پروتکل Http(Heper text transfer protocol) قابل راه اندازی است ، پس اطلاعاتی مانند شناسه ادرس و مقدار ادرس برای ما قابل دیدن است(id=120)...

گام دوم:  یک value یا مقدار داریم که به شناسه نسبت  داده شده است که ممکن encode شده باشد یا خیر (منظور sqli نیست) که مقدار برابر با شناسه است که اطلاعات شناسه را بیان میکند و در واقع یک شناسه را نسبت به شناسه دیگر متمایز میکند پس بیانگر اطلاعات یک پیج است...

گام سوم: پروتکل http  موجود در شبکه کامپیوتری موجب میشود اطلاعات بدرستی Transfer  یا منتقل شود ... پس برای رساندن اطلاعات به کاربران از قوائد http استفاده میشود...

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

گام  پنجم: پس با تمام مفاهیم کارکرد ان اشنا شدید و فقط باید بفهمید که دستورات چگونه پردازش میشود دستورات همانند روش های بالایی را میتوان تفسیر کرد اما تفاوت در اینجاست که دستورات ما بلوکه نمی شود بلکه بصورت دستورات اصلی سرویس دهنده قابل پردازش جلوه میکند پس میفهمیم اسیب پذیری sqli در پایگاه داده بوجود نمی ایدبلکه در وب اپلیکیشن تاثیر خودرا نشان میدهد که موجب میشود تمام اطلاعات فراخوانده شده در پشت صفحه استاتیک وب اپلیکشن ذخیره شود و سپس در نهایت توسط دستورات sql خوانش و اکسترکت می شود پس تمام اطلاعات در اپلیکیشن وب ذخیره شده و تنها با دستورات sql خوانده و بیرون کشیده میشود پس در مراحل قبل ما اطلاعات را فراخوانده بودیم و در پشت دیواره app  ذخیره سازی منابع اطلاعاتی را انجام داده بودیم پس نتیجه هر وقت یک درخواست یا یک پیام به یک سایت فرستاده شود که بصورت یک پارامتر در نظر بگیریم ان مقادیر که هیچ ربطی به درخواست ما ندارند توسط اسیب پذیری نا بجا یک انتقال اطلاعات انجام میشود که در پشت دیواره برنامه قابل اجراست تنها بایستی فرخوانده شود... شاید گیج شده باشید مشکلی نیست بعدا توضیح میدهم...

 

خسته نباشید(پایان صفحه دوم:blink:)

2 از 200 page  B)

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اشنایی با دستورات Sql_injection=

 

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

روند پردازش اطلاعات که قبلا بیان کردیم شامل دو گزینه بود یکی درست بودن درخواست (اطلاعات) و دیگری پردازش درخواست(اطلاعات) توسط وب سرور که ملزم به برقراری ارتباط ایمن بود پس نتیجه کلی این است که دستورات منطقی مانند AND 1>1  درستی یا اشتباه بودن  یک عبارت را به وب سرور برگشت میدهد که موجب میشود رخنه بدرستی  انجام شود یا انجام نشود...

image.png.f84e79d3f4c33198776d0663a20b7914.png

برای اینکه این موضوع را تمام کنیم و بهتر متوجه شوید این شکل را شرح میدهم...

یک فیلد نام USR ID  تعریف شده و فیلد دیگر PASSWORD تعریف شده است که این دو فیلد یک VALUE دریافت میکنند  پس این دو یک VALUE دریافت میکنند که این دو مقدار های دریافت شده را درون یک  ساختار شرطی تعریف میکنند تا درصورت TRUE بودن انرا نمایش دهد یا درصورت FALSE  بودن جوابی برای ما نمایش داده نشود... پس این دو فیلددرون یک ساختار شرطی تعریف شده اند پس درصورت صحیح بودن مقادیر یک اتصال به پایگاه داده ایجاد میکند که این اتصال موجب میشود دستور SELECT*FROM وارد شده در فیلد برای ما پردازش شود که اطلاعات ذخیره شده در پشت مخازن اپلیکیشن برای ما استخراج میشود(توضیح داده شده)...

پس این دستور زمانی مورد استفاده است که ساختار شرطی ورودی مارا تایید کند و پردازش توسط وب سرور انجام شود که از دستور select *from  استفاده میکنیم که تمام اطلاعات موجود در یک فیلد دیتابیس را فراخوانی کنیم و با استفاده دستور where  موقعیت اطلاعات دیتابیس را مشخص میکنیم و اطلاعاتی بی ربط که خودتان بهتر میدانید...

پایان صفحه سوم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

توضیح یک تصویر  در رابطه با Sql_Injection:

image1.png 

گام اول:  فرد مهاجم یا ATTACKER از طریق روش های INFORMATION GATHERING  درباره قربانی خود اطلاعاتی را بدست می اورد...

گام دوم: فرد مهاجم اطلاعاتی را در دست دارد و میفهمد که این سایت دارای اسیب پذیری پایگاه داده است...

گام سوم: فرد مهاجم با استفاده از اسیب پذیری پایگاه داده یک سری از دستورات را به وب سرور ارسال میکند...

گام چهارم: وب سرور دستورات مخرب مهاجم را بلاک نمیکند بلکه به وب اپلیکیشن ارسال میکند...

گام پنجم: وب اپلیکیشن دستورات را میخواند که این را عرض کنم وب اپلیکیشن هیچ گونه دانشی نسبت به قطعه کدهای داینامیک ندارد و وب سرور هم همین گونه است!!!

گام ششم: وب اپلیکیشن  دستورات مخرب را به پایگاه داده ارسال میکند...

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

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

گام نهم: مهاجم کدهای رمزنگاری شده(hash) را decrypt میکند و اطلاعات را میخواند و عمل کرکش با موفقیت انجام میشود...

ادامه دارد...

 

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ادامه:

نکته: در اسیب پذیری های وب اپلیکیشن مخصوصا sqli مجوزهای دسترسی تنها برروی یک data storage یا dt base محدود نمیشود و شامل پرمیشن سرور نیز میشود...(توضیح در اخر مبحث)

تعریف ساده شکل بالا:

1: اسیب پذیری در وب اپلیکیشن ایجاد شده...

2:رخنه گر اطلاعات مناسب را بدست می اورد...

3: از طریق اطلاعات بدست امده اطلاعات مهم را دسته بندی میکند...

4: اطلاعات مهم را تجزیه و تحلیل میکند...

5: نسبت به باگ sqli موجود در اپلیکیشن وب اگاه میشود...

6:پایان مراحل اولیه...

7: مهاجم ورودی های برنامه را شناسایی میکند...

8:مهاجم دستورات  مخرب پایگاه داده را وارد میکند...

9: مهاجم دستورات مخرب را بصورت دستورات خوشخو پایگاه داده برای وب سرور تفسیر میکند...

10: دستورات به پایگاه میرسد البته موارد بیان شده قبلی میبایست در نظر گرفته شود...

11: اطلاعات توسط پایگاه داده به کاربر(مهاجم) ارسال میشود البته باید اطلاعات فراخوانده شده توسط دیتابیس ثبت شده باشد...

12: مهاجم اطلاعات دریافت شده را decrypt میکند... (تبدیل مقادیر رشته ای تودرتو به مقادیر رشته ای تفکیک شده)

13: بستگی به هدف مهاجم کارایی اطلاعات مشخص میشود...

و مراحل دیگر که خودتان اگاهی کامل دارید...

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

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اموزش  xpatch injectin:

xml چیست:  xml مخفف extensible Markup Language است  به معنای زبان نشانه گذاری گسترش پذیر است...

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

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

حیطه بزرگ سعی بر این دارد که این مفهوم را به ما برساند  که زبان xml یک زبانی ماشینی است یا مورد استفاده در سیستم های کاربردی است(سیستم عامل ها)...

پس زبان های ماشینی دستورات ماشینی را برای ما تفسیر میکنند و xml هم همینگونه است یعنی با استفاده از زبان xml یک ارتباط بین کاربر و ماشین برقرار میشود که این ارتباط سعی دارد زبان های ماشینی را در سطح قابل فهم برای انسان تفسیر کند پس در نهایت میفهمیم که یک برنامه xml یک برنامه با سطح زبانی بالا (زبان انسان) و کارایی بالاست...

xpatch injection  به معنی تزریق xml با احراز هویت نادرست است...

ادامه دارد....

 

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری