رفتن به مطلب
انجمن تیم امنیتی گارد ایران

ارسال های توصیه شده

با سلام
همان طور که همه میدونیم امنیت اطلاعات و همه ی عنصر‌های وابسته به این موضوع تقریبا تو یک کلمه خلاصه میشه : ( جزئیات )
برای همین از ابتدایی‌ ترین موضوع برای این بحث استفاده کردم ، چیزی که همه ی مردم روزانه بار‌ها باهاش کار میکنند = پروتکل HTTP

زمانی که مرورگر وب درخواست یک صفحه را از سرویس دهنده وب می نماید، در واقع یک درخواست ( = request ) را به سمت
سرور فرستاده و یک پاسخ ( = response ) را دریافت می نماید و که کل این روند از یک ساختار خاص تبعیت می نماید . این
پروتکل بر روی پروتکل TCP (عموما پورت شناخته شده 80 ) سوار می شود . در زیر نحوه قرارگیری سرآیند و جزئیات آن را در
حالتی که یک مرورگر درخواست بازدید از سایت google را دارد مشاهده می کنید :

 

HkD2w.jpg

--------------------------------------------------------------------------------------------------------

این پروتکل نیز ، همانند اغلب پروتکل های دیگر به صورت کلاینت و سروری اداره می شود ، به همین دلیل برای اینکه درخواست ها و جواب ها
برای هر دو طرف قابل فهم باشند ، از یک استاندارد مشخص برای آن استفاده می گردد . در این استاندارد هر درخواست به صورت یک بسته
شامل چند خط دستور به صورت text است که دارای حالت name:value هستند ، که Name ها مشخص کننده نام عملکردی است که
مرورگر انتظار دارد و value ها مقادیری هستند که برای هر عملگر مشخص می گردد :

GET /HTTP/1.1  =>  مرورگر یک درخواست GET را برای سرویس دهنده وب ارسال و از وی درخواست اطلاعاتی را با استفاده از پروتکل HTTP 1.1 می نماید .

Host: www.google.com  =>  با عملگر HOST ، مرورگر وب سایت و یا سروی که قصد ارتباط با آن را دارد مشخص می نماید .

User-agent:Mozilla/5.0 (Windows; U; Windows NT 5.1)  => با دستور User-agent : به سرویس دهنده وب ، نوع مرورگر ، سیستم عامل مورد استفاده و اطلاعاتی از این قبیل داده می شود .

xml Accept:text/xml, application/xml, application/xhtml+xml  =>  مرورگر به سرویس دهنده وب فرمت اطلاعاتی را که می تواند دریافت نماید ، اعلام مینماید , در این مورد خاص هم برای متن و هم برای application از فرمت xml استفاده می گردد

Accept-Charset:ISO-8859-1, utf-8; q=0.7  =>  لیست کاراکتر هایی که مرورگر وب قادر به فهم آنان است، اعلام می گردد .

 Keep-Alive: 300 , Connection: keep-alive  =>  به سرویس دهنده وب مدت زمان نگهداری نشست ( = session ) اعلام می گردد (  دراین مورد خاص 300 ثانیه )  سرویس گیرندگان ( مرورگرها و یا ... )  می توانند با صراحت پایان یک session  را اعلام نمایند . در نسخه شماره 1 HTTP ، ارتباط و یا اتصال برقرار شده فعال و یا open باقی خواهد ماند تا زمانی که سرویس گیرنده خاتمه آن را اعلام و یا مدت زمان حیات آن به اتمام رسیده باشد . در نسخه شماره یک پروتکل HTTP ، پس از هر درخواست و اتمام تراکنش ، ارتباط ایجاد شده غیرفعال و یا close می گردد

… و Cookie < =  PREF=ID=01a0822454acb293: LD=en:TM=1121638094  و مقدار مربوطه به آن اعلام می گردد. کوکی یک متن اسکی ساده می باشد که اطلاعات متفاوتی را در خود نگهداری می نماید

--------------------------------------------------------------------------------------------------------

سرور باید این درخواست را با توجه به نسخه ی پروتکل پاسخ دهد . در درخواست ارسال شده از سمت سرور یک کد عددی مشخصکننده وضعیت ( مشخص کننده خطاها و اطلاعات ) وجود دارد , و یک پیغام اختیاری قابل خواندن توسط انسان
 نوع پاسخ  نیز خط به خط می باشد که در هر خط دستورات لازم به مرورگر ( یا سرویس گیرنده ) داده می شود :

HTTP/1.1 200 OK  =>  به سرویس گیرنده ( مرورگر) اعلام می گردد که :  سرویس دهنده وب از پروتکل HTTP 1 استفاده می نماید . نسخه 1 .  
فایل درخواستی وی توسط سرویس دهنده پیدا شده است .  ( کد وضعیت 022 )

Cache-Control: private  =>  مستند و یا فایل درخواستی سرویس گیرنده توسط یک پراکسی cache نخواهد شد و هدف آن صرفا" برای کاربر متقاضی فایل است

Content-type: text/html  =>  فرمت ارسال فایل و یا مستند درخواستی به سرویس گیرنده وب اعلام می شود . در این مورد خاص ، اطلاعات با فرمت text/html ارسال می گردند . سرویس گیرنده وب دارای دانش لازم به منظور بررسی و نمایش اطلاعات با فرمت اشاره شده می باشد

Server: GWS/2.1  =>  نوع سرویس دهنده و یا نرم افزار سرویس دهنده ( سرویس دهنده وب ) مشخص می گردد . در این مورد خاص ، سرویس دهنده وب Google نمایش داده شده است

Date: Sat 30 Jul 2005 14:14:50 GMT  =>  زمان و تاریخ سرویس دهنده وب مشخص می گردد .

"html><head><meta.http-equiv="content-type>  =>  تگ های HTML ارسالی توسط سرویس دهنده وب به مقصد سرویس گیرنده وب می باشند که توسط سرویس گیرنده وب ( نظیر FireFox ) نمایش داده می شود .

این درخواست ها و پاسخ ها دارای حالت های متعددی هستند که بر طبق نیاز تغییر میکنند و در RFC پروتکل HTTP ذکر شده اند.

--------------------------------------------------------------------------------------------------------

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

- متود GET : برای گرفتن یک دیتای خاص از وب سرور استفاده میشود.
- متود POST : زمانی که سرویس گیرنده ( مرورگر) قصد دارد اطلاعاتی را برای سرور وب ارسال نماید .
- متود PUT : برای اضافه کردن یک دیتا و یا جایگزین کردن یک دیتا بر روی سرور وب استفاده میشود
- متود DELETE : برای پاک کردن یک دیتا از روی سرور استفاده میشود .
- متود HEAD : برای گرفتن اطلاعات از یک دیتا در سرور انجام می پذیرد ( بدون اینکه دیتا برای ما ارسال شود )
- متود OPTIONS : از سرور در مورد مِتُد هایی که در request/response پشتیبانی میکند ، سوال شود .
- متود TRACE : مانند دستور PING برای اشکال زدائی استفاده می شود و معمولا بسته است .
- متود CONNECT : برای اتصال به سرور برای ارتباطی به غیر از HTTP استفاده میشود . ( همانند HTTPS )

--------------------------------------------------------------------------------------------------------

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

محدوده کد :         مفهوم آن :

100-199         اطلاعات
200-299         موفقیت
300-309         تغییر مسیر
400-499         خطای کلاینت
500-599         خطای سرور

عملکرد :          کد وضعیت :

200                تراکنش با موفقیت انجام شده است
201                دستور POST با موفقیت انجام شده است
202                درخواست ارسالی دریافت گردید.
300                منبع درخواستی در مکان های مختلفی پیدا شده است
301               منبع درخواستی به صورت دائم منتقل شده است
302               منبع درخواستی به صورت موقت منتقل شده است
400               درخواست نامناسب از جانب سرویس گیرنده
401               درخواست غیرمجاز
404               منبع درخواستی پیدا نگردید
500               بروز خطا بر روی سرویس دهنده
501               متد استفاده شده پیاده سازی نشده است

 

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

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

پایه های Syntax پروتکل HTTP قسمت دوم ( کوکی های HTTP )

 

کوکی های  HTTP

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

دوباره خوانده شود. دیتای ذخیره شده برای اینکه وب سرور یک سایت، اطلاعات مشخصی را درباره بازدیدکننده آن وب سایت خاص

بداند، مفید است. کوکی فرمت فایل متنی را دارد که در دایرکتوری مربوط به مرورگر ذخیره می شود و در هنگامی که مرورگر در

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

ذخیره شود. کوکی ها ابزار بسیار مهمی برای نگهداشتن state روی وب هستند. state به توانایی یک برنامه برای کار با کاربر

بصورت محاوره ای اشاره دارد. برای مثال، شما برای استفاده از قطار یا اتوبوس بلیت رزرو می کنید. در روز سفر، هنگامی که بلیت را

نشان می دهید، اجازه خواهید یافت که وارد قطار یا اتوبوس شوید، در غیراینصورت مسوول وسیله نقلیه نمی داند که آیا شما این اجازه

را دارید یا خیر. در حقیقت در اینجا بلیت برای نگهداشتن state بین شما و مسوول قطار مهم است . HTTP یک پروتکل بدون

قابلیت state است. به این معنی که هر بار مشاهده یک سایت توسط سرور بعنوان اولین مشاهده کاربر تلقی می شود. به این معنی که

سرور همه چیز را بعد از هر درخواست فراموش می کند، مگر اینکه یک بازدید کننده برای یادآوری آینده به سرور به طریقی مشخص

گردد کوکی ها این کار را انجام می دهند .

 

مکانیسم کوکی به شکل زیر است :

. مرورگر ( کلاینت ) یک درخواست HTTP می فرستد

. سرور یک جواب که شامل هِدر Cookie-Set است ، می فرستد.

. کلاینت از این به بعد درخواست های خود را همراه با هِدر Cookie ارسال می کند که در آن همان اطلاعاتی قراردارد که سرور به سمتش فرستاده است.

. سرور کاربر را شناسایی کرده و به او پاسخ می دهد .

 

( تصویر زیر )

 

Rj9F2.jpg

 

دستور set-cookie که از سمت سرور به کلاینت ارسال می گردد دارای مقادیری به صورت name=value هستند که در آن ها

مقادیر value به مقادیر name نسبت داده می شود . این مقادیر با ; از هم جدا می شوند :

 

 ( ‌ست کوکی )      

HTTP/1.1 200 OK 
Content-type: text/html 
Set-Cookie: name=value 
Set-Cookie: Set-Cookie: HSID=AYQEVn….DKrdst; Domain=.foo.com; Path=/; Expires=Wed, 02-Jan-2021 
 GMT; HttpOnl 22:23:01 

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

- Expire : زمان انقضای یک کوکی

- Max-Age : در IE استفاده میشود و معنای انقضای کوکی را می دهد .

- Domain : محدوده ی دامنه ی متعلق به کوکی را مشخص میکند .

- Path : اجازه میدهد یک کوکی برای یک مسیر خاص ( یک دایرکتوری ) تنظیم گردد .

- Secure Flag : این پرچم از ارسال کوکی در حالت رمزنگاری نشده جلوگیری میکند

- HttpOnly Flag : این پرچم اجازه ی خواندن document.cookie را از جاوااسپلکریت میگیرد . ( جلوگیری ازحملات XSS را شامل می شود )

 

------------------------------------------------------------------------------------------------------------------

 

مکانیسم اعتبار سنجی از طریق HTTP نیز یکی دیگر از امکانات این پروتکل است که در RFC 2617 بررسی شده است

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

 

p2VPt.jpg

 

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

 

XyMSi.jpg

 

البته در اینجا ما از مکانیسم basic برای اعتبار سنجی استفاده کردیم نوع دیگری از این مکانسیم اعتبارسنجی وجود دارد که digest نام دارد

در نوع basic اعتبارات به صورت base64 شده و کاملا قابل خواندن ارسال میشوند و در نوع digest یک هش رمزنگاری شده

برای جلوگیری از لو رفتن اطلاعات - استفاده میشود , متاسفانه مرورگر ها تفاوتی برای استفاده از هیچ یک از اینها قائل نمیشوند

بنابراین اگر حمله کننده به هر طریقی بتواند تنها کلمه ی digest را با basic عوض کند باز میتواند کلمه ی عبور را به صورت ClearText دریافت کند.

 

به عنوان مثال : مقدار رشته ای همانند زیر ارسال می گردد

=Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ

که این مقدار از نوع کدینگ base64 است و بعد از دِکُد کردن برابر زیر می شود : username:password

موفق باشید ...

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

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

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

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

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

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

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

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

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

انجمن تیم امنیتی گارد ایران

تیم امنیتی گارد ایران یک گروه مستقل است که قوانین آن با خط مشی جمهوری اسلامی ایران مغایرت ندارد. تیم امنیتی گارد ایران از سال 1393 فعالیت خود را آغاز کرد و هدف این تیم تامین امنیت سایت ها و سرورهای ایرانی است. تیم ما همیشه برای دفاع از مرزهای سایبری سرزمین عزیزمان ایران آماده است.

شبکه های اجتماعی

×
×
  • اضافه کردن...