برای ادامهی کار ترجیح میدهم ابتدا مشخص کنیم که قرار است چه کنیم؛ زیرا معتقدم اگر هدف از ابتدا مشخص باشد، حاشیهپردازی و یادگیریِ اضافات رخ نخواهد داد و ما صرفاً مواردی را خواهیم آموخت که برای انجامِ آن هدف نیاز است.
ما در این سلسلهمطالب، از سایتِ «دیوار»، که یک پایگاه برای ارسالِ آگهیهای آنلاین است استفاده خواهیم کرد.
دلیلِ اینکه از دیوار استفاده میکنیم؛ پتانسیلِ بالای این سایت است؛ این پتانسیلِ بالا به سببِ آن تولید شده است که APIهای مورد استفاده برای ارسالِ درخواستها به خوبی طراحی شدهاند و از قالبِ خوبی تبعیت میکنند.
همچنین وسعتِ زیادِ عملکردهای در دسترس که در این سایت قرار دارند، به ما این امکان را میدهد که چیزهای بیشتری یاد بگیریم.
و دلیلِ استفاده از یک سایتِ معروف، اضافه کردنِ کمی هیجان و لذت به کار است تا بازدهِ یادگیری را افزایش دهد.
ایننیز جالب به ذکر است که حتی اگر دیواریها از این مطالب خوششان نیاید هم من قادر به انجامِ کاری برایشان نخواهم بود و چارهشان در تغییرِ ساختارِ درخواستها و اذیت کردنِ باتنویسها نهفته است!
شروع سریع
برای یک شروعِ سریع، ابتدا BurpSuite را روی سیستمِ خود راهاندازی و اجرا کنید.
چیست؟
BurpSuite یک برنامه برای شنود، و تغییر روی درخواستهای HTTPــِ ارسالی از سمتِ کامپیوترِ شما به سمتِ اینترنت است(و البته برعکسش را هم انجام میدهد).
ما از این برنامه برای بررسیِ درخواستها، و انجامِ تغییر روی آنها و تکرارِ درخواست با تغییراتِ اعمالشده استفاده خواهیم کرد.
چطور گیرش بیارم؟
شما هر لحظه از روز، در ساعاتِ اداری(!) میتوانید با مراجعه به
سایتِ PortSwigger، نگارشِ رایگانِ Burp را دانلود کنید.
لازمبهذکر است که نصبداشتنِ JRE، که به دو صورتِ [
32bit,
64bit] عرضه شده است، برای اجرای Burp موردِ نیاز خواهد بود.
یک توضیح در مورد JRE
یک توضیح در مورد توضیح
احتمالاً چون پستهای اول است و بدنم هنوز داغ است خیلی توضیح میدهم، لازم است اعلام کنم که در آینده شاید اینقدر توضیح ندهم، پس اگر میبینید اینجا اینقدر موشکافبازی در آوردهام، بدان معنا نیست که وظیفهدارم در آینده هم همینسیستمی جلو بروم. [پرتابِ گچ] حواست هست چی میگم یا داری با بغلدستیت حرف میزنی؟
چرا JRE لازم است؟
چون BurpSuite را با زبانِ جاوا نوشتهاند و خروجیای که گرفتهاند به صورتِ jar. است، در نتیجه برای اجرای این برنامه نیاز به Java Runtime Environment دارید که عبارتاست از ابزارِ اجرای برنامههایی که با استفاده از جاوا ساختهشدهاند. (این ابزار روی هر سیستمعاملی نصب میشود، در نتیجه میتوان به حقیقتِ «JAVA: Write once, run anywhere» پی برد)
شروع با BurpSuite
با اجرای BurpSuite، شما با پنجرهای مشابهِ زیر مواجه میشوید:
همانطور که احتمالاً میدانید، بهترین راهِ شروع با یک نرمافزار، ور رفتنِ هوشمندانه با ابزارهای آن است؛ من در ادامه چند مبحثِ ریز در موردِ Burp میگویم و باقیِ کار را به عهدهی خودتان میگذارم.
Burp به صورتِ پیشفرض یک Proxy را روی پورتِ 8080ــِ سیستمِ شما اجرا میکند(در نتیجه قبل از اجرا مطمئن شوید این پورت توسطِ برنامهای دیگر در حالِ استفاده نباشد)، زمانی که شما پراکسیِ را روی این پورت از سیستم ست میکنید، درخواستها از برنامهی Burp میگذرند و در نتیجه قابلِ مشاهده و ویرایش خواهند بود.
ست کردن Proxy
برای ست کردنِ پراکسی چندین راه موجود است؛ استفاده از FoxyProxy(که خودم اینکار را میکنم و به شدت راضیام، توصیه میکنم شما هم استفاده کنید- جایزه هم داره؟- نه، من به خاطرِ کیفیتش استفاده میکنم!)، و یا استفاده از روشِ کلی.
روش کلی برای ست کردن پراکسی در ویندوز
من این روش را صرفاً برای ویندوز شرح میدهم، زیرا احتمالاً کسی که از لینوکس استفاده میکند بهاندازهای وارد میباشد که بداند از کجا پراکسی ست میکنند؛ و یا حداقل میداند چطور FoxyProxy را روی مرورگرِ دلخواهش راهاندازی کند.
در ویندوز برای ست کردنِ یک پراکسی به این ترتیب عمل کنید:
- ورود به Control Panel
- ورود به بخشِ Internet Options (اگر این گزینه را نمیبینید مقدارِ View By را برابرِ Small Icons (یا Large Icons) قرار دهید)
- ورود به زبانهی Connections و سپس کلیک روی Lan Settings
- زدنِ تیکی که مقدارش بسیار بلند است(!) و پرکردنِ مقادیر به شکلِ زیر:
که نکتهی قابلِ ذکر آنست که 127.0.0.1 یک مقدارِ قراردادی برای اشاره به «همین کامپیوتر» است؛ یعنی هر جا دیدید 127.0.0.1 یا localhost نوشته، معنیش آنست که این آدرس به همان کامپیوتر اشاره میکند.
شاید این نقاشی این مفهوم را بهتر منتقل کند:
با انجامِ تنظیماتِ فوق و ذخیرهی آن، از این پس درخواستهای سیستمِ شما از طریقِ پراکسیای که برنامهی BurpSuite اجرا کرده است به اینترنت میروند و در نتیجه قابلیتِ شنودشدن(توسطِ Burp) خواهند داشت.
نکته: هر زمان برای غیرفعال کردنِ پراکسی روی سیستم، کافیست مراحلِ بالا را تکرار کنید و بهجایِ فعالسازیِ «آن تیک با متنِ بلند»، آن را غیرفعال کنید.
تست پراکسیسرور
برای اینکه ببینیم آیا این پراکسی که ست کردهایم، درست کار میکند یا خیر، مرورگرِ خود را باز میکنیم و یک آدرس(که https نباشد) را در آن وارد میکنیم تا وضعیت را بررسی کنیم. (من از bing.com استفاده کردم)
اگر وضعیتِ کلیدِ Intercept، به صورتِ
باشد، بدان معنیاست که درخواستها پیش از ارسال به وب مانندِ تصویرِ بالا نگه داشته میشوند؛ در نتیجه میتوان محتوای آنها را قبل از رفتن به سرورِ هدف، مشاهده کرد و یا تغییر داد.
تصویرِ بالا حاویِ اطلاعاتی است که مرورگرِ من هنگامِ درخواستدادن برای صفحهی اولِ Bing.com، برای سرور ارسال میکند.
در پستِ بعدی به بررسیِ محتوای این درخواست و بررسیِ کلیِ درخواستها میپردازیم.
اهمیتِ شناختِ درخواستهایی که به سرور میرود، آنست که میتوانیم درخواستهایی که برای دریافتِ اطلاعاتِ مهم در «دیوار» ارسال میشوند را شناسایی کنیم و آنها در برنامهی خود مشابهسازی کنیم؛ در نتیجه میتوانیم بدونِ استفاده از یک مرورگر و با استفاده از درخواستهای خام و توسطِ یک بات، اطلاعات را از سایت استعلام کنیم.