تست نفوذ به سرور اپ های اندرویدی

سلام این یه آموزش مبتدیانست برا حداقل امنیت توی برنامه هامون.قصد داریم تست نفوذ ساده ای روی یه اپ اندرویدی برای بدست آوردن اطلاعات کاربراش از طریق باگی در کد نویسی سمت سرور انجام بدیم. توی این آموزش ما با تزریق تگای مخرب میایم و این کار رو انجام میدیم (sql injection)(تمام مطالبی که اینجا گفته میشه و شاید هم کاملتر در ویدئوی که توی یوتیوب و آپارات قرار دادم هستش شما میتونید در انتهای این آموزش لینک ویدئوها رو ببینید)خب کارایی که باید انجام بدیم : شنود شبکه ، بدست آوردن لینک و کلیدهای ارسالنوشتن یک اپ ساده جهت دریافت اطلاعات کاربری از لینک لاگین سایت یا اپیلیکیشن تزریق تگ های مخرب در درخواست لاگین ذخیره اطلاعات بدست آمده قدم اول : شنود شبکهبرای اینکار ابزارای مختلفی توی سیستم عاملای مختلف وجود داره ما قصدمون معرفی ابزارهاست و نه نحوه کار باهاشون (البته توی کلیپی که تو آخر آموزش هست نحوه کار یدونشون وجود داره)توی ویندوز دوستان میتونید از ابزارهایی مثل wiresharke و networkminer استفاده کنیداگه بخواین با موبایلای اندرویدی این کار رو انجام بدین میتونید از packetcapture , portdroid استفاده کنید ابزارای خوبینتوی این مرحله ما یکی از ابزارهای شنود شبکه رو ران میکنیم و به بعد از طریق اپلیکیشن به سرور لاگین میکنیم همونجور که میبینید اطلاعاتی و روش ارسال و اطلاعات دریافتی رو به راحتی بدست آوردیم. NetworkMinerبسته های دریافتی از سرورجیسون بدست آمده که بصورت نا امن ارسال شده بودبعد از دریافت اطلاعات و روش ارسال و دریافتشون میمونه بحث تحلیل اطلاعات که این برای هر اپلیکیشنی که این باگ رو داشته باشه متفاوته ، همونجور که میبینید دوستمون توی برنامش برا ارسال اطلاعات با روش پست دوتا کلید phone و ramz فرستاده به سرور و از سرور parent_id که اسم یکی از ستونای دیتابسشه رو برگردونده (همچی رو همین میچرخه) http://hostname/Get_User.php?ramz=123456789&phone=09355502840قدم دوم : نوشتن یه اپ ساده برا شبیه سازی لاگینخب من اومدم با نوشتن یه اپلیکیشن ساده به زبون جاوا فرم لاگین رو شبیه سازی کردم ; شما میتونید از زبونای دیگه یا ابزارای دیگه مثل postman استفاده کنید برا شخصی سازی من ابزار رو خودم نوشتم * توضیح خاصی نیاز بود کامنت بزارین توضیح میدم :) *کد های لاگینقدم سوم : تزریق تگ مخرب زمان ارسال اطلاعات به سرورخب قسمت شیرین کار رسیدیم قراره یه تیکه کد SQL رو همراه با درخواستمون بفرستیم به سمت سرور . توی قدم اول دیدیم که چجوری لینک و کلیدا ارسال میشد پس قراره ما هم به همون صورت بفرستیم urlParametrs= &quot ramz=123456789 or parent_id=&quot+مقدار پیمایش توی ستون+&quot & phone=09355502840 or parent_id=&quot+مقدار پیمایش توی ستون+&quot ;خب چجوری این کد عمل میکنه زمانی که دستور رفت به سرور و توی کوئری اجراشد تو حالت معمولی phone و ramz بهش پاس داده میشن به این صورت (متغیرا فرضیه تو این تیکه)$phone=$_POST['phone'];$ramz=$_POST['ramz'];select * from users where phone=$phone and password=$ramz // این کدیه که تو سرور اجرا میشه ولی با کاری که ما کردیم در واقعیت داریم شرط and رو با کمک or میشکونیم select * from users where phone=09355502840or parent_id=1 and password=123456789 or parent_id=1قدم چهارم : ذخیره اطلاعاتخب در آخر هم نوبت میرسه به ذخیره اطلاعاتی که از سرور بدست میاریم . بستگی به نیازمون نحوه ذخیره سازی و استفاده از اطلاعات به عهده خودمونهموارد مهم و ساده در بالا بردن امنیت سایت ها و اپلیکیشن های از بیس طراحی شده :تا اینجا ما اومدیم و اطلاعات کاربرای یه اپ رو کشیدیم بیرون ولی خب چه کنیم که برنامه هامون دچار همچین باگ های ساده ای نشناول بگم همچین باگهایی بیشتر توی بچه هایی که تازه شروع کردن دیده میشه که اونم از سر تجربه کمه و دوستانی که از بعضی فریمورکا برا سرور نویسی( لاراول و کیک و ....) استفاده میکنن رعایت مواردی که گفتیم توشون اجباریه و خیالمون از حداقل امنیت راحت میشهخب ما مد نظر میگیریم که از صفر خودمون قراره کد بزنیم مثل اپلیکیشن دوستمون :) (هی میگم دوستمون که اگه موردی پیش اومد بهم رحم کنه :) خب موارد اینان : فیلترگذاری تگ های html و sql و prepare در کلاینت و سرور $phone=mysqli_real_escape_string($con,$get);$phone=htmlspecialchars($phone);////////////////////////////////// $query=$con->prepare(&quotselect ...... from user where phone like ?&quot);$query->bind_param(&quots&quot,$phone);$query->execute();$result=$query->get_result(); ساخت کلید دو طرفه جهت اهراز هویت جهت ساخت توکن ارتباطی$token="G5@85#fd$FS2S*!RGV%^DFC2HKL#$T%RDFVQZ&^34VDF@#"; ///نمونه توکن استفاده از الگریتم های هش سازی اطلاعات و استفاده از ساختار متنی جهت ارسال اطلاعات مثل json , xml و..... که بهتره یه سرچی در موردش بزنید استفاده از پروتکول های امن شبکه مثل tls و ssl (همون https خودمون) البته از اندروید 9 به بعد استفاده از ssl اجباری شده و تازه هر ssl هم امن نیست و قابل شنود بهتره در مورد پروتکل های امنیت بین راهی هم یکم مطالعه بکنیددر آخر هم باید بگم این موارد تضمینی بر امنیت صد در صدی برنامه شما نیست و یک سری نکات عمومی محسوب میشه ;)امیدوارم تونسته باشم مطالب رو خلاصه و مفید شرح داده باشم اگه موردی بود برام کامنت کنید یا تو تلگرام با من در ارتباط باشید .راستی آموزش ویدیوئی همین مطلب رو هم توی یوتیوب و آپارات قرار دادم ممنون میشم تماشا و لایک کنید .پیروز باشید.... https://www.youtube.com/watch?v=5CFFGmOeOU4 https://www.aparat.com/v/8IK1f سعود پرکوک0098iran