رایتاپ CTF ایران سرور - Iran server CTF Writeup

همه چیز از اینجا شروع شد...قضیه از اونجا شروع میشه که دوشنبه شب ( 1400/9/8 ) بود که یکی از دوستان لینک توییت ایران سرور رو توی گروهمون فرستاد. ایران سرور در توییتر، اینستاگرام و تلگرام خود اعلام کرده بود که می‌خواهند چالش فتحِ پرچم (CTF Challenge) رو در روز سه شنبه از ساعت 11 تا 19 شب برگزار کنند و اطلاعات بیشتر رو در ساعت 10 صبح در صفحه خود اعلام می‌کنند. توییت ایران سروراین اولین رایت‌آپی هست که مینویسم و قصد نوشتنش رو نداشتم ولی با پیشنهاد عباس هیبتی عزیز مایل به نوشتن این رایت‌آپ شدم. اگر که خوب ننوشتم و عکس هام خوب نشد، به بزرگی خودتون ببخشید ♥ و خیلی خوشحال میشم نظراتون رو حتما حتما برام کامنت کنید. :))شروع برای فتح پرچمصبح شد و سریع از خواب پریدم و رفتم توییتر ایران سرور رو چک کردم و دیدم لینک رو گذاشتند و سریع وارد لینک شدم. لینکی که دادن این بود: ctf.irancert.comکه به این صفحه ریدایرکت می‌شد:ctf.irancert.com/loginصفحه‌ی لاگیندر مرحله ی اول فکر کردم باید با حساب ایران سرور خودم لاگین کنم که قبول نکرد. و تا چند دقیقه ی اول فکر نمیکردم این قسمت هم جز CTF باشه! و دنبال نام کاربری و رمز توی صفحات ایران سرور بودم :)))بعد چند دقیقه یه نوتیف از گروه تلگرام اومد که یک عزیزی " admin:1234 " رو فرستاد و گفتن آسیب -پذیری SQLi داشت و تازه دوزاریم جا افتاد که این هم بخشی از CTF هست :)))خوب تا اینجا که کاری نکردم و با لطف دوستان وارد شدم :)چی به چیه؟بعد از تایپ نام کاربری و پسورد به عنوان کاربر ویژه لاگین کردم. طبعا باید یه گشتی توی سایت بزنم و ببینم قضیه از چه قراره!پنل کاربری با دسترسی کاربر ویژهپنلِ کاربری استاتیک بود و اطلاعات و نمودار ها صرفا جنبه‌ی تزئینی داشتن :)در ناوبار به غیر از پروفایل (کاربر ویژه) چهار گزینه موجود بود.داشبورد : ctf.irancert.comبررسی وضعیت نود ها : ctf.irancert.com/ajax/pingتغییر کلمه عبور : ctf.irancert.com/ajax/passwordخروج : ctf.irancert.com/logoutخوب بدیهی هست که "داشبورد" و "تغییر کلمه عبور" و "خروج"چه کاربردی دارند و این دو گزینه هم صرفا جنبه‌ی تزئینی داشت.بررسی وضعیت نود هاوقتی روی گزینه‌ی بررسی وضعیت نود ها کلیک کردم این صفحه برایم باز شد. یک ورودی داشت که ip می‌گرفت و پینگ می‌کرد.صفحه‌ی بررسی وضعیت نود هااگر ارتباط با اون آیپی برقرار بود یه پیام سبز رنگ نشون میداد و اگر ارتباط برقرار نبود یه پیام قرمز نشون می‌داد. (متاسفانه یادم رفت از این قسمت اسکرین شات بگیرم و از عکس های noob0x استفاده می‌کنم)پیام سبز رنگ به نشانه برقراری ارتباطدر این قسمت باید پورت های مختلف رو فاز می‌کردم تا پورت های مختلف باز رو پیدا کنم. (متاسفانه از این قسمت هم اسکرین نگرفتن.) همزمان که داشتم فاز میکردم mr.msa پورت های باز رو برام فرستاد و در نتیجه این پورت ها باز بودن:53, 21, 110, 80, 25, 143, 443, 465, 587, 783, 953, 993, 995, 3031, 3310, 3306, 4041, 4190, 8080بررسی سورس کدرفتم یه سری به سورس کد زدم. در سورس کد یه کامنتی توجه من رو جلب کرد.کامنتی در سورس کدیکی از گزینه های ناوبار به اسم "بخش ادمین" کامنت شده بود. مشخص است که یه رکوئست باید به لینک زیر بزنم!<li class=&quotnav-item&quot> <a href=&quothttps://ctf.irancert.com/GSecLab/EC3A13400EAB4431B5FF263788B8C1A8&quot class=&quotnav-link&quot> <i class=&quotnav-icon fa fa-magic&quot></i> <p>بخش ادمین</p> </a>و یه رکوئست زدم و ریسپانسش این صفحه بود:ریسپانس پنل ادمین - 403 unauthorized actionاین تنها سرنخ بود و طبعا باید بایپسش می‌کردم. همین موقع ها بود که ایران سرور یه استوری گذاشت :)استوری ایران سرور - کاربر ویژه یا محدود؟پس رفتم تو گوگل یه سرچی زدم و این صفحه رو پیدا کردم. https://book.hacktricks.xyz/pentesting/pentesting-web/403-and-401-bypasses در این صفحه چند هدر برای بایپس 403 پیشنهاد داده بود:X-Originating-IP: 127.0.0.1X-Forwarded-For: 127.0.0.1X-Forwarded: 127.0.0.1Forwarded-For: 127.0.0.1X-Remote-IP: 127.0.0.1X-Remote-Addr: 127.0.0.1X-ProxyUser-Ip: 127.0.0.1X-Original-URL: 127.0.0.1Client-IP: 127.0.0.1True-Client-IP: 127.0.0.1Cluster-Client-IP: 127.0.0.1X-ProxyUser-Ip: 127.0.0.1Host: localhostارتباط رو به برپ پروکسی کردم و به رکوئستم اولین هدر رو اضافه کردم و جواب نداد. بعدش دومی رو تست کردم.اضافه کردن هدر به رکوئست که جواب داد. :) الان دسترسیم به ادمین کل سیستم ارتقا یافت. ( این بده... )ارور 403 بایپس شدخوب در اینجا هم مثل پنل کاربر ویژه صفحاتش استاتیک هست. در ناوبار هم دو گزینه جدید اومد:مقصد های ارسال: ctf.irancert.com/GSecLab/ajax/registerارسال اطلاعات: ctf.irancert.com/GSecLab/ajax/send-dataابتدا روی مقصد های ارسال رو کلیک کردم.مقصد های ارسالاگر جمع بستن اشتباه مقصد را که میشه مقاصد رو در نظر نگیریم و از اصل مطلب دور نشیم، یه ورودی اینجا هست که هر کارکتری را قبول میکنه!فعلا این قسمت رو ایگنور کردم و روی ارسال اطلاعات کلیک کردم.ارسال های ارسالدر این صفحه یه ورودی به اسم آدرس مقصد وجود داشت که طبعا مربوط به قسمت مقصد های ارسال میشد. یه آپلودر هم وجود داشت که به لینک زیر، فایل رو ارسال می‌کرد.ctf.irancert.com/GSecLab/ajax/uploaderو یه فرم هم در انتها بود که شش تا ورودی می‌گرفت:نامنام خانوادگیایمیلشماره همراهفلگتوضیحات بیشترایران سرور باز هم در این لحظه یه استوری دیگه گذاشت و یه هینت دیگه داد. و چون ایران سرور مرام و معرفت بالایی داره یه ساعت دیگه هم تمدید کرد. =)))استوری جدید ایران سرورطبعا باید فلگ رو بدست میاوردم و همراه با اطلاعات شخصیم به یه جایی که هنوز نمیدونستم کجاست ارسالش می‌کردم. با خودم فکر کردم که اطلاعات خودم رو باید به کجا ارسال کنم؟ به روابط عمومی شبکه سه؟ به مسابقه محله؟ به قرعه کشی دنا پلاس؟ به اسنپ فود؟ خوب بدیهی هست که اطلاعات خودم رو باید به ایران سرور رو ارسال کنم. سوال بعدی که ایجاد شد این بود به کدوم آدرسی که متعلق به ایران سرور ارسال کنم؟ درسته متد ارسال اطلاعاتش POST بود ولی نباید آدرس پستی شرکت ایران سرور رو وارد بکنم :))) پس تنها چیزی که میمونه آدرس آیپی ایران سرور هست که من نداشتم و پس به لوکال هاست (127.0.0.1) باید ارسال می‌کردم.در قسمت مقصد های ارسال 127.0.0.1 رو وارد کردم و به قسمت ارسال اطلاعات بازگشتم و اطلاعات شخصی خودم رو تایپ کردم و گزینه ارسال رو زدم. یه پیام خطا اومد که یادم نمیاد چه چیزی نوشته بود.باز یه سوال دیگه ای برام ایجاد شد که آیا باید به لوکال هاست ارسال بشه یا نه؟ و همین جور که داشتم فکر می‌کردم به ذهنم اومد که این اطلاعات باید به یه پورت خاصی ارسال بشه نه 127.0.0.1 بدون پورت!دوباره در مقصد های ارسال آیپی لوکال هاست رو با پورت 80 نوشتم.اضافه کردن 127.0.0.1:80 در مقصد های ارسال و به قسمت اطلاعات بازگشتم و دوباره فرم رو پر کردم. و فرم رو ارسال کردم. باز هم پیام خطا داد :(ارسال اطلاعات به پورت 80 لوکال هاستاینجا بود که یاد قسمت بررسی وضعیت نودها افتادم که حدود تا 20 پورت باز رو پیدا کرده بودم. سریع رفتم با برپ این درخواست رو با اون 20 تا پورت فاز کردم.فاز کردن پورت هادو گزینه بود که Length ریسپانسش با بقیه موارد فرق می‌کرد. ریسپانس یکی از موارد رو دیدم و رفتم با دیکدر unicode، دیکدش کردم.و بله :)))))))))) بالاخره تونستم سابمیتش کنم. اما هنوز فلگ موندش. واضح بود که قسمت آپلودر رو واسه خوشگلی نذاشتن. سریع رفتم یه شل آپلود کردم و آپلودر آسیب پذیری RCE داشت و فلگ رو بدست آوردم. ولی متاسفانه دوباره خواستم اطلاعات خودم رو با فلگ ارسال کنم، پیغام خطا (شما تنها یکبار مجاز به ثبت اطلاعات خود هستید) می‌داد و سابمیت نشد. :((((در استوری گفته بودن که اول اطلاعات شخصیتون رو ارسال کنید و بعدش فلگ رو پیدا کنید)برحال تجربه خوب و جذابی بود و خیلی کیف کردم :) از ایران سرور هم بابت برگزاری این CTF تشکر می‌کنم و تا باشد از این CTF ها...جا از دوست خوبم mr.msa تشکر کنم ❤خیلی ممنون میشم نظراتتون برام کامنت کنید.من رو میتونید در این شبکه های اجتماعی هم دنبال کنید:medium: https://medium.com/@alyrezotwitter: https://twitter.com/alyrezo