Λ L I R Ξ Z Λ
Λ L I R Ξ Z Λ
خواندن ۶ دقیقه·۳ سال پیش

رایتاپ 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
ریسپانس پنل ادمین - 403 unauthorized action


این تنها سرنخ بود و طبعا باید بایپسش می‌کردم. همین موقع ها بود که ایران سرور یه استوری گذاشت :)

استوری ایران سرور - کاربر ویژه یا محدود؟
استوری ایران سرور - کاربر ویژه یا محدود؟


پس رفتم تو گوگل یه سرچی زدم و این صفحه رو پیدا کردم.

https://book.hacktricks.xyz/pentesting/pentesting-web/403-and-401-bypasses

در این صفحه چند هدر برای بایپس 403 پیشنهاد داده بود:

  • X-Originating-IP: 127.0.0.1
  • X-Forwarded-For: 127.0.0.1
  • X-Forwarded: 127.0.0.1
  • Forwarded-For: 127.0.0.1
  • X-Remote-IP: 127.0.0.1
  • X-Remote-Addr: 127.0.0.1
  • X-ProxyUser-Ip: 127.0.0.1
  • X-Original-URL: 127.0.0.1
  • Client-IP: 127.0.0.1
  • True-Client-IP: 127.0.0.1
  • Cluster-Client-IP: 127.0.0.1
  • X-ProxyUser-Ip: 127.0.0.1
  • Host: localhost

ارتباط رو به برپ پروکسی کردم و به رکوئستم اولین هدر رو اضافه کردم و جواب نداد. بعدش دومی رو تست کردم.

اضافه کردن هدر به رکوئست
اضافه کردن هدر به رکوئست

که جواب داد. :) الان دسترسیم به ادمین کل سیستم ارتقا یافت. ( این بده... )

ارور 403 بایپس شد
ارور 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 در مقصد های ارسال
اضافه کردن 127.0.0.1:80 در مقصد های ارسال

و به قسمت اطلاعات بازگشتم و دوباره فرم رو پر کردم. و فرم رو ارسال کردم. باز هم پیام خطا داد :(

ارسال اطلاعات به پورت 80 لوکال هاست
ارسال اطلاعات به پورت 80 لوکال هاست

اینجا بود که یاد قسمت بررسی وضعیت نودها افتادم که حدود تا 20 پورت باز رو پیدا کرده بودم. سریع رفتم با برپ این درخواست رو با اون 20 تا پورت فاز کردم.

فاز کردن پورت ها
فاز کردن پورت ها

دو گزینه بود که Length ریسپانسش با بقیه موارد فرق می‌کرد. ریسپانس یکی از موارد رو دیدم و رفتم با دیکدر unicode، دیکدش کردم.

و بله :)))))))))) بالاخره تونستم سابمیتش کنم. اما هنوز فلگ موندش.

واضح بود که قسمت آپلودر رو واسه خوشگلی نذاشتن. سریع رفتم یه شل آپلود کردم و آپلودر آسیب پذیری RCE داشت و فلگ رو بدست آوردم. ولی متاسفانه دوباره خواستم اطلاعات خودم رو با فلگ ارسال کنم، پیغام خطا (شما تنها یکبار مجاز به ثبت اطلاعات خود هستید) می‌داد و سابمیت نشد. :(((

(در استوری گفته بودن که اول اطلاعات شخصیتون رو ارسال کنید و بعدش فلگ رو پیدا کنید)



برحال تجربه خوب و جذابی بود و خیلی کیف کردم :) از ایران سرور هم بابت برگزاری این CTF تشکر می‌کنم و تا باشد از این CTF ها...

جا از دوست خوبم mr.msa تشکر کنم ❤

خیلی ممنون میشم نظراتتون برام کامنت کنید.
من رو میتونید در این شبکه های اجتماعی هم دنبال کنید:


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