خب چند روز پیش یک رایتآپ فنی خوندم از یه محقق امنیتی که چطوری توی پیادهسازی پروتکل oAuth در گیتهاب آسیبپذیری پیدا کرده بود، بعدش توی توئیتر یه سوال پرسیدم که آیا منطق کد زیر میتونه منجر به بروز آسیبپذیری بشه؟
خب دوستانی جواب دادن، البته هدف من بیشتر آماده کردن ذهن مخاطب برای دیدن این کلیپ تحلیل آسیبپذیری بود. قبل از این که وارد جزئیات تحلیل بشیم، من این نکته رو اشاره کنم که منطق کد بالا منجر به بروز آسیبپذیری گیتهاب شد، اما اگه منطق اینطوری بود آسیبپذیری رخ نمیداد:
کدوم یکی از این دو منطق امن هست؟ جواب هر دو است! بله، این ناهماهنگی بین فریمورک Rails و منطق کد اول موجب بروز آسیبپذیری شده، قبلا هم شاهد نمونههایی از این نوع آسیبپذیری بودیم که از ناهماهنگی بین دو کتابخانه رخ میدن و هیچ راهحل قطعی هم برای جلوگیری نداره. خب شما رو به دیدن این تحلیل دعوت میکنم:
زندگی من به سه قسمت تقسیم میشه، قسمت اول کار روزانه من هست که مثل بقیه مردم میرم سر کار. قسمت دوم سعی در براورده کردن علایق کاری خودم، مثل همین وبلاگ. قسمت سوم هم خانواده، مسافرت و تفریح. تلاش میکنم توی قسمت دوم، باگبانتی کار کنم، هم درآمد خوبی داره هم هیجان خاص خودش رو. اون قسمتهایی از تکنیکها و کشفیات در فرایند باگبانتی رو سعی میکنم توی این وبلاگ قرار بدم.
سلام ممنون بابت تحلیل. باگ جالبی بود.
یه سوال برام پیش اومد، وقتی داشتید flow oauth رو توضیح میداید گفتید که بعد از اینکه کاربر به اپ اجازه ها رو میده یه access token از طرف provider میاد که کاربر هم اونو در اختیار اپ قرار میده و اپ از طریق اون access token میتونه به api ریکوئست بزنه در واقع اینطور متوجه شدم که authorize شدن اپ یعنی داشتن اون access token. اما توی اکسپلویت گفته شد که با زدن ریکوئست Head ما authorize میشیم، ولی به دلیل SOP نمیتونیم access token رو بخونیم. متوجه نشدم که چطور بدون access token اپ ما اجازه پیدا کرده؟
نمیخواد که Access Token خونده بشه، خود کاربر Access Token رو به مهاجم میده دیگه (طبق جریانکاری oAuth)، سناریو حمله اینه که مهاجم میره یه حساب میسازه و از Github سرویس oAuth میگیره، پس همیشه Access Token رو داره، فقط میمونه که مجوز دسترسی رو گسترش بده، که با استفاده از HEAD این کار رو میکنه.
مرسی آقا یاشار عالی بود. با اینکه برای دانش من سنگین بود، اما باز چندتا چیز یاد گرفتم. اگر بانتی های دیگه که ساده تر هستند هم همین شکلی تحلیل کنید. کلی به دانش ما افزوده میشه. خیلی ممنون
سلام، حتما، چیزی مد نظرتون هست بگین
سلام
آیا سایت hackerone و bugcrowd به ایرانی ها جایزه میدن و با چه متدی؟
یه پست راجع به این مبثح میذارم به زودی
سلام ویدیو خوبی بود. من میخوام دانلودش کنم تو ارشیوم نگهدارم اما متاسفانه نمیتونم دانلود کنم. سیستم عاملم اوبونتوعه و IDM ندارم. میشه راهنمایی کنین چطور میتونم دانلودش کنم؟
مستقیم دانلود کن
توی پروتکل OAuth2 تفاوت بین response_type، کد و توکن چی هست؟ می دونم که اگر روی حالت code باشه بعد client باید یک مرحله اضافه تر طی کنه برای دریافت access_token اما وقتی مستقیم میشه access_token دریافت کرد گزینه access_code به چه دردی می خوره؟
دوتا پیادهسازی هست، دومرحلهای و سهمرحلهای
دو مرحلهای: برای اینکه یه اپلیکیشن بجای شما کار کنه، مثلا نرمافزار توئیتر با APIهای توئیتر تعامل کنه. عملیات بدون دخالت کاربر انجام میشه.
سه مرحلهای: برای اینکه بدون اشتراکگذاری اطلاعات ورود، کاربر مجوز خاصی به یه اپلیکیشن دیگه بده. عملیات با دخالت کاربر انجام میشه.
کاربرداش فرق داره، این لینک خوبه:
http://cakebaker.42dh.com/2011/01/10/2-legged-vs-3-legged-oauth
بسیار عالی بود
سلام
عالی بود
ولی من یه جا رو متوجه نشدم
مگه متد ها قبلش به POST و GET محدود نمیشن؟
app.route(path, methods=[‘POST’, ‘GET’])
پس از این چطوری HEAD رد میشه؟!
دقیقا سوال منم هست