PDA

View Full Version : سوال: چطور می تونم یه باگ امنیتی توس سایت قرار بدم ؟



idocsidocs
یک شنبه 21 اسفند 1390, 13:06 عصر
لطفا بگید که چطور می تونم یه باگ امنیتی توی سایتهایی که طراحی می کنم قرار بدم؟

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

مسئله دیگه اینه که چه باگی توی سایت قرار بدم که بتونه سایت رو از کار بندازه؟

MostafaEs3
یک شنبه 21 اسفند 1390, 13:37 عصر
اتفاقا منم بهش نیاز دارم !! من بیشتر نظرم روی متصل شدن به سرور های دیگه و موجود بودن یک فایل هست که اگه روی چندتا سرور چک شد و نبود اسکریپت از کار بیفته ...
البته در مورد باگ من اطلاعی ندارم راستش

idocsidocs
یک شنبه 21 اسفند 1390, 13:55 عصر
اتفاقا منم بهش نیاز دارم !! من بیشتر نظرم روی متصل شدن به سرور های دیگه و موجود بودن یک فایل هست که اگه روی چندتا سرور چک شد و نبود اسکریپت از کار بیفته ... البته کدها نباید به قدری باشن که توجه جلب کنن. می تونید کدهای آپلود یه فایل php رو بنویسید و بعد از آپلود فایل، اسکریپت آپلود شده بتونه کارهای مورد نیازتون رو انجام بده.

MostafaEs3
یک شنبه 21 اسفند 1390, 14:06 عصر
فکر بدی نیست ... فقط یک تابع کوچولو مثل file_get_contents اونم بصورت کد شده خیلی چیز جالبی میشه



file_get_contents('http://example.com')?echo'':exit;

idocsidocs
یک شنبه 21 اسفند 1390, 15:09 عصر
فکر بدی نیست ... فقط یک تابع کوچولو مثل file_get_contents اونم بصورت کد شده خیلی چیز جالبی میشه
این تابع می تونه کد یه اسکریپت رو بگیره و روی سرور اجرا کنه؟

MostafaEs3
یک شنبه 21 اسفند 1390, 15:24 عصر
آره میتونه منتها باید پسوند اون فایل رو بذاری html و بعد روی سرور فکر کنم eval بزنی کار کنه :لبخند:

alonemm
یک شنبه 21 اسفند 1390, 17:05 عصر
باسلام:
در این مورد بگم که در یک شرکت دیدم که یک تابع در وب سایت هایی که طراحی میکردن میزاشتن که کارش این بود که به پایگاه داده سایت خود شرکت وصل میشد و در صورت وجود داشتن نام هاست فعلی که روش نصب شده و چند پارامتر دیگر جواب رو به صورت True و یا False بر میگردوند.

میتونید از این روش ایده بگیرید.

idocsidocs
یک شنبه 21 اسفند 1390, 17:11 عصر
در این مورد بگم که در یک شرکت دیدم که یک تابع در وب سایت هایی که طراحی میکردن میزاشتن که کارش این بود که به پایگاه داده سایت خود شرکت وصل میشد و در صورت وجود داشتن نام هاست فعلی که روش نصب شده و چند پارامتر دیگر جواب رو به صورت True و یا False بر میگردوند.
دنبال یه روش هستم که کدهای زیادی بکار نبره. این روش ظاهرا باید توی همه اسکریپتها اجرا بشه و به سایت شرکت هم وابسته هست.

Net So
یک شنبه 21 اسفند 1390, 22:17 عصر
:D
این ایده رو من تو سیستمم پیاده کردم :D
اسمشم گذاشتم Fatal Execution :دی
چندتا راه داری .میخوای سیستم رو از کار بندازی دیگ؟ درسته ؟ خوب اول اینکه من معماری سیستمت رو نمیدونم. ولی چیزی که عمومیت داره اینه که فرضا اگر به فایل X ت پارامتر UserName و Password و Command ارسال شد ، یه حرکتی بکنه . ( Command تو رو اجرا کنه ) فرضا یه راه حل اینکه بیاد فایل Config تو رو Unlink کنه. فقط یادت باشه User و Pass کدشده و تو فایلت باشه نه Db .
من چون برای سیستمم یه زبان Micro نویسی نوشتم ، راحت Command های خودم رو مینویسم. و از طرفی با سیستم Sms ام integrate ش کردم. فرضا با گوشی به شماره خودم این sms رو میدم :

UserName:Passwrod|Command:DeleteFile->/FilePath/FileName

UserName:Passwrod|Command:EmptyDatabase->DataBaseName

UserName:Passwrod|Command:DeActiveCustomer->Where(Name=Serkat E X)*DeleteFile->/FilePath/FileName

UserName:Passwrod|Command:InstallSystem->INF(Name=Serkat E X | Tell:22002200 | Plan=A | Theme=MyCustomeTheme)*SendSmsToInstalledCustomer

کار خیلی سنگینی بود ولی تعریف از خود نباشه ایده خودم قشنگ بود. Syntax هام رو تعریف کردم ، Rule هامو نوشتم و ... الان هم لذت میبرم :دی
بالا بعضی از Syntax هامو مبینید الگوی اولیه که احراز هویت هست
* جدا کننده ی کامند ها هست :
کامند 1 * کامند 2 * کامند 3 * .... * کامند N
( -> ) نشون دهنده ی متود / ورودی های اون کامند هست
() هم که ورودی ها هستن
ورودی های با | از هم جدا میشن
و ...

من Sms میدم
سرور Sms ام میاد Command منو Parse میکنه و تبدیل میکنه به زبان Micro سیستمم
به سیستم م ارسال میکنه
تو سیستم عملیات مورد نظر صورت میگیره
نتیجه عملیات به همون Port و Ip ای که کامند ها ارسال شدن پاس داده میشه
سرور جواب رو برای من با sms ارسال میکنه

( البته کل این Command ها از سرور Sms به سرور اصلی با Public/Priv8 key کد شده هستن.
نظرتون رو دربارش بگید :D

Net So
دوشنبه 22 اسفند 1390, 20:58 عصر
کسی نظری نداره ؟ oops !

idocsidocs
چهارشنبه 24 اسفند 1390, 17:13 عصر
من چون برای سیستمم یه زبان Micro نویسی نوشتممی شه بگید سیستم میکرو نویسی چیه؟

Net So
چهارشنبه 24 اسفند 1390, 18:00 عصر
ساده بگم : شما برنامه تون رو با زبان php نوشتنید. بعد فرضا میخواید یه قابلیتی اضافه کنید که شما Rule بنویسید و php اونها رو اجرا کنه.
فرضا تو سیستم میخواید بخشی اضافه کنید که شما یک سری قواعد تعیین کنید و کاربران اون قواعد رو اجرا کنند و نتیجه رو ببینن.
برای مثال :
کسی که در بخش اخبار ، پست شماره n به مدت 2 ساعت حضور داشته 2 امتیاز بگیره
کسی که 100 عدد کامنت در پست شماره n بده ، 4 امتیاز بگیره
کسی که 10 تا پیغام خصوصی به دوستانش بده ، 10 امتیاز بگیره و
...
خوب حالا اگر تعداد این قوانین ( rule ها ) کم باشه ، میصرفه که با خود php نوشته بشه. ولی وقتی فرضا 1000 تا قانون هست خوب نوشتنش با php و if conditional و ... به صرفه نیست ( صرفه زمانی ) .
من اومدم یک زبان واسط با Syntax ساده ایجاد کردم که rule ها رو که به زبان خودم نوشتم ، میخونه و تبدیل میکنه به کد php . یه جور زبان مایکرو.
یه مثال میزنم مثلا مورد اول به زبان من ( با استفاده از API ها سیستمم میشه ) :

کسی که در بخش اخبار ، پست شماره 5 به مدت 2 ساعت حضور داشته 2 امتیاز بگیرهMember.Exist(News(ID=5)).Presence(2).Poi nt(+2) :D

همین !

حالا توضیحات :

Member : پارامتر اول مشخص میکنه میخوام با کدوم Section کار کنم. Member میگه " من دستوراتم مربوط به بخش Member هست "
Exist : پارامتر دوم میگه من با چه Operator ای از اون بخشم کار دارم . Exist میگه " دستوراتم مربوط به زمان حضور در بخش خاص هست که این بخش رو ارگومانش که News هست مشخص میکنه
News : آرگومان اون دستور Exist هست . میگه این محاسبه مدت زمان حضور مربوط به بخش News هست و همچنین خود متود News هم ورودی میگیره که اون ورودی نشون دهنده شرط ماست ( تو اینجا شرط اینه که ID پست ما 5 باشه )
Presence : پارامتر بعدی میگه حالا که فهمیدی Exist هست ( فرد تو اون بخش هست ) حالا چه خصیصه ایش رو میخوای ؟ مدت زمان بودنش ، یا ... که اینجا ما مدت زمان بودنش رو میخوایم که همون Presence هست . و آرگومانی هم که میگیره شرطش هست. ما اینجا با آرگومان مون گفتیم که حتما مدت زمان بودن 2 ساعت باشه
Point : این پارامتر میگه امتیاز اضافه میکنه که آرگومانش هم داخلش هست و امتیازش هست.

تا ایتجا ما گفتیم که " از بین Member ها ؛ کسانی که تو بخش News( اخبار ) و پست شماره 5 به مدت 2 ساعت هستن 2 امتیاز بهشون اضافه کن"

alismith
چهارشنبه 24 اسفند 1390, 18:18 عصر
من اومدم یک زبون واسط با Syntax ساده ایجاد کرده که rule ها رو که به زبون خودم نوشتم میخونه و تبدیل میکنه به کد php . یه جور زبان مایکرو.

سلام دوست عزیز

لطف می کنی یکم بیشتر در این رابطه و طریقه نوشتن API توضیح بدی؟

کلا چطوری پیاده سازی و برنامه نویسی شده؟

اگه بخایم بنویسیم باید چطوری پیاده سازیش کنیم؟


با تشکر

javadt
چهارشنبه 24 اسفند 1390, 22:49 عصر
روش جالبی هست
لطفا پیاده سازیش رو بیشتر توضیح بدید
تشکر

idocsidocs
چهارشنبه 24 اسفند 1390, 23:52 عصر
Member.Exist(News(ID=5)).Presence(2).Point(+2)
منم دیگه از نوشتن شرطهای زیاد و بی مورد خسته شدم و توی این فکر بودم که چنین سیستمی برای خودم درست کنم ولی وقت نداشتم که در این مورد تحقیق کنم.
البته برای ساختن فرمها و ایجاد کوئری ها می خوام چنین چیزی بکار ببرم که دیگه وقتم برای نوشتن شرطها و دستورهای تکراری تلف نشه.

اگه یه پست جداگانه ایجاد کردید و این روش رو آموزش دادید لینک تاپک رو توی این تاپک هم قرار بدید.