PDA

View Full Version : سوال: جعل صفحه چگونه است؟



water_lily_2012
چهارشنبه 09 مرداد 1392, 12:59 عصر
سلام

تو یه متنی نوشته شده بود که امکان داره کاربر صفحه را جعل کنه و یه checkbox به اون صفحه اضافه کنه و با این کار وضعیت خودش را به admin تغییر بده.
خلاصه می خواست جلوی یه نوع حمله را بگیره.

برای من سوال اینه که صفحه را من طراحی کرده ام و Checkbox نداره و موقع درخواست من این صفحه را ارسال می کنم برای مرورگر.
حالا چطور میشه این صفحه را جعل کرد؟؟

می دونم شاید سوالم پیچیده و نامفهومه باشه چون نمی دونم دقیقا چطور بپرسم.

تشکر

mehran6764
چهارشنبه 09 مرداد 1392, 13:12 عصر
مطمئن نیستم ها ، شاید منظورش این بوده که کاربر کدهای Html صفحه شما رو ویراش کنه و چک باکس درست کنه
ولی اون فسمت که چه جوری ادمین میشه رو نمی دونم !

hakim22
چهارشنبه 09 مرداد 1392, 17:25 عصر
یک روش اینه که کدهای جاوا اسکریپت رو به صفحه تزریق می کنند که وقتی اجرا میشه محتویات post یا get رو تغییر میده و اونها را بعد از تایید توسط کاربر و قبل از دریافت توسط سرور تغییر میدهند.

Forgery و XSS از نوع حمله های خطرناک که باید براشون همیشه برنامه داشته باشید.

water_lily_2012
چهارشنبه 09 مرداد 1392, 21:23 عصر
سلام

اینکه کدهای html را بتونه تغییر دهد یا کدجاوا اسکریپت اضافه کنه چگونه است؟
یعنی صفحه را ذخیره کند بعد اطلاعات را عوض کنه و ان صفحه را اجرا کنه؟؟؟ یعنی با این کار اون صفحه هنوز در سرور معتبره؟؟؟

شرمنده، دوستان کاملتر راهنمایی کنند گیج شدم و واقعا دوست دارم این موضوع را حداقل یه کم متوجه بشم.

تشکر

ali_autumnal
پنج شنبه 10 مرداد 1392, 08:35 صبح
یک روش مقابله با این نوع حملات استفاده از ViewModel هست
در واقع نباید مدل اصلی که db توسط اون مدل ایجاد شده را به View ارسال کنیم.

water_lily_2012
پنج شنبه 10 مرداد 1392, 21:18 عصر
من دنبال این هستم که بدونم چطوری جعل صفحه انجام میشه. دنبال راه های جلوگیری از جعل نیستم.

Saeed_m_Farid
چهارشنبه 16 مرداد 1392, 13:38 عصر
یعنی صفحه را ذخیره کند بعد اطلاعات را عوض کنه و ان صفحه را اجرا کنه؟؟؟ یعنی با این کار اون صفحه هنوز در سرور معتبره؟؟؟
نه، صفحه رو که نمیشه اجرا کرد! شما باید یکمی بیشتر با پروتکل HTTP و HTTPS آشنا بشید تا راحت تر بشه توضیح داد

من دنبال این هستم که بدونم چطوری جعل صفحه انجام میشه. دنبال راه های جلوگیری از جعل نیستم.
اگه میخواین خودتون همچین کاری بکنید (به نیت خیر!) که تو دو سه تا پاراگراف و پست نمیشه توضیح داد، باید خیلی بیشتر با Request method (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html) های Http و نحوۀ کار Session، کوکی و ... آشنا باشید تا بتونید یه همچین حمله ای صورت بدین.
این کارها پشت صحنه انجام میشه و در ساده ترین حالت روش کار یه پروسه (مثلاً احراز هویت یا تغییر کلمه عبور و تعریف کاربر و ...) بررسی میشه و مطابق نتایج بدست اومده، یه سری درخواستهای دستکاری شده GET و POST به سایت شما میفرستن (با تل نت کردن، سوکت زدن یا روشهای دیگه فرستادن رو پورت)، با اینکار (اگه روشهای مقابله لحاظ نشده باشه) سایت شما فکر میکنه اینا از یک صفحه وب اومدن و پردازش های رسیده رو انجام میده و مثلآً طرف -***ر- می بینه (با فیدلر و فایرباگ و ...) شما یه سری اعمال خاص (مثلاً شرط های ساده) رو برای بررسی Admin بودن کاربر انجام میدین و با تزریق کدهای معمولی Http یا جاوااسکریپتی اون شروط رو برآورده میکنه و میشه Admin و مابقی قضایا ...
الان هم به بیشتر سایت های داخلی خیلی راحت میشه "سی سرف" (https://www.isecpartners.com/media/11961/CSRF_Paper.pdf) زد (یادتون باشه که اگه همچین کاری کردین، حتماً -با هویت نامعلوم!- بهشون بگین تا برن یه فکری به حال سایت هاشون بکنن!) و دستتون رو محکم کنید! برای MVC هم یه HtmlHelper ای هست (AntiForgeryToken (http://msdn.microsoft.com/en-us/library/dd470175%28v=vs.108%29.aspx)) که جلوی XSS و CSRF های معمول MVC رو میگیره و اگه دستورات SQL استفاده نکردین (که تو MVC نباید هم استفاده کنید) دیگه نباید نگران SQL Injection (http://www.veracode.com/security/sql-injection) هم باشید و ...
بحث دراز است (http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/) و فرصت کوتاه :دی
خیلی ساده اش:
http://www.youtube.com/watch?v=2Y7IywV1YBQ
یا
http://www.youtube.com/watch?v=foTEOsJuR4c

water_lily_2012
پنج شنبه 17 مرداد 1392, 00:06 صبح
سلام
خوشحالم که یکی کاملتر جواب داد.

اینکه فرمودید در mvc نباید از دستورات SQL استفاده بشه منظورتون چی بود. پس باید از چی استفاده بشه؟
تشکر

Saeed_m_Farid
پنج شنبه 17 مرداد 1392, 10:14 صبح
LINQ to SQL
(http://msdn.microsoft.com/en-us/library/bb386976.aspx)

hakim22
پنج شنبه 17 مرداد 1392, 10:17 صبح
پیشنهاد میکنم این مجموعه را دانلود و مشاهده کنید :

Hack - proofing your website

دانلود از تورنت (magnet:?xt=urn:btih:B5HR7H635Q563H5PV7T6MU54VNB2H KC7&dn=%5Bpluralsight-training.net%5D%20Hack-proofing%20Your%20ASP.NET%20Web%20Applications&tr=http%3A%2F%2Fbt3.rutracker.org%2Fann%3Fuk%3D7Ay rjfEuno&tr=http%3A%2F%2Fretracker.local%2Fannounce&tr=http%3A%2F%2Fix3.rutracker.net%2Fann%3Fuk%3D7Ay rjfEuno&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337&xl=691591010)

هم با روشهای معمول ه-ک و هم با روشهای مقابله با آنها در محیط ASP آشنا میشوید. برای من که خیلی مفید بود

hakim22
پنج شنبه 17 مرداد 1392, 10:29 صبح
LINQ to SQL
(http://msdn.microsoft.com/en-us/library/bb386976.aspx)

در هر زمانی که شما از Query های SQL برای گزارش گیری از بانک استفاده می کنید میشود آنها را به راحتی دست کاری کرد. مثلا شما دنبال کاربر خاصی میگیردید

"select * from users where user_name=" + UserNameTextBox.Text ;


مهاجم میتونه یجای متن داخل textbox یک چنین دستوری بنویسه :

""; delete * from users;


که در کنار کد بالا چنین میشه :


"select * from users where user_name=""; delete * from users;"


استفاده از ORM ها مثل Entity Framework و nH میتونه چنین کاری رو خیلی سخت بکنه . اما باید همیشه بجای IQueryable از IEnumerable استفاده کنید. و ابلبته به همین سادگی ها هم نیست.