قوانین حاکم بر مرورگر چیه ؟ اهمیت دونستنش چیه ؟
مرورگر صرفا یه ابزار نمایش نیست مرورگر ها یه سیستم پیچیده دارن که دقیقا بین کلاینت و وب هستند .
در داخل این سیستم مفهومی به نام Browser Security Machines وجود داره این مفهوم قوانین و مکانیزم های امنیتی مرورگر رو تعین میکنه و مشخص میکنه که چرا نباید آرجین های مختلف به دیتای همدیگر دسترسی داشته باشند و یا بخوانند .
اولین قدم : درک orgin :
برای اینکه مرورگر بدونه چه کسی به چه دادهای دسترسی داره، باید هویت را بشناسه این هویت با مفهومی به نام Origin (مبدأ) تعریف میشه
هر آرجین معتبر دقیقاً از سه جزء ساخته شده :
هر تعریف اضافه ای شامل ارجین نمیشه .!
این دو آدرس، از نظر مرورگر دو تا Origin کاملاً متفاوتند چون بخش host یکسان نیست!:
ولی توی این مثال این دو آدرس متعلق به یک Origin هستن، چون scheme، host و port یکسانه:
نکته : تعریف سایت با با آرجین یکی نیست !
نکته 2 : صفحات مختلف میتوانن آرجین های مختلف داشته باشند یا نداشته باشند . بستگی به اون سه جزء اصلی داره .
———————————————————————————————-
حالا که این مفهموم رو خوب متوجه شدیم میریم سراغ یه قانون مهم برای مرورگر ها : تفکیک مبدا
تعریف same origin policy (SOP)
قانونیه که مرورگر ها اجرا میکنند صفحات وب حق دارند که فقط با منابعی تعامل کنند که از یک ارجین باشند
مثال : اسکریپ هایی که داخل وب سایت وجود دارندحق ندارن به کانتنت اشیایی که از ارجین متفاوت هستند دسترسی داشته باشند
چرا same origin policy مهمه ؟
جلوگیری از سرقت دادهها: بدون SOP هر اسکریپتی که در مرورگر اجرا شود (مثلاً از google.com) میتونه به DOM، کوکیها، localStorage سایتها دسترسی پیدا کنه. یعنی اطلاعات حساسِ کاربر مثل توکنها بهراحتی دزدیده میشن .
وظیفه اصلی SOP چیه ؟!
مرورگر ها درخواست به http به سایت های دیگر میفرستن ولی SOP به جاوا اسکریپت اجازه دسترسی به پاسخ رو نمیده مگه اینکه CORS فعال باشه .
تگ هایی مثل :
مثال : با قرار دادن این تگ داخل وبسایت :
یه درخواست GET به evil.com میره و تصویر توی سایت لود میشه اما جاوا اسکریپت نمیتونه به پاسخ دسترسی داشته باشه و یا با گذاشتن یه
پس SOP مثل ستون امنیتی مرورگره که محدودیت رو بر اساس داده دریافتی میده نه ارسال درخواست و متوجه شدین که چرا برنامه نویس ها از سیاست امنیتی cors استفاده میکنن و چرا اهمیت داره که اسکریپت ها از ارجین های تعین شده توسط cors داده ها رو میخونن و حمله csrf چجوری میتونه از از SOP سو استفاده بکنه و دورش بزنه .
امیدوارم به درک نسبی راجب این قانون مهم برای مرورگر ها رسیده باشید . مثل همیشه حمایت فراموش نشه 🌷
@Dagen_security
مرورگر صرفا یه ابزار نمایش نیست مرورگر ها یه سیستم پیچیده دارن که دقیقا بین کلاینت و وب هستند .
در داخل این سیستم مفهومی به نام Browser Security Machines وجود داره این مفهوم قوانین و مکانیزم های امنیتی مرورگر رو تعین میکنه و مشخص میکنه که چرا نباید آرجین های مختلف به دیتای همدیگر دسترسی داشته باشند و یا بخوانند .
اولین قدم : درک orgin :
برای اینکه مرورگر بدونه چه کسی به چه دادهای دسترسی داره، باید هویت را بشناسه این هویت با مفهومی به نام Origin (مبدأ) تعریف میشه
هر آرجین معتبر دقیقاً از سه جزء ساخته شده :
scheme + host + port
هر تعریف اضافه ای شامل ارجین نمیشه .!
این دو آدرس، از نظر مرورگر دو تا Origin کاملاً متفاوتند چون بخش host یکسان نیست!:
https://www.google.com:443
https://admin.google.com:443
ولی توی این مثال این دو آدرس متعلق به یک Origin هستن، چون scheme، host و port یکسانه:
https://www.facebook.com/search
https://www.facebook.com/profile
نکته : تعریف سایت با با آرجین یکی نیست !
نکته 2 : صفحات مختلف میتوانن آرجین های مختلف داشته باشند یا نداشته باشند . بستگی به اون سه جزء اصلی داره .
———————————————————————————————-
حالا که این مفهموم رو خوب متوجه شدیم میریم سراغ یه قانون مهم برای مرورگر ها : تفکیک مبدا
تعریف same origin policy (SOP)
قانونیه که مرورگر ها اجرا میکنند صفحات وب حق دارند که فقط با منابعی تعامل کنند که از یک ارجین باشند
مثال : اسکریپ هایی که داخل وب سایت وجود دارندحق ندارن به کانتنت اشیایی که از ارجین متفاوت هستند دسترسی داشته باشند
چرا same origin policy مهمه ؟
جلوگیری از سرقت دادهها: بدون SOP هر اسکریپتی که در مرورگر اجرا شود (مثلاً از google.com) میتونه به DOM، کوکیها، localStorage سایتها دسترسی پیدا کنه. یعنی اطلاعات حساسِ کاربر مثل توکنها بهراحتی دزدیده میشن .
وظیفه اصلی SOP چیه ؟!
مرورگر ها درخواست به http به سایت های دیگر میفرستن ولی SOP به جاوا اسکریپت اجازه دسترسی به پاسخ رو نمیده مگه اینکه CORS فعال باشه .
تگ هایی مثل :
<noscript> <iframe> <img> میتونن بدون cors درخواست بفرستند و باز هم خواندن پاسخ توسط same origin policy بلاک میشه .مثال : با قرار دادن این تگ داخل وبسایت :
<img src="https://evil.com/track.png">
یه درخواست GET به evil.com میره و تصویر توی سایت لود میشه اما جاوا اسکریپت نمیتونه به پاسخ دسترسی داشته باشه و یا با گذاشتن یه
<iframe> داخل سایت خودمون میتونیم ببینمیش ولی جاوا اسکریپت نمیتونه محتوای داخل اون رو بخونه و یا تغیر بده .پس SOP مثل ستون امنیتی مرورگره که محدودیت رو بر اساس داده دریافتی میده نه ارسال درخواست و متوجه شدین که چرا برنامه نویس ها از سیاست امنیتی cors استفاده میکنن و چرا اهمیت داره که اسکریپت ها از ارجین های تعین شده توسط cors داده ها رو میخونن و حمله csrf چجوری میتونه از از SOP سو استفاده بکنه و دورش بزنه .
امیدوارم به درک نسبی راجب این قانون مهم برای مرورگر ها رسیده باشید . مثل همیشه حمایت فراموش نشه 🌷
@Dagen_security
❤12👍3
چجوری تونستم با نقطه چینی چکر فانکشن تارگتمو دور بزنم ؟
بعد از تکمیل ریکان سنگین رو تارگت به همچین ادرسی رسیدم :
هر مهاجمی در مواجه با همچین ادرسی باید ذهنش جرقه اسیپ پذیری open redirect رو بزنه .
پس من زوم کردم روی پارامتر و توی اولین تستم سعی کردم کاراکتر هایی مثل @ %0a . رو تست بزنم ولی تارگت فیکس فیکس بود و به من 403 میداد من فقط حق تغیر دادن قسمت path ادرس رو داشتم که کمکی بهم نکرد !
تست هایی که کردم :
رجکس خوبی داشت و هیچ جوره با تستام دور نمیخورد ولی ذهنم دنبال یه ایده جدید برای دور زدنش بود .
پس به ریپازیتوری معروف payload all the things رفتم و این پیلود رو تست کردم
و بوم ! چکر فانکشن دور خود و من ریدارکت شدم با این هاست به google.com ریدارکت شدم !
از اونجایی که ادمی نیستم که فقط چهار تست کیس رو اجرا کنم و ببینم خروجی میده یا نه رفتم سراغ ریشه اسیپ پذیری !
سوال پیش میاد چرا با نقطه چینی این چکر فانکشن دور میخوره اصلا استدلال این باگ چیه ؟
ببینید فریم ورک ها و برنامه ها میگن اگر کاربر کاراکتری رو اشتباه وارد کرد و این اشتباه پیش بینی شده بود خودمون به صورت اتوماتیک این تبدیل رو براش انجام میدیم
پس توی سناریو ما , مرورگر میگه اگر تو نقطه چینی گذاشتی(。) من خودم این نقطه رو به نقطه معمولی (.) تبدیل میکنم و هیچ خطایی نشون نمیدم .
آیا این تبدیل مرورگر نا امنه ؟
به هیچ عنوان این تبدیل نا امن نیست .
در واقع این باگ زمانی اتفاق میوفته که چکر فانکشنی که توی سرور وجود دراه توی چکی که انجام میده این ادرس رو معتبر نمیدونه و براش نا آشناس ولی مرورگر فکر میکنه این کاراکتر به اشتباه وارد شده و ما رو به گوگل ریدارکت میکنه
پس عدم هماهنگی بین چکر فانکشن و مرورگره .
از دید RFC این ادرس معتبره :
ولی چکر فانکشن سمت سرور چون از RFC پیروری نمیکنه عدم نا همانگی پیش میاد و اسیپ پذیری به وجود میاد .👍
این عدم نا هماهنگی بین دو تا پروداکت امن رو توی همه اسیب پذیری ها رایجه و مشکلیه که به راحتی پچ نمیشه امیدوارم این مفهوم خیلی مهم رو درک کرده باشید و دنبال ریشه مکانیزم های امنیتی باشید 🌷
@Dagen_security
بعد از تکمیل ریکان سنگین رو تارگت به همچین ادرسی رسیدم :
https://target.com?redirect_url = https://target.com/test
هر مهاجمی در مواجه با همچین ادرسی باید ذهنش جرقه اسیپ پذیری open redirect رو بزنه .
پس من زوم کردم روی پارامتر و توی اولین تستم سعی کردم کاراکتر هایی مثل @ %0a . رو تست بزنم ولی تارگت فیکس فیکس بود و به من 403 میداد من فقط حق تغیر دادن قسمت path ادرس رو داشتم که کمکی بهم نکرد !
تست هایی که کردم :
?redirect_url=https://target.com.google.com
?redirect_url=https://target.com\@google.com
?redirect_url=https://target.computer
?redirect_url=https://target.com&redirect_url=google.com
?redirect_url[]=https://target.com&redirect_url=google.com
رجکس خوبی داشت و هیچ جوره با تستام دور نمیخورد ولی ذهنم دنبال یه ایده جدید برای دور زدنش بود .
پس به ریپازیتوری معروف payload all the things رفتم و این پیلود رو تست کردم
google。com
و بوم ! چکر فانکشن دور خود و من ریدارکت شدم با این هاست به google.com ریدارکت شدم !
از اونجایی که ادمی نیستم که فقط چهار تست کیس رو اجرا کنم و ببینم خروجی میده یا نه رفتم سراغ ریشه اسیپ پذیری !
سوال پیش میاد چرا با نقطه چینی این چکر فانکشن دور میخوره اصلا استدلال این باگ چیه ؟
ببینید فریم ورک ها و برنامه ها میگن اگر کاربر کاراکتری رو اشتباه وارد کرد و این اشتباه پیش بینی شده بود خودمون به صورت اتوماتیک این تبدیل رو براش انجام میدیم
پس توی سناریو ما , مرورگر میگه اگر تو نقطه چینی گذاشتی(。) من خودم این نقطه رو به نقطه معمولی (.) تبدیل میکنم و هیچ خطایی نشون نمیدم .
آیا این تبدیل مرورگر نا امنه ؟
به هیچ عنوان این تبدیل نا امن نیست .
در واقع این باگ زمانی اتفاق میوفته که چکر فانکشنی که توی سرور وجود دراه توی چکی که انجام میده این ادرس رو معتبر نمیدونه و براش نا آشناس ولی مرورگر فکر میکنه این کاراکتر به اشتباه وارد شده و ما رو به گوگل ریدارکت میکنه
پس عدم هماهنگی بین چکر فانکشن و مرورگره .
از دید RFC این ادرس معتبره :
google。com
ولی چکر فانکشن سمت سرور چون از RFC پیروری نمیکنه عدم نا همانگی پیش میاد و اسیپ پذیری به وجود میاد .👍
این عدم نا هماهنگی بین دو تا پروداکت امن رو توی همه اسیب پذیری ها رایجه و مشکلیه که به راحتی پچ نمیشه امیدوارم این مفهوم خیلی مهم رو درک کرده باشید و دنبال ریشه مکانیزم های امنیتی باشید 🌷
@Dagen_security
❤18💯2
دوستان، تمام آسیبپذیریها و سناریوهایی که اینجا میذارم، روی تارگت واقعی تست شدن. هیچ روش منسوخ یا تکراری اینجا جایی نداره. همیشه سعی میکنیم بهترین و خلاقانهترین محتوا رو برای اعضای چنل آماده کنیم . 🙌
@Dagen_security
@Dagen_security
🔥22❤7
یکی از خفنترین ابزارها که میتونین باهاش اپن ریدارکتههای زیادی بزنید، این ابزاره .
https://github.com/0xacb/recollapse
کارش اینه که مجموعهای از روشهای عمومی دور زدن فیلتر ها رو اتومات میکنه .
پیلود های مختلفی که میسازه باعث گیج شدن وف و چکر فانکشن میشه .
اگه به دنبال یه ابزار برای دور زدن فیلتر ها و شکار اپن ریدارکتی دقیقا همون چیزیه که باید توی تست کیسات داشته باشی 🫡
@Dagen_security
https://github.com/0xacb/recollapse
کارش اینه که مجموعهای از روشهای عمومی دور زدن فیلتر ها رو اتومات میکنه .
پیلود های مختلفی که میسازه باعث گیج شدن وف و چکر فانکشن میشه .
اگه به دنبال یه ابزار برای دور زدن فیلتر ها و شکار اپن ریدارکتی دقیقا همون چیزیه که باید توی تست کیسات داشته باشی 🫡
@Dagen_security
❤16👍2
دوستان ابزار بالایی خالی از لطف نبود که معرفیش کنم چون دقیقا با همین ابزار روی یه تارگت شناخته شده باگ کراود یه بانتی ۳۰۰ دلاری شیرین زدم . پس لطفاً دست کمش نگیرید 😉
@Dagen_security
@Dagen_security
❤14🗿1
چجوری تونستم تاییدیه SQL injection رو بگیرم و وف بایپس کنم ؟ ✅
تارگتم یه آنلاین شاپ بود و از Rest api استفاده میکرد و اندپویت های مختلفی رو برای انجام هر کاری کال میکرد که یکی از این اندپویت ها این بود :
اولین کاری که میکنم این اندپوینت رو از قسمت مسیر توی DOM سرچ میکنم تا بهم سرنخ بده.
سه تا پارامتر با جاوا اسکریپت ساخته شده بود که یکیش توجه منو به خودش جلب کرد
این پارامتر :
از طریق این پارامتر میتونستی فیلتر هایی که روی محصول اعمال کنی و بهت خروجی میداد
ولی چرا توجه منو به خودش جلب کرد ؟
کلمه فیلتر میتونه برای من جذاب باشه و توی ذهن من اینه که این دیتایی که داره به صورت فیلتر شده توی ریسپانس میاد دقیقا از کجا میاد ؟ آیا ممکنه از دیتابیس بیاد ؟
بیابیم و کمی دقیق تر شیم جاوا اسکریپت فقط و فقط فیلتر رو با ورودی json قبول میکرد و یه الگوی مشخصی برای فیلتر کردن داشت برای مثال به این صورت :
و اگر حالت json رو خراب میکردی بهت این ارور رو بر میگردوند :
خب ما همچنان رو فرضی که داریم متمرکزیم دقیقا اینجا همون جاییه که ذهن یه هانتر باید آلرت بزنه که اینجا یه خبرایی هست و بوی SQL میاد چون همه این رفتار های وبسایت داره با همه تلفیق میشه 🫡
پس توی این پارامتر تزریق رو به صورت تایم بیس انجام دادم و به یه پارامتر دیگه به ساختار اضافه کردم :
ولی به این سادگی نبود و وف آکامایی جلوی منو گرفت 🤜
اگه با SQL کار کرده باشید باید اینو بدونید که ما توی sql میتونیم و حق داریم از پرانتز های تو در تو استفاده کنیم و در عین حال پیلود کاملا صحیح اجرا میشه پس اینجوری تونستم وف دور بزنم :
و تمام ! وف کنار رفت .این پیلود باعث شد تارگت ۱۵ ثانیه به کما بره و تاییدیهtime base sqli رو بگیرم و کافی بود برای هر پیلودی که در ادامه بخوام جدول بکشم بیرون از همین تریک ساده استفاده کنم 😎
امیدوارم باگای قشنگی بزنید و قبل از هر تستی تحلیل انجام بدید و از دانشتون استفاده کنید 🌷
@Dagen_security
@Boost
تارگتم یه آنلاین شاپ بود و از Rest api استفاده میکرد و اندپویت های مختلفی رو برای انجام هر کاری کال میکرد که یکی از این اندپویت ها این بود :
https://api.target.com/bridge/v1/categories/
اولین کاری که میکنم این اندپوینت رو از قسمت مسیر توی DOM سرچ میکنم تا بهم سرنخ بده.
سه تا پارامتر با جاوا اسکریپت ساخته شده بود که یکیش توجه منو به خودش جلب کرد
این پارامتر :
Filters
از طریق این پارامتر میتونستی فیلتر هایی که روی محصول اعمال کنی و بهت خروجی میداد
ولی چرا توجه منو به خودش جلب کرد ؟
کلمه فیلتر میتونه برای من جذاب باشه و توی ذهن من اینه که این دیتایی که داره به صورت فیلتر شده توی ریسپانس میاد دقیقا از کجا میاد ؟ آیا ممکنه از دیتابیس بیاد ؟
بیابیم و کمی دقیق تر شیم جاوا اسکریپت فقط و فقط فیلتر رو با ورودی json قبول میکرد و یه الگوی مشخصی برای فیلتر کردن داشت برای مثال به این صورت :
bridge/v1/categories?Filters={"color":"blue","city":"newyork","isActive":"True"}
و اگر حالت json رو خراب میکردی بهت این ارور رو بر میگردوند :
500 internal server error
خب ما همچنان رو فرضی که داریم متمرکزیم دقیقا اینجا همون جاییه که ذهن یه هانتر باید آلرت بزنه که اینجا یه خبرایی هست و بوی SQL میاد چون همه این رفتار های وبسایت داره با همه تلفیق میشه 🫡
پس توی این پارامتر تزریق رو به صورت تایم بیس انجام دادم و به یه پارامتر دیگه به ساختار اضافه کردم :
{"Sqltest":"sleep(5)"}
ولی به این سادگی نبود و وف آکامایی جلوی منو گرفت 🤜
اگه با SQL کار کرده باشید باید اینو بدونید که ما توی sql میتونیم و حق داریم از پرانتز های تو در تو استفاده کنیم و در عین حال پیلود کاملا صحیح اجرا میشه پس اینجوری تونستم وف دور بزنم :
?Filters={"Sqltest":"sleep(((15))))"}
و تمام ! وف کنار رفت .این پیلود باعث شد تارگت ۱۵ ثانیه به کما بره و تاییدیه
امیدوارم باگای قشنگی بزنید و قبل از هر تستی تحلیل انجام بدید و از دانشتون استفاده کنید 🌷
@Dagen_security
@Boost
1👍13🔥4❤3
Forwarded from Sec writeup refrence
Labs Detectify
Account hijacking using "dirty dancing" in sign-in OAuth-flows
Combining response-type switching, invalid state and redirect-uri quirks using OAuth, with third-party javanoscript-inclusions has multiple vulnerable scenarios where authorization codes or tokens could leak to an attacker. This could be used in attacks for…
🔥2
میخواستم توی اکانتم لاگین کنم به یه نکته ای جالبی رسیدم که گفتم باهاتون شیر کنم !
شما میتونین با استفاده از کلابریتر برپ سوییت توی هر سایتی لاگین کنید فقط کافیه توی فیلد ایمیل یوزر و ادرس کلابریتر خودتو بزاری و کد تایید توی پنلت لاگ بشه و ازش استفاده کنید .
این ویژگی خیلی کاربردی و سریعه مخصوصا برای تست نفوذ احراز هویت لازم نیست ایمیل خودمو چک کنیم و به راحتی قابل دسترسه ✅
@Dagen_security
شما میتونین با استفاده از کلابریتر برپ سوییت توی هر سایتی لاگین کنید فقط کافیه توی فیلد ایمیل یوزر و ادرس کلابریتر خودتو بزاری و کد تایید توی پنلت لاگ بشه و ازش استفاده کنید .
user@YOUR_COLABRATOR
این ویژگی خیلی کاربردی و سریعه مخصوصا برای تست نفوذ احراز هویت لازم نیست ایمیل خودمو چک کنیم و به راحتی قابل دسترسه ✅
@Dagen_security
❤19💯2
👍9❤3💯3
ریت لیمیت یکی از معروف ترین تارگت های داخلی رو چجوری دور زدم و وارد پنل کاربر شدم ؟
در نظر بگیرین ما یک فیلد شماره تلفن داریم , کلاینت شماره تلفن خودشو وارد میکنه و بعد از زدن دکمه "تایید" یک کد تایید (OTP) به شماره تلفن کلاینت ارسال میشه و مشتری با با ارسال و داشتن کد صحیح به پنلش هدایت میشه و استاتوس کد 200 رو برای ما بر میگردونه !
به عنوان مهاجم تست کیس هایی که برای این نوع احرازهویت ها داریم هدف نهایی اینه که بتونیم با عمل بروت فورس کد رو بدست بیاریم درسته ؟
پکت درخواست ما دقیقا چیزی شبیه به اینه :
خب از این درخواست چیزی که ما متوجه میشیم یه بدنه داره که فیلد "توکن" دقیقا همون کد تایید 5 رقمی منه و شماره تلفن خودم توش قراره داره و توی ریسپانس اگر کد تایید ما اشتباه باشه استاتوس "دسترسی نداشتن" رو بهم میده !
اهان یه جرقه ای توی مغز من زده میشه پس من میتونم تفیک کنم اگر کد اشتباه باشه استاتوس کد بالایی رو میگیرم و اگر کد درست باشه استاتوس 200 رو میگیرم و ریدارکت میشم به پنل !
پس تنها کاری که میموند این بود که کد رو پنج رقم از 00000-99999 رقمی رو توی اینترودر برپ سویت به این صورت بروت فورس کنم :
بروت فورس رو انجام دادم . ,ولی یه مشکلی داشت ده تا درخواست اول داشت رفتار مورد نظر منو ادامه میداد ولی یازدهمین درخواست به بعد این استاستوس به چشم اومد :
این استاتوس به ما میگه شما درخواست های زیادی زدی و دیگه اجازشو نداری .
برنامه نویس اومده و جلوی بروت فورس رو گرفته و اجازه نداده بیشتر از ده تا ریکوست بره و بیاد پس من چجوری تونستم بایپسش کنم ؟
دو تا فرض گرفتم وب سایت از طریق هدر user-agent منو بلاک میکنه یا بر اساس Ip ؟
وب اپ پشت cdn کلادفلیر بود یکی از راه هایی که برای بایپس اپی داریم اینه که از هدر های خود
بوم ! موفقیت اموز بود و اون ریت لیمیتی که برنامه نویس تعین کرده بود تا مادامی که اپی من داشت تغیر میکرد خطا نمیگیرفتم و بروت فورس ادامه پیدا میکرد و در نهایت بعد هزارن درخواست کد صحیح رو بهم میداد .
ایمپکت اسیپ پذیری این بود که من به عنوان مهاجم میتونستم شماره مبایل هر شخصی وارد کنم و با بروت فروس کد تایید اون شماره به اکانت قربانی دسترسی کامل بگیرم 🤌
این هم اضافه کنم که توی این کیس اسیپ پذیر من کد تایید بعد از نیم ساعت منقضی میشد ممکنه برای هر تارگتی تایمش متفاوت باشه
امیدوارم که از این سناریو دید خوبی گرفته باشید و دنبال بایپس های عجیب غریب نگردید و روی اصول تمرکز کنید 🌷
@Dagen_security
در نظر بگیرین ما یک فیلد شماره تلفن داریم , کلاینت شماره تلفن خودشو وارد میکنه و بعد از زدن دکمه "تایید" یک کد تایید (OTP) به شماره تلفن کلاینت ارسال میشه و مشتری با با ارسال و داشتن کد صحیح به پنلش هدایت میشه و استاتوس کد 200 رو برای ما بر میگردونه !
به عنوان مهاجم تست کیس هایی که برای این نوع احرازهویت ها داریم هدف نهایی اینه که بتونیم با عمل بروت فورس کد رو بدست بیاریم درسته ؟
پکت درخواست ما دقیقا چیزی شبیه به اینه :
POST /api/v2/passenger/auth
HEADERS: blab
{"type":"sms_v2","cellphone":"+9812345678","token":"11111","device":"random"}
خب از این درخواست چیزی که ما متوجه میشیم یه بدنه داره که فیلد "توکن" دقیقا همون کد تایید 5 رقمی منه و شماره تلفن خودم توش قراره داره و توی ریسپانس اگر کد تایید ما اشتباه باشه استاتوس "دسترسی نداشتن" رو بهم میده !
401 unauthorized
اهان یه جرقه ای توی مغز من زده میشه پس من میتونم تفیک کنم اگر کد اشتباه باشه استاتوس کد بالایی رو میگیرم و اگر کد درست باشه استاتوس 200 رو میگیرم و ریدارکت میشم به پنل !
پس تنها کاری که میموند این بود که کد رو پنج رقم از 00000-99999 رقمی رو توی اینترودر برپ سویت به این صورت بروت فورس کنم :
{"token":"BRUT FORCE"}
بروت فورس رو انجام دادم . ,ولی یه مشکلی داشت ده تا درخواست اول داشت رفتار مورد نظر منو ادامه میداد ولی یازدهمین درخواست به بعد این استاستوس به چشم اومد :
429 TOO MANY REQUESTS
این استاتوس به ما میگه شما درخواست های زیادی زدی و دیگه اجازشو نداری .
برنامه نویس اومده و جلوی بروت فورس رو گرفته و اجازه نداده بیشتر از ده تا ریکوست بره و بیاد پس من چجوری تونستم بایپسش کنم ؟
دو تا فرض گرفتم وب سایت از طریق هدر user-agent منو بلاک میکنه یا بر اساس Ip ؟
فرض اولم رو به کار گرفتم و در کنار بروت OTP هدر رو هم بروت کردم ولی رفتار همون بود و باز بلاک شدم .
توی فرض دوم با یک سیستم دیگه اینکارو انجام دادم و بله دقیقا گیر وب اپ روی IP من بود !
وب اپ پشت cdn کلادفلیر بود یکی از راه هایی که برای بایپس اپی داریم اینه که از هدر های خود
Cloudflare که توی درخواست های سرور میزاره استفاده کنیم و توی پکت بزاریمش و یه ادرس مجازی بهش بدیم و مقدار 1 رو توی اینترودر بروت فروس کنیم در کنار توکن :X-Forwarded-For : 127.0.0.BRUET_FORCE
{"token":"BRUT(00000-99999)"}
بوم ! موفقیت اموز بود و اون ریت لیمیتی که برنامه نویس تعین کرده بود تا مادامی که اپی من داشت تغیر میکرد خطا نمیگیرفتم و بروت فورس ادامه پیدا میکرد و در نهایت بعد هزارن درخواست کد صحیح رو بهم میداد .
ایمپکت اسیپ پذیری این بود که من به عنوان مهاجم میتونستم شماره مبایل هر شخصی وارد کنم و با بروت فروس کد تایید اون شماره به اکانت قربانی دسترسی کامل بگیرم 🤌
این هم اضافه کنم که توی این کیس اسیپ پذیر من کد تایید بعد از نیم ساعت منقضی میشد ممکنه برای هر تارگتی تایمش متفاوت باشه
امیدوارم که از این سناریو دید خوبی گرفته باشید و دنبال بایپس های عجیب غریب نگردید و روی اصول تمرکز کنید 🌷
@Dagen_security
❤21👍3🗿1👾1
اگه داری دامین دیسکاوری انجام میدی ولی favicon hash چک نمیکنی ، داری میس بزرگی میدی 🤌
ببینید شما وقتی هر وبسایتی رو باز کنی اون وبسایت یه لوگوی اختصاصی از خودش به داره که به اصطلاح بهش میگیم favicon که معمولا آدرسش یه این صورته و لوگو سایت رو به ما نمایش میده .
حالا ما میتونیم این favicon رو به صورت هش توی موتور جستجوگر شودان سرچ کنیم !
کاری که شودان انجام میده اینه که توی کانتنت وبسایت ها دنبال این favicon میگرده و به ما خروجی میده و توی نتایج ممکنه یه دامنه دور افتاده و فراموش شده به ما بده که از این favicon استفاده کرده و باگ خورش خوب باشه 🗿
چجوری میتونیم اون آدرس رو به هش تبدیل و دورک شودان رو داشته باشیم ؟ با اسکریپت زیر 👇
@Dagen_security
ببینید شما وقتی هر وبسایتی رو باز کنی اون وبسایت یه لوگوی اختصاصی از خودش به داره که به اصطلاح بهش میگیم favicon که معمولا آدرسش یه این صورته و لوگو سایت رو به ما نمایش میده .
Target/favicon.ico
حالا ما میتونیم این favicon رو به صورت هش توی موتور جستجوگر شودان سرچ کنیم !
کاری که شودان انجام میده اینه که توی کانتنت وبسایت ها دنبال این favicon میگرده و به ما خروجی میده و توی نتایج ممکنه یه دامنه دور افتاده و فراموش شده به ما بده که از این favicon استفاده کرده و باگ خورش خوب باشه 🗿
چجوری میتونیم اون آدرس رو به هش تبدیل و دورک شودان رو داشته باشیم ؟ با اسکریپت زیر 👇
Click Favicon hash generator
@Dagen_security
❤12👍6🔥3
Dagen (security)
ریت لیمیت یکی از معروف ترین تارگت های داخلی رو چجوری دور زدم و وارد پنل کاربر شدم ؟ در نظر بگیرین ما یک فیلد شماره تلفن داریم , کلاینت شماره تلفن خودشو وارد میکنه و بعد از زدن دکمه "تایید" یک کد تایید (OTP) به شماره تلفن کلاینت ارسال میشه و مشتری با با ارسال…
میبینم که این سبک از باگای تحلیلی رو دوست داشتید و داره دست به دست میشه. اینا قسمت هایی هستند باید روش زمان مفید بزارید و تحلیلتون رو عمیق و قوی کنید .
توی پست بعدی قراره بریم سراغ ایزی ترین و اسون ترین command injection که از یه تارگت VPD زدم و برام نتیجه خوبی داشت , اماده ای براش ؟ 🫡
@Dagen_security
توی پست بعدی قراره بریم سراغ ایزی ترین و اسون ترین command injection که از یه تارگت VPD زدم و برام نتیجه خوبی داشت , اماده ای براش ؟ 🫡
@Dagen_security
🔥26👍5❤3
وقتتون بخیر 🌷
یکی از دوستان ترجمه فارسی کتاب جامع Web application security رو موجود کرده . کتاب کاملا دستی و با لحن عامیانه و قابل فهم نوشته شده و چینش زبان فارسی و انگلیسیش جوری نیست که متن بهم خورده باشه .
علاوه بر اون مثال های واقعی بهش اضافه شده که به درک عمیقتر ساختار وب کمک میکنه .
دوستانی که به این کتاب نیاز دارن میتونن به ایدی ایشون پیام بدن : 👇
@bookmind369
یکی از دوستان ترجمه فارسی کتاب جامع Web application security رو موجود کرده . کتاب کاملا دستی و با لحن عامیانه و قابل فهم نوشته شده و چینش زبان فارسی و انگلیسیش جوری نیست که متن بهم خورده باشه .
علاوه بر اون مثال های واقعی بهش اضافه شده که به درک عمیقتر ساختار وب کمک میکنه .
دوستانی که به این کتاب نیاز دارن میتونن به ایدی ایشون پیام بدن : 👇
@bookmind369
💯3👍1
چجوری یه Command injection ساده رو شکار کردم ؟
تارگت من یه کمپانی بزرگ از محصولات فروش بود و یه مین صفحه داشت که امنه امن بود پس تصمیم گرفتم به جای اپلیکشن مپینگ برم سراغ واید ریکان .
اولین کاری که کردم اسم کمپانی رو وبسایت هایی مثل bgpview سرچ زدم تا ببینم ایا میتونم یه asn ثبت شده با نام کامپانی پیداکنم یا نه ؟
از شودان استفاده کردم برای دامین دیسکاوری بیشتر و از تمام تولز ها برای سرچ استراخ دامین استفاده کردم و نتایج تکراری رو حذف کردم با dnsx تمام اپی های هر دامین رو برسی کردم و یک asn توجه منو به به خودش جلب کرد
رنج اپیشو کشیدم بیرون . یک asn خریداری شده توسط خود کمپانی بود و هر رنج اپی که توی اون وجود داشت متعلق به زیر دامنه سایت هدف من بود .
روی هر کدوم از اون رنج اپی ها ابزار Httpx رو ران کردم تا ببینم که ایا سرویس http روی این رنج فعاله یا نه ؟
یک دامین برای من بالا اومد که وقتی بازش کردم هیچی نبود و به من استاتوس 404 میداد ایا این جای خوبیه برای کار کردن یا برم برای بعدی ؟
جوابش اینه : قطعا جای خوبیه و باید به عنوان یک مهاجم حتی 403 رو هم فاز کنیم ممکنه یه مسیر گیر بیاریم که سطح دسترسیش کنترل نشده باشه و ما بتونیم محتوا رو ببینیم . شروع کردم روی دامین فاز کردن سنگین که نتایجش این بود :
ممکنه بگین که خب این مسیرایی که بدست اومده که پابلیکه و اطلاعات مهمی توش نیست . ولی طبق تجربه بهتون بگم شما cgi-bin رو ممکنه زیاد دیده باشید حتما مسیر بعدشو با پسوند های مختلف فاز کنید و این نکته اییه که خیلیا اسکیپش میکنن .
بیان بریم سراغ اینکه این cgi-bin چیه ؟
یه روش قدیمیه که برای اجرا کردن اسکریپ های سمت سرور که دقیقا توی دایرکتوری ریشه قرار داره و مجوز خواندن و اجرا کردن روش فعاله و اگر من فایل اسکریپ رو با مرورگرم باز کنم دقیقا اون فایل اجرا میشه و پسوند های اسکریپ هایی که داخلشه معمولا این پسوند هاست .
پس من هینت بهتون دادم که اگر من بیام و مسیر بعد رو اینجوری فاز کنم کاملا نتیجه متفاوته :
و بله یه کلمه پیدا شد به اسم reset و وقتی بازش کردم این استک تریس برام ظاهر شد :
یعنی این پارامتر از این ادرس دریافت نشد پس من توی قدم بعدی اومدم و یه پارامتر بهش دادم .
هیچ اتفاقی نیوفتاد و یه صفحه خالی شد .cgi این اسکریپت رو اجرا کرده ولی مقدارشم مهمه براش ؟ کلمه کلیدی db_prefix رو یه سرچ زدم تا ببینم این پارامتر از کجا میاد ؟
متوجه شدم که db_prefix معمولا برای تعین جدول دیتابیس بین چند تا سیستم استفاده میشه و قاعدتا اگه مقدار اشتباه به اسکریپت بدیم اجرا نمیشه .
کلی این قسمت فاز کردم تا به مقدار درست برسم و سرنخ بگیرم هیچ نتیجه ای نداشت ❌
با خودم فکر کردم چی میشه اگه ورودی من توی فانکشنی بشینه که اون فانکشن دستورات بش اجرا کنه (چون هیچ چیزی توی پشت برای ما ملموس نیست) خروجی من کجا میشینه ؟
هدف من کامند اینجکشن بود پس یه دستور ساده گذاشتم :
اجرا نشد . شاید نیاز به یه جدا کننده داره پس یه %26 هم بهش اضافه کردم .
و بوم خروجی دستور برای من پرینت شد و من دسترسی شل داشتم 😎
—————
چرا اجرا شد ؟
احتمالا اسکریپت که اون پشت وجود داشت از یه قالب نا امن استفاده میکرد و مستقیما ورودی من روی توی بش اجرا میکرد و اگر دستوری خروجی نداشت بهم هیچی نشون نمیداد ولی اگر از جدا کننده ها استفاده کنم مستقیما خروجی رو لاگ میکنه . این همون ریشه اصلی اسیپ پذیری RCE هستش که ورودی دقیقا توی بدون هیچ سنیتایزی داخل بش یا شل میشینه و خروجی رو لاگ میکنه .
امیدوارم لذت برده باشید و از اشتباهات برنامه نویس استفاده کنید چون جایی برنامه نویس به صورت نا امن داره ورودی رو از ما میگیره و یه بلایی سرش میاره باید روش حساس بشید و وقت مفید بزارید 🌷
@Dagen_security
تارگت من یه کمپانی بزرگ از محصولات فروش بود و یه مین صفحه داشت که امنه امن بود پس تصمیم گرفتم به جای اپلیکشن مپینگ برم سراغ واید ریکان .
اولین کاری که کردم اسم کمپانی رو وبسایت هایی مثل bgpview سرچ زدم تا ببینم ایا میتونم یه asn ثبت شده با نام کامپانی پیداکنم یا نه ؟
از شودان استفاده کردم برای دامین دیسکاوری بیشتر و از تمام تولز ها برای سرچ استراخ دامین استفاده کردم و نتایج تکراری رو حذف کردم با dnsx تمام اپی های هر دامین رو برسی کردم و یک asn توجه منو به به خودش جلب کرد
Company ,inc.
رنج اپیشو کشیدم بیرون . یک asn خریداری شده توسط خود کمپانی بود و هر رنج اپی که توی اون وجود داشت متعلق به زیر دامنه سایت هدف من بود .
روی هر کدوم از اون رنج اپی ها ابزار Httpx رو ران کردم تا ببینم که ایا سرویس http روی این رنج فعاله یا نه ؟
echo 1.1.1.1/24 | mapcidr -silent | httpx -noscript -sc
یک دامین برای من بالا اومد که وقتی بازش کردم هیچی نبود و به من استاتوس 404 میداد ایا این جای خوبیه برای کار کردن یا برم برای بعدی ؟
جوابش اینه : قطعا جای خوبیه و باید به عنوان یک مهاجم حتی 403 رو هم فاز کنیم ممکنه یه مسیر گیر بیاریم که سطح دسترسیش کنترل نشده باشه و ما بتونیم محتوا رو ببینیم . شروع کردم روی دامین فاز کردن سنگین که نتایجش این بود :
ping —> 200
health —> 200
cgi-bin —> 403
ممکنه بگین که خب این مسیرایی که بدست اومده که پابلیکه و اطلاعات مهمی توش نیست . ولی طبق تجربه بهتون بگم شما cgi-bin رو ممکنه زیاد دیده باشید حتما مسیر بعدشو با پسوند های مختلف فاز کنید و این نکته اییه که خیلیا اسکیپش میکنن .
بیان بریم سراغ اینکه این cgi-bin چیه ؟
یه روش قدیمیه که برای اجرا کردن اسکریپ های سمت سرور که دقیقا توی دایرکتوری ریشه قرار داره و مجوز خواندن و اجرا کردن روش فعاله و اگر من فایل اسکریپ رو با مرورگرم باز کنم دقیقا اون فایل اجرا میشه و پسوند های اسکریپ هایی که داخلشه معمولا این پسوند هاست .
.pl , .py , .php , .cgi
پس من هینت بهتون دادم که اگر من بیام و مسیر بعد رو اینجوری فاز کنم کاملا نتیجه متفاوته :
target/cgi-bin/FUZZ.cgi
و بله یه کلمه پیدا شد به اسم reset و وقتی بازش کردم این استک تریس برام ظاهر شد :
'db_prefix' parameter is required
یعنی این پارامتر از این ادرس دریافت نشد پس من توی قدم بعدی اومدم و یه پارامتر بهش دادم .
target/reset.py?db_prefix=test
هیچ اتفاقی نیوفتاد و یه صفحه خالی شد .cgi این اسکریپت رو اجرا کرده ولی مقدارشم مهمه براش ؟ کلمه کلیدی db_prefix رو یه سرچ زدم تا ببینم این پارامتر از کجا میاد ؟
متوجه شدم که db_prefix معمولا برای تعین جدول دیتابیس بین چند تا سیستم استفاده میشه و قاعدتا اگه مقدار اشتباه به اسکریپت بدیم اجرا نمیشه .
کلی این قسمت فاز کردم تا به مقدار درست برسم و سرنخ بگیرم هیچ نتیجه ای نداشت ❌
با خودم فکر کردم چی میشه اگه ورودی من توی فانکشنی بشینه که اون فانکشن دستورات بش اجرا کنه (چون هیچ چیزی توی پشت برای ما ملموس نیست) خروجی من کجا میشینه ؟
هدف من کامند اینجکشن بود پس یه دستور ساده گذاشتم :
db_prefix=echo 1
اجرا نشد . شاید نیاز به یه جدا کننده داره پس یه %26 هم بهش اضافه کردم .
db_prefix=%26echo 1%26
و بوم خروجی دستور برای من پرینت شد و من دسترسی شل داشتم 😎
—————
چرا اجرا شد ؟
احتمالا اسکریپت که اون پشت وجود داشت از یه قالب نا امن استفاده میکرد و مستقیما ورودی من روی توی بش اجرا میکرد و اگر دستوری خروجی نداشت بهم هیچی نشون نمیداد ولی اگر از جدا کننده ها استفاده کنم مستقیما خروجی رو لاگ میکنه . این همون ریشه اصلی اسیپ پذیری RCE هستش که ورودی دقیقا توی بدون هیچ سنیتایزی داخل بش یا شل میشینه و خروجی رو لاگ میکنه .
امیدوارم لذت برده باشید و از اشتباهات برنامه نویس استفاده کنید چون جایی برنامه نویس به صورت نا امن داره ورودی رو از ما میگیره و یه بلایی سرش میاره باید روش حساس بشید و وقت مفید بزارید 🌷
@Dagen_security
🔥23❤7👍6
Dagen (security)
چجوری یه Command injection ساده رو شکار کردم ؟ تارگت من یه کمپانی بزرگ از محصولات فروش بود و یه مین صفحه داشت که امنه امن بود پس تصمیم گرفتم به جای اپلیکشن مپینگ برم سراغ واید ریکان . اولین کاری که کردم اسم کمپانی رو وبسایت هایی مثل bgpview سرچ زدم تا ببینم…
دوستان نکته خیلی مهم راجب این باگ این بود که اگه وبسایت توی خطایی که بهم داد اسم پارامتر رو لو نمیداد پارامتر
ورد لیست هاتونو رو کاستوم کنین و هر پارامتر جدیدی که توی هانتتون بهش بر میخورید دستی اضافه کنید 🤌
db_prefix توی ورد لیست های من وجود نداشت و من باگو میس میدادم :)ورد لیست هاتونو رو کاستوم کنین و هر پارامتر جدیدی که توی هانتتون بهش بر میخورید دستی اضافه کنید 🤌
❤17👍5💯1
دوستان ارادت .
چند تا از عزیزان پیام داده بودن که ماهایی که تازه کاریم چه کتابی رو برای شروع پیشنهاد میکنی ؟
حس کردم این سوال خیلی از بچهاست پس گفتم در قالب یه پست معرفی کنم .
کتاب باگ بانتی بوت کمپ که تصویرشو بالا گذاشتم نقشه راه باگ بانتیه . اگه باگ بانتی رو تازه شروع کردین یا علاقه مندید و میخواین پایه دانش قوی داشته باشید قطعا باید این کتاب رو بخونید چون یه دانش کلی از پرورگرم های باگ بانتی + ریکان + فلوی مهم ترین اسیپ پذیری ها + تنظیمات برپ + گزارش نویسی رو بهتون میده پس اگه از من میشنوین اسکیپش نکنید و حداقل یکبار بخونیدش پس بحثی توش نداریم .
اگه میتونین از چاپ اصلی استفاده کنید و اگه انگلیسی تون اوکیه و میتونین بخونین که چه بهتر . ولی ترجمه فارسیشو میتونین توی گوگل سرچ کنید ولی من اطلاعی ندارم که کدوم ترجمه درست تر و گیراتره و یا میتونین که از این دوستمون که دستی ترجمه میکنه و ترجمشو قبول دارم تهیه کنین .👇
+ در کل کتاب بخونید علاوه بر دانشی که کتاب بهتون اضافه میکنه اگه توی اینده شما به پنتست و یا مصاحبه کاری دعوت بشی با کتاب میتونی فنی و تر و قشنگ تر صحبت کنی و خیلی از تکنیک های جدید فلان باگ از دل همین دسته کتاب ها میزنه بیرون . پس کتاب بخونید و مطمئن شین هر کتابی که میخونین براتون ارزش افزوده داره🌷
@Dagen_security
چند تا از عزیزان پیام داده بودن که ماهایی که تازه کاریم چه کتابی رو برای شروع پیشنهاد میکنی ؟
حس کردم این سوال خیلی از بچهاست پس گفتم در قالب یه پست معرفی کنم .
کتاب باگ بانتی بوت کمپ که تصویرشو بالا گذاشتم نقشه راه باگ بانتیه . اگه باگ بانتی رو تازه شروع کردین یا علاقه مندید و میخواین پایه دانش قوی داشته باشید قطعا باید این کتاب رو بخونید چون یه دانش کلی از پرورگرم های باگ بانتی + ریکان + فلوی مهم ترین اسیپ پذیری ها + تنظیمات برپ + گزارش نویسی رو بهتون میده پس اگه از من میشنوین اسکیپش نکنید و حداقل یکبار بخونیدش پس بحثی توش نداریم .
اگه میتونین از چاپ اصلی استفاده کنید و اگه انگلیسی تون اوکیه و میتونین بخونین که چه بهتر . ولی ترجمه فارسیشو میتونین توی گوگل سرچ کنید ولی من اطلاعی ندارم که کدوم ترجمه درست تر و گیراتره و یا میتونین که از این دوستمون که دستی ترجمه میکنه و ترجمشو قبول دارم تهیه کنین .👇
@bookMind369
+ در کل کتاب بخونید علاوه بر دانشی که کتاب بهتون اضافه میکنه اگه توی اینده شما به پنتست و یا مصاحبه کاری دعوت بشی با کتاب میتونی فنی و تر و قشنگ تر صحبت کنی و خیلی از تکنیک های جدید فلان باگ از دل همین دسته کتاب ها میزنه بیرون . پس کتاب بخونید و مطمئن شین هر کتابی که میخونین براتون ارزش افزوده داره🌷
@Dagen_security
❤32👍10👾1
دوستانی که رو فایل اپلود کار میکنین اگه این پترن رو دیدین با اون قسمت خداحافظی کنین و لطفا روش کار نکنید سیفه 🗿
@Dagen_security
uploader + s3 bucket + revers proxy
@Dagen_security
👍4🗿4❤3
Dagen (security)
دوستانی که رو فایل اپلود کار میکنین اگه این پترن رو دیدین با اون قسمت خداحافظی کنین و لطفا روش کار نکنید سیفه 🗿
uploader + s3 bucket + revers proxy
uploader + s3 bucket + revers proxy
برای دوستانی که متوجه نشدند توضیح میدم .
ببینید شما وقتی داری برای اپلود فایل تست میزنید و حالا مثلا میتونه اپلود عکس و یا پروفایل باشه . وقتی که شما عکسی رو با هر پسوندی بتونی اپلود کنی مرحله بعدش اینه که شما باید بدونی عکسی که اپلود شد دقیقا کجا نشسته ؟
اپلودر های مدرن امروزی از پترن بالایی استفاده میکنن .
عکستون رو اپلود میکنین و عکس میشه توی s3 bucket تارگتتون (وقتی فایل رو از توی باکت باز میکنین چون باکت صرفا یه استوریجه و وب سرور نیست هیچ پسوندی رو اجرا نمیکنه و استاتیک اجرا میکنه)
ولی حالا ما به یک ریورس پراکسی مثل nginx هم نیاز داریم دیگه که دیتا رو با پروکسی از باکت بخونه و بیاره سمت وبسایتمون و nginx دیتای رو استاتیک تحویل میگیره و تحویل میده و فایل فقط دانلود و یا نمایش داده میشه
پس من هر پسوند خطرناکی بزارم با هر پیلودی , هیچ بایپسی نکردم .
هیچکدوم اجرا نمیشه ❌
نکته جالبی بود که گفتم باهاتون به اشتراک بزارم تا زمان بیهوده روش نزارید 🤌
@Dagen_security
ببینید شما وقتی داری برای اپلود فایل تست میزنید و حالا مثلا میتونه اپلود عکس و یا پروفایل باشه . وقتی که شما عکسی رو با هر پسوندی بتونی اپلود کنی مرحله بعدش اینه که شما باید بدونی عکسی که اپلود شد دقیقا کجا نشسته ؟
اپلودر های مدرن امروزی از پترن بالایی استفاده میکنن .
عکستون رو اپلود میکنین و عکس میشه توی s3 bucket تارگتتون (وقتی فایل رو از توی باکت باز میکنین چون باکت صرفا یه استوریجه و وب سرور نیست هیچ پسوندی رو اجرا نمیکنه و استاتیک اجرا میکنه)
ولی حالا ما به یک ریورس پراکسی مثل nginx هم نیاز داریم دیگه که دیتا رو با پروکسی از باکت بخونه و بیاره سمت وبسایتمون و nginx دیتای رو استاتیک تحویل میگیره و تحویل میده و فایل فقط دانلود و یا نمایش داده میشه
پس من هر پسوند خطرناکی بزارم با هر پیلودی , هیچ بایپسی نکردم .
php,noscript,html
هیچکدوم اجرا نمیشه ❌
نکته جالبی بود که گفتم باهاتون به اشتراک بزارم تا زمان بیهوده روش نزارید 🤌
@Dagen_security
❤20👍6❤🔥4