PDA

View Full Version : هک شدن زمان استفاده از TextBox



RoostaYeBekr
سه شنبه 28 آبان 1387, 21:12 عصر
با سلام
من خیلی شنیدم که اطلاعات یک TextBox را بدون هیچ فیلتر امنیتی ، به دیتابیس بفرستیم ، احتمال هک شدن دیتابیس زیاد است.

من یک برنامه ی آماده برایتان فرستاده ام . یک کواری برای هک دیتابیسش ، در داخل TextBox وارد کنید . بعد اگر ممکنه ، راههای جلوگیری از این هک شدن را هم ذکر کنید. ( مثلا یکی از راهها ، می تواند استفاده از DropDownList باشد . ولی همیشه گزینه ها ثابت نیست که این کار را بکنیم )

دیتابیس را از پوشه ی APP_Data بردارید.

این برنامه با C# نوشته شده . هر کس خواست آن را به vb تبدیل کند ، به سایت زیر برود:

http://www.developerfusion.com/tools/convert/vb-to-csharp/
با تشکر.

milade
سه شنبه 28 آبان 1387, 21:54 عصر
عزیز دل من برنامتون رو ندیدم اما اون هک از طریق تکست باکس یه چیز مال زمان بوق بود که حالا با پارامترها حل شده
کاربرا دیگه می تونن سرچ کنن!
موفق باشید

asm.coder
سه شنبه 28 آبان 1387, 22:11 عصر
بهترین راه اینه که نزارید از query های زیر استفاده بشه :
' , " -- (
این قضیه بشتر مربوط به دیبتابیس های MySQL , MsSQL , Oracle هست .

milade
سه شنبه 28 آبان 1387, 22:28 عصر
دیدید باز به حرف بنده گوش نکردید؟
وقتی پارامتر باشه چه -- و چه ' و هر چی دیگه باشه مشکل حله
نمونه:

select * from tbl whrer id=@idx
در اینجا @idx یه پارامتره که پاس شده و اگه ما یه sqlcommand با نام cmd داشته باشیم این طور میشه این پارامتر رو مقدار داد:

cmd.add("@idx","value")
خوب عزیز دل حالا هکر هر غلطی می خواد بکنه دیگه نمی تونه!
_____________________________
اقای roostayebekr کدتون رو دیدم یه خورده بستید ولی قابل هک شدنه(حالش رو ندارم دیگه نمونه بدم)
اقای asm.coder ما این رو بستیم باقی رو چی؟یونیکد رو چی؟
فقط پارامتر
موفق باشید

ali_sorouri2005
سه شنبه 28 آبان 1387, 23:01 عصر
ميلاد راست ميگه ديگه!
خوب اين سوال خيلي تكراري هستش.
سرچ بايد ميكردي.
سعي كن كوئري رو توي خود sql و به صورت stored procedure ايجاد كني
و بعد از طريق كدت پارامتر بفرستي و sp رو اجرا كني
اينجوري هك نميشي.
تازه اگر او كاراكترها رو هم فيلتر كني و از پارامتر استفاده نكني بازم قابل هك شدنه

milade
سه شنبه 28 آبان 1387, 23:02 عصر
فکر کنم اگر یک کم مودب تر صحبت کنید ، بهتر باشه.
قصد توهین نداشتم عزیز
منظورم این بود که این هک کردن از این طریق مال بوق بود نه کد شما
در کل اگه بازم برطرف نشد شما ببخشید

خوب آره راست می گید . آخه همه مثل من یا امثال من نیستند که اکثر مواقع هر وقت کسی سوال داشت ، ( حتی اگر اون سوال تکراری بود ) یک برنامه ی کامل مختص اون سوال بنویسند و برای طرف بفرستند. سعی می کنم دیگه هم این کار و نکنم .
من که می نویسم!
در کل شما هم ادامه بده
واقعیت خیلی دمت گرم که برا هر کس یه کد میدی.
کمتر کسی پیدا میشه که این قدر یه رنگ باشه . اگه هم من بی احترامی کردم ببخشید
موفق باشید

hassanf
چهارشنبه 29 آبان 1387, 04:15 صبح
سلام
بحثی که دوستان در پاسخ مطرح کردند , فقط مربوط به Sql enjection می باشد در حالی که راه های دیگری هم برای هک وجود دارد از جمله :

1.Cross site scripting : در این روش هکر با وارد کردن Script در ورودی ها سعی در اخلال در سایت شما می کند . مثال :


<script>alert("Message")</script>


Asp.Net سیستمی برای شناسایی Script ها دارد که خیلی کارا نیست.
راه حل : ورودی ها را با Server.HtmlEncode به کد تبدیل کنید.

2. buffer overflow :البته این روش مختص هکر های حرفه ای است و کار هر کسی نیست!

و .......

در ضمن توجه داشته باشید که امروزه بیشتر سایت ها از طریق Server هک می شوند.

milade
چهارشنبه 29 آبان 1387, 07:07 صبح
البته اقا حسن یاداوری می کنم که این باگ برای .net 1.1 بود که برطرف شده و الان دیگه توی نسخ بالاتر مشکلی نیست!
موفق باشید

hassanf
چهارشنبه 29 آبان 1387, 07:11 صبح
اگه از Editor استفاده کنی چی ؟

اون موقع باید با جاوااسکریپت دستی Validate کنی

milade
چهارشنبه 29 آبان 1387, 07:24 صبح
درسته!
فراموش کرده بودم
ولی الان اکثرا اینو حل کردن
موفق باشید

RoostaYeBekr
چهارشنبه 29 آبان 1387, 18:57 عصر
با سلام
از توضیحاتتون ممنون.

گفته بودید :


<script> alert(‘Hello’) </script>

ولی اولا قبل از اینکه این اسکریپت به دیتابیس فرستاده شود ، خود ویژوال استادیو نسخه ی 2005 نمی گذارد .

ثانیا من بیشتر می خواستم که شما کواری وارد کنید که به دیتابیس صدمه بزند. مثلا فرض کنید : اطلاعات جدولی را پاک کند و یا تغییر دهد.

milade
چهارشنبه 29 آبان 1387, 19:15 عصر
چی بگم من؟

ولی اولا قبل از اینکه این اسکریپت به دیتابیس فرستاده شود ، خود ویژوال استادیو نسخه ی 2005 نمی گذارد .

خاصیت اعتبار سنجی صفحه رو false کن که این امر باعث حل اما اسیب رساندن به امنیت میشه

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

hassanf
چهارشنبه 29 آبان 1387, 19:18 عصر
با سلام
از توضیحاتتون ممنون.

گفته بودید :


<script> alert(‘Hello’) </script>

ولی اولا قبل از اینکه این اسکریپت به دیتابیس فرستاده شود ، خود ویژوال استادیو نسخه ی 2005 نمی گذارد .

ثانیا من بیشتر می خواستم که شما کواری وارد کنید که به دیتابیس صدمه بزند. مثلا فرض کنید : اطلاعات جدولی را پاک کند و یا تغییر دهد.

و در ادامه توضیح دادم:

1. با کمی تغییرات در این کد میشه .

2. یا وقتی شما داری از Editor استفاده می کنی مجبوری ValidateRequest رو False کنی!

milade
چهارشنبه 29 آبان 1387, 19:21 عصر
و در ادامه:
می تونی کدها رو که اجازه نمیده بفرستی رو یونیکد کنی

hassanf
چهارشنبه 29 آبان 1387, 19:29 عصر
مثلا کدهایی تو این ای این مایه ها که هکر ها خیلی از این چیزا بلدن :



<%00script> alert('message'); </script>

RoostaYeBekr
چهارشنبه 29 آبان 1387, 20:41 عصر
با سلام و تشکر دوباره از توضیحاتی که دادید :
:لبخندساده:
فکر کنم منظورم رو خیلی درست نگفتم ( چون به نظرم میاد که اشتباه برداشت کردید ) ::عصبانی++:



می تونی کدها رو که اجازه نمیده بفرستی رو یونیکد کنی

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

چیزی که مد نظرم بود و قبلا هم عرض کردم ، این بود :


ثانیا من بیشتر می خواستم که شما کواری وارد کنید که به دیتابیس صدمه بزند. مثلا فرض کنید : اطلاعات جدولی را پاک کند و یا تغییر دهد.


البته جوابی که milade (http://barnamenevis.org/forum/member.php?u=58861) به شکل زیر داد ،


پارامتری که دادم در تمام حالات صدق می کنه
(شما یه باگ از این پارامتر پیدا کن!)

هم خوب بود . منظورم این است که بالاخره ، تکلیف روشن کن بود.

در هر صورت اگر کس دیگری باز هم توانست دیتابیس این برنامه را هک کند ، ممنون می شوم.

حالا البته باز هم از توضیحاتتون ممنون.

m.hamidreza
جمعه 01 آذر 1387, 01:09 صبح
در هر صورت اگر کس دیگری باز هم توانست دیتابیس این برنامه را هک کند ، ممنون می شوم.



مواردی که باید اشاره میشد گفته شده + اینکه تاپیکی که جناب راد هم در اعلان قرار دادن میتونه به شما کمک کنه so دیگه نظری باقی نمیمونه!
موفق باشید.

علیرضا مداح
جمعه 01 آذر 1387, 18:25 عصر
سلام دوست عزیز،
2 مورد از مجموعه حملاتی که عمدتا" هنگام دریافت ورودی با آن ها مواجه خواهید شد ، حملات SQL Injection/Hexadecimal SQL Injection و همچنین (XSS(Cross-Site Scripting می باشد که باید بر روی آنها مطالعه کنید ،/