رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

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

در این تاپیک آموزش یکی از راههای هک و نفوذ سایت هارو که با نام Sql Injection Attack میشناسیم رو در این بخش قرار میدم و همچنین در این بخش هم آموزش تصویری هک سایت توسط

 

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

 

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

 

 

پیروز باشین

 

 

 

 

.

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


اولین بخش از آموزشهای باگ Sql Injection رو شروع می کنیم .

 

 

 باگ sql زمانی رخ می دهد که برنامه نویس داده های ورودی  ( Input Value ) را بدون کنترل مورد پردازش قرار داده و کد نویسی می کند و هکرها یا همون نفوذگرها از همین مشکل کد نویسی استفاده کرده

 

و  کنترل کامل سایت یا سرور مورد نظر را در دست میگیرند ونتیجه می گیریم هرکدی که از ورودی های کاربر برای جستجو در بانک اطلاعاتی  ( Database )  بدون بررسی و کنترل بکار برده شود احتمال

 

یک حمله موسوم به Sql Injection را در پی خواهد داشت .

 

 
همچنین ورودی ها می تواند از طریق URL باشد و چه از طریق متد GET و یا چه از طریق متد POST و جهت آشنایی شما یک نمونه کوئری که بدون بررسی ، از متغیرها استفاده میکند و دارای باگ

 

Sql Injection هست را با هم بررسی می کنیم :

This is the hidden content, please

 به قطعه کد بالا دقت کنید و متوجه می شوید متغیر postid از ورودی id که در url میباشد مقداردهی میشود و همان ورودی که از URL را دریافت میکند به طور مستقیم مورد پردازش قرار می دهد و

 

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


This is the hidden content, please
id=3

 

 

پایان بخش اول از سری آموزشهای حملات Sql Injection

 

.

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


  • 4 ماه بعد...

با اجازه از مدیر گرامی P0!s0nC0d3  بنده هم چند مرحله از این آموزش رو قرار می دم.

در این جلسه شما با سه مرحله از 6 مرحله آشنا می شید و در پست های اینده ادام ی مراحل رو قرار می دم

 

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

اولین قدم:تست نفوذ پذیری سایت

نکته ما از تارگت فرضی زیر استفاده می کنیم.

This is the hidden content, please

برای تست نفوذ پذیری چند راه هست.

1-تست با استفاده از اسکنر هایی مانند اکانتیکس و وگا

2-اضافه کردن کوتیشن:

در روش دوم تارگت به این صورت نشون داده میشه

This is the hidden content, please
6

نکته:شما می تونید به جای کوتیشن از 27% هم استفاده کنید. به این صورت:

This is the hidden content, please

خب بعد از گذاشتن کوتیشن یکی از دو اتفاق زیر میفته

1-صفحه بعد از بالا اومدن هیچ تغییری نمی کنه.(سایت آسیب پذیری sql  ندارد)

2-صفحه ارور می ده و یا ناقص لود میشه(سایت آسیب پذیره)

مرحله ی دوم:پیدا کردن ستون ها وستون های آسیب پذیر.

برای این کار از دستور order by  استفاده می کنیم.(order by  از نظر لغوی به معنای دستور دادن به وسیله ی ...است) توجه کنید که باید در قسمت آخر ستون رو حدس بزنید.در عبارت زیر ستون حدسی رو 10 قرار دادم.

مثال:

--

This is the hidden content, please

نکته:به جای + از space  هم می تونید استفاده کنید.اما برای این که گیج نشید بهتره از + استفاده کنید.

مثال:

This is the hidden content, please
order by 10—

خب الان دو حالت به وجود میاد:

1-      سایت بدون ارور نمایش داده میشه.

2-      سایت ارور sql می ده. و ما باید تعداد ستون هارو کم تر کنیم.

حالا فرض می کنیم سایت ما 5 تا ستون داره.(البته ما نمی دونیم.) پس به ای صورت میشه:

This is the hidden content, please
This is the hidden content, please
     ارور داد

This is the hidden content, please
This is the hidden content, please
     ارور می ده

This is the hidden content, please
This is the hidden content, please
      ارور می ده

This is the hidden content, please
This is the hidden content, please
      ارور می ده

This is the hidden content, please
This is the hidden content, please
      بدون ارور

This is the hidden content, please
This is the hidden content, please
     بدون ارور

و همین طور ادامه پیدا می کنه تا عدد 1.پس ما فهمیدیم تارگتمون(هدف) 5 تا ستون داره.

حالا باید با استفاده از دستور union select  تیبل آسیب پذیر رو پیدا کنیم.

مثال:

This is the hidden content, please
This is the hidden content, please

خب با استفاده از این دستور ستون آسیب پذیر رو پیدا کردیم.بر فرض 3.

نکته:گاهی اوقات ممکنه یه سایت چند تا ستون آسیب پذیر داشته باشه.

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

این مرحله بسیار مهمه چون طریقه ی هک کردن بعد از این مرحله به ورژن تارگت مربوطه.در این مقاله آموزش ورژن های بالای 5 رو یاد می گیرید.

برای پیدا کردن ورژن دیتابیس کافیه که به جای ستون آسیب پدیر version()  رو قرار بدید.

مثال:

This is the hidden content, please
This is the hidden content, please

ستون 3  آسیب پدیر بود حالا به جاش version()  رو قرار می دیم به این صورت:

This is the hidden content, please
This is the hidden content, please

تارگت بعد از لود شدن ورژن رو به شما نشون می ده.بر فرض  5.1.2

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


  • 10 ماه بعد...
  • 4 هفته بعد...
  • 5 ماه بعد...

سلام خسته نباشید اقا من یکم مشکل دارم مشکل من ر قسمت union+select+1,2,3,4,5 هستش ستون اسیب پذیرنده رو بهم نمیگه چیکار کنم

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


سلام خسته نباشید اقا من یکم مشکل دارم مشکل من ر قسمت union+select+1,2,3,4,5 هستش ستون اسیب پذیرنده رو بهم نمیگه چیکار کنم

درود

ببینید چندین راه داره

استفاده از distinct خیلی جا ها کمک میکنه

1 بایپس به روش های معمول

2 اینجکت در نقطه دیگه ای از تارگت

3 استفاده از روش قدیمیه اینجکت کردن

4 استفاده از روش post

  5 xpath injection

ولی مهم ترین روش نال کردن هست

and 0

پیروز باشید ...

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


  • 1 سال بعد...

با عرض پوزش میخواستم یک ایرادی از کسانی که به تیبل های اسیب پذیر اشاره کرده اند بگیرم تیبل های اسیب پذیر بکلی اشتباه است یعنی هنگامیکه ما یک پایگاه مثلا اوراکل نصب و ران کردیم و یک دیتابیس تنظیم کردیم و فیلد هایی را از ورودی به اون دادیم که

اعداد یا حروف گرفته میشوند و در خروجی در سطح وب اپلیشکن برای ما خروجی میگیرند که این مقادیر که در یک تیبل یا اصلا کالومن که قسمت کوچکتری از تیبل را شامل میشود ذخیره میشود که اصلا ما نمیتوانیم بگوییم که این اسیب پذیری از یک تیبل است یعنی اگر بگوییم اسیب پذیری در یک تیبل یا جداول درج اطلاعات اتفاق افتاده است پس مفهوم رنگ دیگری میگیرد یعنی ان پایگاه داده بکلی اشتباه برنامه نویسی شده که منجر به بروز این باگ شده است . من یک طرح کلی بیان کنم دستورات sqlinjection  اولا توسط یک ورودی فیلد یا هرجایی که میتوان اعداد یا حروف هایی را درج کرد وارد یک پروسه میشود این پروسه بصورت زیر بیان میشود:
url->  web_appllication -> web_server or web center processor-> my sqli_Centeral Data Saved

 پس روند کلی دستورات sqlinjectin به این صورت بود ودر واقع هنگامی یک باگ sql در سایت پدید میاید اطلاعات دیتابیس را در پشت مخازن webapllication  سیو میکند که ما توسط دستورات اسیکوال سرور ان اطلاعات را فراخوانی میکنیم و اهراز هویت خود را مطابق با Admin_User  تعریف میکنیم که منجر به رخنه میشود فقط همین وبس;)

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


من یک توضیحی کوچکی در رابطه با موارد بالایی  بدم:

 استفاده از روش post: منظور این است که اهداف حمله براساس متود Post یا تحت سورس قابل  نمایش است یا بهتر بگویم هنگامی شما دستور شرطی مثلا where در url سایت وارد میکنید نتایج ان را میتوانید باکلیک برروی view Source مشاهده کنید که یک مقادیری برای شما بنمایش در اورده است... به همین راحتی:)

استفاده از متود xpatch یا روش اهراز هویت موقت: شما توسط یک  اهراز هویت موقت میتوانید کامندهای sql خودرا تزریق کنید و این ممکن است در یک فیلد یا در هرجایی که value  دریافت کند قابل انجام است مثلا ما توسط شرط or 1=1  به یک وب اپلیشین میفهمانیم که مقادیر true یا به عبارتی قابل  خوانش توسط پردازش گر های مرکزی هستند که این ملزم به صحیح بودن دسترسی دارد که این  دسترسی را برای ما بصورت Active برمیگرداند که مانند این است که یک فایروال ما را تایید میکند و یک submit را به ما بر میگرداندو... که میتوان در باره این متود حداقل 20 صفحه نوشت یا شاید بسیار زیادتر...

استفاده از متود null : در این روش ما برای وارد کردن دستورات sql خود که یک دستورات اصلی sqli فرض میشوند استفاده میکنیم که این روش از اررور هایی مانند forbidden error یا تمام اررور که مارا از سطح دسترسی محدود میسازند کارایی داردو اموزش های زیادی برای این روش هم بصورت تصویری و هم تئوری ارائه شده اند که بالفرضشما مقادیر integer یا صحیح را بصورت رشته ای یا "1" درج میکنید ... و .... که خودتان بهتر میدانید و شاید توضیح دادم :)

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


روش قدیمی sqli یا  blind sqlinjection:  روشی ازsqlinjection یا نفوذ در sql است که بجای تابع Union از روش های true && false استفاده میکنیم...که درمعنی لغوی ان اسکیوال اینجکشن کور است...وبهتر توضیح دهم blind sqli نمونه از sqli است که یک حمله در قبال پرسش های صحیح و غلطی از یک اپلیکیشن میپرسیم برای ما انجام میشود ... همانند عملگر or  که برای تعیین میکند در صورت در ست بودن مقدار برای چاپ و اگر هم این مقدار صحیح نباشد شرط بعدی را برای ما چاپ میکند...مانند or 1=1 ...

 والبته  پاسخ مارا براساس کارکرد برنامه ها تعیین میکند ... این حمله زمانی اتفاق می افتد که یک رخنه گر دچار محدودیت هایی در کامند های اسکیوال شود که مثلا تابع information_schema برای ما بلاک شده باشد یا اصلا در ورژن های قدیمی دیتابیس وجود نداشته باشد  مثللا ورژن های زیر 5 my_sql database که تابع informatin _scema  وجود ندارد پس اولین کاری که میکنیم یک اطلاعات بدست می اوریم و از طریق کامند هایی مانند select  و اطلاعاتی همانند tb_admin , admin_users,... که در یک دیتابیس بسیار احتمال یافتن پسورد ها و یوزر نیم های  سایت زیاد است استفاده میکنیم و البته شاید به نتیجه نرسیم یا دست بکشیم!!!

مانند نمونه: www.target.au/uid=12+and 1=1 (true)

 توضیح مورد پایینی: مادر نخست یک سایت را بالا اوردیم که نشانی ان با www اغاز شده است بعد ان یک value دارد که 12 است حال 12 برای ما اطلاعات درون یک سایت را لود میکند پس میفهمیم این سایت میتواند نقطه اسیب پذیری داسته باشد یا خیر پس در گام بعد دستور and 1=1 درست and 1=12  برای ما غلط نمایش میدهد که ممکن است سایت کامل لود نشودیا یک ناقص دربیاید پس میفمیم باگ را داراست پس در گام بعد کد اسکی Ascii  که استاندارد نمایش دادن کاراکتر هاست(انگلیسی) استفاده میکنیم شاید بی ربط باشد خیلی اوقات بکار میاید در گام بعد یک دستور بهنام substring  در برنامه نویسی وجود دارد  که میتوان به عنوان استخراج عنوانی از متغیر رشته استفاده کرد و در این برای خوانش دستورات sqli استفاده میشود و بعد کامند های خودرا تایپ میکنیم... و البته نمونه های بسیاری وجود که خود کارایی مشخصی دارند...

    (.. sqli command) www.target.au /uid=12 and ascii(substring

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


  • 2 هفته بعد...

مفاهیم command injection: 

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

این حمله یک مهاجم را بصورت کامل کنترل میکند در واقع یک حمله کننده میتواند از یک ورودی فرمان های سیستم را اجرا کند یا دستورات سیستمی را تزریق کند و تزریق ان بنابر ورودی متغیر است...

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

این حمله  میتواند در اکثر زبان های برنامه نویسی رخ دهد با این حال در زبان های برنامه نویسی مبتنی بر پوسته بسیار رایج است. مانند php ,Perl, Cgi و... با این حال میتوان گفت در زبان های برنامه نویسی تفسیری مانند python , JAVA  کمتر رایج است...

این باگ همانند  باگ (RCE (Remote Code Execution است با این تفاوت که دامنه دستوری ان بسیار وسیع تر از باگ تحت سرور RCE است...

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

 

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


به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • ایجاد مورد جدید...