• صفحه اصلی
  • تامین امنیت سایت
  • آموزش جامع
    • کلوپ امنیت 1
    • کلوپ امنیت 2
    • کلوپ امنیت پیشرفته
    • دوره تست نفوذ api
    • دوره منطق سیاه : نفوذ به وب
    • دوره متخصص Idor
    • دوره متخصص pentest
    • دوره جامع osint
    • دوره امنیت وردپرس
    • دوره منتورینگ vip با بهروز منصوری
  • رایتاپخونه پلی برای کسب تجربه
  • غیر رسمی
  • بلاگ
  • ارتباط با ما
 

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت
  • صفحه اصلی
  • تامین امنیت سایت
  • آموزش جامع
    • کلوپ امنیت 1
    • کلوپ امنیت 2
    • کلوپ امنیت پیشرفته
    • دوره تست نفوذ api
    • دوره منطق سیاه : نفوذ به وب
    • دوره متخصص Idor
    • دوره متخصص pentest
    • دوره جامع osint
    • دوره امنیت وردپرس
    • دوره منتورینگ vip با بهروز منصوری
  • رایتاپخونه پلی برای کسب تجربه
  • غیر رسمی
  • بلاگ
  • ارتباط با ما
0

هنوز هیچ محصولی خریداری نکرده اید.

وبلاگ

مرزبان بلاگ مقالات آموزشی توضیح عمیق آسیب‌پذیری‌های JWT (بخش دوم)

توضیح عمیق آسیب‌پذیری‌های JWT (بخش دوم)

مقالات آموزشی ، وبلاگ
ارسال شده توسط بهروز منصوری
1404/07/12
43 بازدید

سلام من بهروزم و در ادامه توضیح عمیق آسیب‌پذیری‌های JWT (بخش اول) در خدمتتون هستم.

سری قبل تکنیکی رو دیدیم که الگوریتم رو به none تنزل دادیم.

حالا بزنیم به اصل مطلب، اگه اون تکنیک قبلی رو امتحان کردیم و جواب نداد، چی کار کنیم؟

حالا قراره در مورد چیزی صحبت کنیم که بسیار رایجه، اما متأسفانه این تکنیک شاید به بانتی نرسه 😥 

با این حال از نظر شدت نمره 9 از 10 داده می‌شه.

واقعاً اینقدر بحرانیه؟

 Weak Symmetric Secrets

احتمالا الان خیلیاتون می خواید بگید: «من این روش رو می‌دونم، خسته‌کننده‌س و کار نمی‌کنه.» صبر کن، اول بخون، تنبل جان.

خب این چیه؟ همون‌طور که اسمش می‌گه، تکنیکی هست که توش تلاش می‌کنیم secret الگوریتم رو پیدا کنیم، به زبان ساده، همون رمز/کلید الگوریتم.

اما چطوری؟ جوابش بروت‌فورس هست، به همین سادگی. باشه، بذار یه کمی فنی‌تر توضیح بدم.

اگه الگوریتم امضای متقارن استفاده شده باشه، امنیت JWT وابسته‌ست به قدرت و آنتروپی (تصادفی‌بودن) کلیدِ استفاده‌شده.

اگه از یک کلید ضعیف استفاده شده باشه، ممکنه بشه به‌صورت آفلاین اون کلید رو شکوند و بازیابی‌ش کرد.

وقتی مقدار کلید معلوم شد، می‌تونی ادعاها (claims) داخل JWT رو تغییر بدی و با استفاده از همون کلید، یک امضای معتبر دوباره محاسبه کنی.

مراحل:

  • توکن JWT رو ذخیره کن تو یه فایل متنی به اسم jwt.txt.
  • یه لیست رایج از Secret JWT دانلود کن. برای این کار می‌تونی از این استفاده کنی:

wget https://raw.githubusercontent.com/wallarm/jwt-secrets/master/jwt.secrets.list

  • از Hashcat برای شکوندن کلید استفاده کن:

hashcat -m 16500 -a 0 jwt.txt jwt.secrets.list

پس روال کار اینطوری شد که :

اول توکن JWT رو بیرون بیار و تو یه فایل .txt ذخیره کن و اسم دلخواه بذار.

بعد لیست کلمات (wordlist) بالا یا هر JWT wordlist دیگه‌ای که خواستی دانلود کن.

بعد با دستور Hashcat (همونی که بالا نوشتم) سعی کن کلید رو بشکنی.

اگه تونستی کلید رو بشکنی، خب… عالیه. 😆 

اگه کلید رو به‌دست آوردی، می‌تونی هر پارامتری تو توکن رو تغییر بدی، و چون حالا کلید رو می‌دونی، می‌تونی دوباره توکن رو امضا کنی و کار می‌کنه.

توضیح عمیق آسیب‌پذیری‌های JWT

الان توجه کاملت رو می‌خوام چون این بخش کمی پیچیده‌ست، ولی سعی می‌کنم ساده و واضح توضیح بدم.

از ساده‌ترین حالت شروع کنیم.

الگوریتمِ مورد استفاده در JWT، هر چی باشه، عملاً بر دو رویکرد اصلی تکیه داره:

متقارن (symmetric) و نامتقارن (asymmetric).

  • در الگوریتم‌های متقارن، فقط یک کلید وجود داره که هم برای امضا (encode) و هم برای بررسی/رمزگشایی (decode/verify) استفاده می‌شه.

  • در الگوریتم‌های نامتقارن، دو تا کلید داریم: یکی برای امضا که خصوصی‌ (private key) هست و یکی برای بررسی که عمومی‌ (public key) هست.

حالا برسیم به نکته حیاتی:

اگه از یک الگوریتم نامتقارن برای امضا استفاده شده باشه، مثلاً RS256، گاهی ممکنه بشه الگوریتم رو به HS256 تنزل داد (downgrade).

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

چرا این خطرناکه؟ چون کلید عمومی حساس نیست و اغلب به سادگی در دسترس قرار داره.

وقتی کلید عمومی به‌عنوان secret استفاده بشه، با داشتن همون کلید عمومی می‌تونیم یک امضای معتبر بسازیم:

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

معمولاً هم کلید عمومی در جاهای عمومی منتشر شده یا حتی گاهی داخل خودِ JWT به‌صورت یک claim قرار داده می‌شه. (بله؛ بعضی‌ها عمداً یا سهواً این کار رو می‌کنن).

روند حمله شبیه اینه:

  1. الگوریتم رو از RS256 به HS256 تنزل بده.

  2. از کلید عمومی به‌عنوان secret استفاده کن تا JWT رو امضا کنی.

  3. یک JWT جدید با claims تغییریافته بساز و آن را با همین secret امضا کن.حاصل، یک توکن معتبر جعلی خواهد بود.

نگران شدی؟ اشکالی نداره، بذار دوباره ساده‌ترش کنم.

به زبان ساده: وقتی توکن JWT رو تو jwt.io دیکد کردیم، دیدیم الگوریتم RS256 هست، که یک الگوریتم نامتقارنِ.

اما اگر بتونیم اون رو به HS256 تغییر بدیم، تبدیل می‌شه به امضای متقارن.

این یعنی کلید عمومی حالا برای هر دو کار رمزگذاری و بررسی استفاده می‌شه.

به عبارت دیگه، «خود کلید عمومی» تبدیل می‌شه به کلید مورد استفاده.

حالا سؤال اینه: کلید عمومی رو از کجا پیدا کنیم؟

خب، اینجاست که باید کمی از مغزت کار بکشی.

سعی کن درخواست‌های غیرمعمول بزنی، مثلاً یک GET به endpoint‌ای که توکن JWT رو صادر یا می‌سازه بفرست.

ممکنه اونجا کلید عمومی رو بدست بیاری.

البته این تنها راه نیست بهتره گوگل سرچ کنی روش های دیگم پیدا میکنی. راستی از هوش مصنوعی هم کمک بگیر.

چون ادامه دادن مقاله رو خیلی طولانی و خسته‌کننده می‌کنه، همینجا نگه می‌داریم.

پس رسیدیم به انتهای مطلب.

هنوز چند تکنیک دیگه مونده که باید پوشش بدم و سعی می‌کنم تو قسمت سوم کاملشون کنم.

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

برچسب ها: bug bountybug untingHS256jwtpentestRS256secrettokenآموزش امنیتآموزش هکالگوریتمامضای دیجیتالامنیت سایتباگ بانتیبروت‌فورسبهروز منصوریتست نفوذتوکنرمزگذاریکلیدکلید خصوصیکلید عمومیهک سایت

قدیمی تر شماره ۲۷ غیر رسمی
جدیدتر چرا Mindset مهم است؟

محصولات فروش ویژه
  • چطور با گزارش خوب در سایت‌های داخلی کسب درآمد کنیم؟
    کسب درآمد از طریق گزارش باگ در سایت‌های داخلی
  • دوره درک عمیق آسیب‌پذیری
    درک عمیق آسیب‌پذیری
  • مینی دوره مهندسی اجتماعی
    مینی دوره مهندسی اجتماعی
  • گزارش نویسی حرفه ای در باگ هانتینگ
    گزارش نویسی حرفه‌ای در Bug Hunting
دسته‌ها
  • رایتاپ
  • غیر رسمی
  • مقالات آموزشی
  • وبلاگ
  • ویدیوهای آموزشی
درباره ما

هدف از راه‌اندازی این سایت تلاش در جهت ورود شما به بازار کار است.افراد زیادی را میشناسیم که مشغول کارهای کارمندی هستند، شاید حتی پول نسبتا خوبی هم به دست میاورند ولی از کارشان لذت نمیبرند.

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

دسترسی سریع
  • دوره منتورینگ vip بهروز منصوری
  • کلوپ امنیت 1
  • کلوپ امنیت 2
  • کلوپ امنیت پیشرفته
  • دوره تست نفوذ api
  • دوره جامع اوسینت
  • دوره امنیت وردپرس
  • دوره متخصص pentest
  • رایتاپخونه
  • ارتباط با ما
  • تماس: 09126216410
  • ایمیل: mr.mansoori@yahoo.com

تمامی حقوق برای مرزبان محفوظ می باشد.

طراحی توسط مرزبان

فرم درخواست مشاوره

جستجو

جستجو با زدن Enter و بستن با زدن ESC